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

Выводы

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


 

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

2708. Путешествие по заповеднику 35.64 KB
  Внеклассное мероприятие: экологическая познавательная игровая программа Путешествие по заповеднику Хакасский Проводится для учащихся 2-го класса. Цели: 1) развитие познавательного интереса к природе, выработка умения видеть необычное в привычном,...
2709. Внеклассное мероприятие. Викторина Своя игра 24.43 KB
  Внеклассное мероприятие. Викторина Своя игра СИНИЙ РАУНД. 1. Тема: Фольклор, продолжи вторую часть пословицы и поговорки: 10- Пришла беда -… 20- Искру туши до пожара, беду ….. 30- Не зная броду, 40- Перемелется … 50- Ученье-свет, а … Тема: Сказо...
2710. От деревянного острога до современного жилья 392.18 KB
  Внеклассный урок по теме. От деревянного острога до современного жилья Подготовка к уроку. Класс разбивается на 2 группы. каждый получает две цветных карточки небольшого размера (красную и зеленую). Оборудование. компьютер (ноутбук), мультиме...
2711. Энергетика: вчера, сегодня, завтра 34.55 KB
  Деловая игра телемост, Энергетика, вчера, сегодня, завтра Цель, развитие экономического и экологического мышления учащихся на основе межпредметной интеграции учебных предметов географии, экологии, литературы, немецкого языка. Суть игры: Иг...
2712. День защиты Земли 136.24 KB
  День защиты Земли Цель занятия: Сформировать представление о различных типах корневых систем растений. Закрепить знания о почве, как о факторе, необходимом для жизни растений. Повторить правила поведения в лесу. Воспитывать бережное отношение к п...
2713. Жизненные формы организмов. Ритмы жизни 29.97 KB
  Жизненные формы организмов. Ритмы жизни (урок по экологии в 10-м классе) Цель: познакомить учащихся с жизненными формами организмов и ритмичностью в живой природе. Задачи: 1. Дать классификацию жизненных форм организмов растений и животных. 2. Форми...
2714. Определение моментов инерции тел физического маятника 51.66 KB
  Физический маятник Цель работы: познакомиться с методом определения моментов инерции тел. Приборы: исследуемое тело (пластина), кронштейн для подвешивания тела, секундомер, линейка, математический маятник. Сведения из теории. Физическим маятником...
2715. Загрязнение Мирового океана. Очистка сточных вод 30 KB
  Загрязнение Мирового океана. Очистка сточных вод Цели:  изучение основных видов загрязнения водных ресурсов Земли;  показать, что в последние годы объемы и скорость выбросов в водную среду превосходят возможности биосферы к их разбавлению ...
2716. Организм и среда 31.84 KB
  Организм и среда  Для учителя. Данное задание может быть использовано на разных этапах обучения: от начального до завершающего. В таблице записаны несколько основных свойств живых организмов и особенности взаимодействия организма с окружающей с...