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

Выводы

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


 

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

26895. Особенности анатомического строения скелета птиц 2.94 KB
  Позвоночный столб представлен шейным грудным поясничным крестцовым и хвостовым отделами. Шейный отдел представлен большим количеством позвонков Sобразно изогнут. Тело позвонков соединяются седловидными суставами с хрящевыми прослойками что обеспечивает высокую подвижность шейного отдела позвоночника. Грудной отдел образован 7 куры или 9утки и гуси отделами.
26896. Органы пищеварения птиц. Мочеполовые органы птиц 4.27 KB
  Органы пищеварения птиц. Мочеполовые органы птиц. Мочеполовые органы птиц. Половые органы самца.
26897. Органы дыхания птиц 2.65 KB
  Органы дыхания птиц. Характерные особенности органов дыхания птиц позволяющие вентилировать свои органы дыхания во время полёта: Простота структуры носовой полости; наличие певчей гортани; своеобразной строение лёгких которые занимают небольшой объём в грудной клетке; усложнённое развитие воздухоносных мешков. Мешки служат дополнительным резервуаром для воздуха а также совершенствуют сам акт дыхания: птицы получают кислород не только при вдохе но и при выдохе что повышает уровень метаболизма.
26898. Органы кожного покрова птиц и их производные 7.22 KB
  Органы кожного покрова птиц и их производные. Одна из характерных особенностей кожи птиц отсутствие в ней как и у рептилий .Лишь над последними крестцовыми позвонками у большинства птиц расположена копчиковая железа glandula uropigyi состоящая из двух неодинаковых по величине долей функционирующих наподобие сальных желез. У водоплавающих птиц копчиковая железа развита сильнее; у кур доли железы величиной с горошину а у уток с лесной орех.
26899. Артерия сафена 4.96 KB
  saphena отходит на середине бедра и направляясь вниз переходит на каудальную поверхность голени и стопы где и разветвляется на пальцевые артерии. cranialis проходит под кожей на плюсну и делится на I IV общие дорсальные пальцевые артерии аа. calcanei которые образуют пяточную сеть rete calcaneum делится на медиальную и латеральную плантарные артерии. plantaris lateralis б Латеральная пальмарная 1 артерия образовав глубокую плантарную дугу делится на И IV плантарные плюсневые артерии от которых отходят II rIV...
26900. Сосуды и нервы области кисти 5.33 KB
  Различают поверхностные и глубокие вены верхней конечности. ПОВЕРХНОСТНЫЕ ВЕНЫ Поверхностные подкожные вены развиты сильнее чем глубокие поэтому они являются основным дренажным руслом верхней конечности. От них начинаются основные венозные пути оттока крови от кожи и подкожной клетчатки верхней конечности латеральная и медиальная подкожные вены руки которые принимают кровь из венозного сплетения тыльной поверхности пальцев.Дорсальные пястные вены богато анастомозируют между собой образуя тыльную венозную сеть кисти.
26901. Сосуды и нервы области кисти 2.25 KB
  Иннервация брюшины Иннервация париетальной брюшины осуществляется нервами которые иннервируют соответствующие участки стенок живота. В иннервации брюшины передней брюшной стенки принимают участие нижние межреберные нервы а также нервы поясничного сплетения. В иннервации брюшины покрывающей диафрагму принимают участие диафрагмальные и нижние межреберные нервы. Иннервация брюшины задней стенки живота осуществляется парными ветвями поясничного сплетения ветвями подвздошнопоясничного нерва.
26902. Питание и иннервация стенок грудной полости 3.53 KB
  Задние межреберные артерии aa. ветви внутренней грудной артерии пронизывают межреберные промежутки и участвуют в кровоснабжении большой грудной мышцы.Нервы Имеется двенадцать пар основных передних грудных нервных ветвей верхние одиннадцать представляют собой межреберные нервы nn. Межреберные нервы с третьего по шестой в целом имеют типичный ход тогда как в топографии всех остальных имеются отклонения.
26903. Артерии головы 5.34 KB
  Кровь к голове поступает по левой и правой общим сонным артериям которые берут свое начало из общего ствола сонных артерий. Внутренняя сонная артерия а. carotis interna –кровоснабжает головной мозг Наружная сонная артерия a. Затылочная артерия a.