Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

Подписываем
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Предоплата всего
Подписываем
Федеральное государственное бюджетное образовательное учреждение высшего
профессионального образования
«Санкт-Петербургский государственный электротехнический
университет «ЛЭТИ» им. В.И.Ульянова (Ленина)»
Факультет компьютерных технологий и информатики
Кафедра вычислительной техники
Отчет
по лабораторной работе № 2
на тему «Односвязные списки»
по дисциплине «Программирование»
Выполнил:
студент группы № 2306 Титков Евгений
Проверила:
к.т.н., доцент Сискович Т.И.
Санкт-Петербург
2013 г.
Цель работы
Получение практических навыков в работе со структурами.
Задание
Написать программу для создания массива структур, ввода данных в поля структур, вывода и обработки.
Уточнение задания
Пользователь вводит информационные поля в массив структур. Условия для обработки
поиск элементов списка по значению одного из полей, вывод информационных полей структур
Описание структуры для формирования списка приведено в следующем пункте.
Описание структуры
Шаблон:
struct games
{
char name[30];//Название продукта
int year; //год выпуска
int rating; //рейтинг товара
};
Имя структур: x,y.
Контрольные примеры
Контрольные примеры обработки приведены в таблице 1 «Контрольные примеры обработки».
Таблица 1. Контрольные примеры обработки
До обработки |
После обработки |
|||||
№ п/п |
Название товара |
Год выпуска |
Рейтинг |
Название товара |
Год выпуска |
Рейтинг |
1 |
Crysis |
2013 |
8 |
Crysis |
2013 |
8 |
2 |
Kinect |
2012 |
4 |
Hather |
2010 |
7 |
3 |
Hather |
2010 |
7 |
Описание переменных главной функции
Описание переменных главной функции приведено в таблице 3.
Таблица 2. Описание переменных главной функции
Имя переменной |
Тип переменной |
Назначение |
x,y |
games |
Структурные переменные |
z |
int |
Переменная для выбора пункта меню |
f1,f2,f3,ch |
int |
вспомогательные переменные |
Краткое описание алгоритма
При разработке алгоритма предусмотрен контроль над выполнением пунктов меню.
1) Пользователь выбирает один из пунктов меню:
1 ввод данных;
2 вывод данных;
3 обработка списка и вывод данных;
4 - выход.
2) Если пользователь выбирает 1 пункт меню, выполняется ввод данных в структуру. Данные вводятся многократно по желанию пользователя. (Пользователь будет предупрежден о вводе некорректных данных)
3) Если пользователь выбирает 2 пункт меню, происходит вывод данных, затем, переход к пункту 1.
4) Если пользователь выбирает 3 пункт меню, выполняется обработка и вывод данных . Переход к пункту 1.
5) Если выбран 4 пункт меню, завершение программы.
6) Если не выбран ни одни из 1-4 пунктов, вывод сообщения «Ошибка, выберите пункт меню снова».
Блок схема алгоритма
Код программы на языке С/С++
#include "stdafx.h"
#include "stdio.h"
#include "string.h"
#include "conio.h"
#include "iostream"
struct games
{
char name[30];
int year;
int rating;
};
struct games* memory(struct games* x,int n)
{
x=(struct games*) realloc(x, (n+1)*sizeof(struct games));
return (x);
}
struct games* input(struct games* x ,int n)
{
fflush(stdin);
puts("");
printf("ENTER GAME NAME %d = ",n+1);
gets(x[n].name);
puts("");
printf("ENTER GAME YEAR %d = ",n+1);
scanf("%d",&x[n].year);
puts("");
printf("ENTER GAME RATING %d = ",n+1);
scanf("%d",&x[n].rating);
puts("");
return x;
}
void print(struct games* x,int n)
{
printf("\n-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-\n");
printf("\n*%30s%5s%7s*\n", "NAME", "YEAR", "RATING");
printf("\n-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-\n");
for(int i=0; i<n; i++)
{
printf("\n*%30s%5d%7d \n",x[i].name,x[i].year,x[i].rating);
printf("\n*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\n");
}
puts("\nDone! Please enter any key.\n");
getch();
}
int _tmain(int argc, _TCHAR* argv[])
{
int z,n = 0, l,ch,fl1,fl2,fl3;
struct games* x = NULL;
struct games* y = NULL;
do
{
puts("**********MENU*************");
puts("** 1.Input structur **");
puts("** 2.Print struct **");
puts("** 3.Confirming **");
puts("** 4.Exit **");
puts("***************************");
puts("");
do{
scanf("%d",&z);
if (z>=5) puts(“You wrong please enter correct z 1-4”);
}while(z>=5);
switch(z)
{
case 1:
do
{
x = memory(x,n);
x = input(x,n);
n++;
puts("Do you want continued enter 1-yes 0-no?");
scanf("%d",&ch);
if (ch==0)
{
puts("\nDone! Please enter any key.\n");
getch();
system("cls");
}
}
while(ch==1);
fl1=1;
break;
case 2:
if (fl1==1)
{
system("cls");
print(x,n);
system("cls");
}
else puts("Please enter struct");
break;
case 3:
if (fl1==1)
{
l =0;
for(int i=0;i<n;i++)
{
if (x[i].rating >7)
{
y = memory(y, l);
y[l] = x[i];
l++;
}
}
print(y,l);
getch();
system("cls");
}
else puts("Please enter struct");
break;
case 4:
z=0;
break;
}
}
while(z!=0);
return 0;
}
Результаты выполнения программы
При выполнении программы полученные результаты совпадают с приведенными в таблице 1 "Контрольные примеры". Ошибок не обнаружено.
Выводы
При выполнении лабораторной работы получены практические навыки в работе со структурами С/С++.