Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

1,2,3,6 ,курсач (Жека) / Лаба 1 прога

.docx
Скачиваний:
21
Добавлен:
09.02.2015
Размер:
134.6 Кб
Скачать

Федеральное государственное бюджетное образовательное учреждение высшего

профессионального образования

«Санкт-Петербургский государственный электротехнический

университет «ЛЭТИ» им. В.И.Ульянова (Ленина)»

Факультет компьютерных технологий и информатики

Кафедра вычислительной техники

Отчет

по лабораторной работе № 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 "Контрольные примеры". Ошибок не обнаружено.

Выводы

При выполнении лабораторной работы получены практические навыки в работе со структурами С/С++.

Соседние файлы в папке 1,2,3,6 ,курсач (Жека)