39288

Односвязные списки

Лабораторная работа

Информатика, кибернетика и программирование

Пользователь вводит информационные поля в массив структур. Условия для обработки – поиск элементов списка по значению одного из полей, вывод информационных полей структур Описание структуры для формирования списка приведено в следующем пункте.

Русский

2013-10-02

131.45 KB

16 чел.

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

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

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

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

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

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

Отчет

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

Выводы

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


 

А также другие работы, которые могут Вас заинтересовать

12831. Слово за слово отрядная игра для пионерского лагеря 31 KB
  Цель: дать возможность детям проявить себя в способности быстро составлять слова и работать командой. Задача: занять детей всего отряда интересным делом. Возраст: 13 отряды Реквизит: таблички с буквами распространенные по 68 редкие по 24 цифрами и те...
12832. СВЕТСКИЙ РАЗГОВОР 35 KB
  ОД: СВЕТСКИЙ РАЗГОВОР Цель: повысить интеллектуальный уровень детей за счет расширения их кругозора в узком вопросе. Задача: Занять детей всего отряда интересной и полезной деятельностью после подвижных игр и мероприятий. Необходимый реквизит: при желании можно у
12833. Самураи игра на сообразительность, развивает зрительную память 20.5 KB
  САМУРАИ. Задачи: игра на сообразительность развивает зрительную память. Период смены: после орг. периода но раньше середины всей смены. Возраст детей: с 9 лет. Продолжительность: Количество детей: чем больше тем лучше. Место проведения: везде где дети могут се
12834. Ромашка. Отрядное мероприятие 40 KB
  OД РОМАШКА Время проведения: основной период смены Возраст: в данном од есть разграничения по возрастам поэтому им можно пользоваться на любом отряде. Количество детей: участие в од принимает весь отряд совет: самых активных детей лучше посадить в жюри чтобы дать в...
12835. Разговор о проблемах молодежи. Классный час 60.5 KB
  Разговор о проблемах молодежи Разговор представляет собой специфичную театральную постановку и требует большой подготовки и отдачи. Зачастую подростки испытывая ту или иную проблему боятся заговорить о ней. Участники Разговора поднимают темы тревожащие подро
12836. Все профессии нужны, все профессии важны 23 KB
  Все профессии нужны все профессии важны. Задачи: развитие фантазии умения находить интересное в обыденных занятиях. Период смены: после орг. периода. Возраст детей: 812 лет. Продолжительность:3040 минут. Количество детей: весь отряд. Место проведения: свободное...
12837. Пойми меня мероприятие для отряда 28 KB
  ПОЙМИ МЕНЯ Задачи: развитие ассоциативного мышления развитие речи сообразительности. Период смены: основной период. Возраст детей: все отряды. Продолжительность:1 час. Количество детей: 2 команды по12 отряда. Место провидения: площадка перед корпусом чтобы...
12838. Пара ласковых мероприятие для отрядной группы 22.5 KB
  Задачи: снять агрессию избежать конфликтных ситуаций дать возможность детям разрядиться. Период смены: 911 дней. Возраст детей: 13 и старше Продолжительность: 30 минут. Количество детей: 5 и более. Место проведения: помещение или место на природе...
12839. Сюжетно-ролевая игра «НОЧЬ ТРИФФИДОВ» 67 KB
  Сюжетноролевая игра НОЧЬ ТРИФФИДОВ Сюжетноролевая игра Ночь Триффидов создана по мотивам произведения Джона Уиндема День триффидов.Возраст участников игры колебался от 13 до 45 лет. ПОДГОТОВКА К ИГРЕ: Особенно интересна ситуация когда играть будет большое к