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

Выводы

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


 

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

1675. Значение и структурные элементы метрологии 360.06 KB
  Основные понятия в области метрологии. Структурные элементы метрологии. Цели, задачи и принципы. Разделы метрологии.
1676. Объекты и субъекты метрологии 2.36 MB
  Объекты метрологии. Величины, их классификация и характеристика. Классификация физических величин и единиц их измерения. Субъекты метрологии, их классификация и краткая характеристика.
1677. Средства и методы измерений 2.54 MB
  Средства измерения. Средства измерительной техники. Нормируемые метрологические характеристики. Методы измерений.
1678. Основы теории измерений физических величин 403.75 KB
  Шкалы и уравнения измерений. Факторы, влияющие на результаты измерений и погрешности. Шкала интервалов (разностей) физических величин с применением и пропорциональности интервалов.
1679. Государственная система обеспечения единства измерений (ГСИ) 787.13 KB
  Понятие, назначение и структура государственной системы обеспечения единства измерений. Права и обязанности государственных инспекторов по обеспечению единства измерений.
1680. Гидравлические вяжущие вещества. Гидравлическая известь. Портландцемент 943.53 KB
  Гидравлическая известь. Сырье, особенности и применение. Портландцемент. Начальная характеристика. Плавление сырьевой смеси. Схема производства цемента сухим способом. Химический и минеральный состав клинкера.
1681. Специальные виды цементов 44.64 KB
  Быстротвердеющий портландцемент (БТЦ). Сверхбыстротвердеющий портландцемент (СБТЦ). Пластифицированный портландцемент. Белый и цветные цементы. Глиноземистый цемент. Расширяющийся портландцемент (РПЦ).
1682. Экономика организаций. Хозяйственная деятельность предприяний 700.66 KB
  Анализ хозяйственной деятельности предприятия. Организационно-правовые формы предприятия и их характеристика. Формы общественной организации производства. Основные производственные фонды. Регулирование заработной платы.
1683. Современные информационные технологии 1.73 MB
  Информация и ее роль в человеческом обществе. Формы адекватности и объем информации. Специальные виды кодирования и криптография. Итология – наука об информационных технологиях. Информационная технология поддержки принятий решений. Современный рынок финансово-экономического прикладного программного обеспечения. Основные программные и аппаратные компоненты сети.