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

Выводы

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


 

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

12090. Реальные сети 2.57 MB
  Тема 4. Реальные сети 4.1. Ethernet 4.1.1. Обзор 4.1.1.1. Происхождение В конце 60х годов Гавайский университет разработал глобальную вычислительную сеть ГВС под названием ALOHA. Университет располагая обширной территорией решил объединить в сеть все имеющиеся в его распоряжен
12091. Глобальные сети, Удаленный доступ 8.42 MB
  Глобальные сети. Удаленный доступ. Технология модемов Модем modem это устройство которое позволяет компьютерам обмениваться данными по телефонной линии. Когда компьютеры расположены далеко друг от друга и их нельзя соединить стандартным сетевым...
12092. Пример создания проекта 1.34 MB
  Лабораторная работа 5.1. Пример создания проекта Цель проекта: разработать компьютерную программу состоящую из двух модулей. Процесс создания такой программы содержит разработку алгоритма и программирование каждого модуля их совместную отладку и оформление програм...
12093. Движение тела, брошенного с некоторой высоты под углом к горизонту 319 KB
  Лабораторная работа 112 Движение тела брошенного с некоторой высоты под углом к горизонту. Краткая теория 1. Основные понятия кинематики материальной точки. Кинематика это раздел механики описывающий движение тел без выяснения причин обусловивших это дв...
12094. Определение коэффициента восстановления скорости при соударении шаров 186 KB
  Лабораторная работа №116. Определение коэффициента восстановления скорости при соударении шаров. Краткая теория Ударом называется относительно кратковременное взаимодействие двух или более тел время взаимодействия значительно меньше времени движения те...
12095. Определение скорости полета пули методом баллистического маятника 62 KB
  Лабораторная работа №118. Определение скорости полета пули методом баллистического маятника. Краткая теория Баллистическим маятником называется массивное тело подвешенное на двух длинных параллельных нитях. При попадании пули в такой маятник нити обеспечиваю...
12096. ИЗМЕРЕНИЕ СОПРОТИВЛЕНИЯ МОСТОМ ПОСТОЯННОГО ТОКА 32.5 KB
  Лабораторная работа № 4.24к Измерение сопротивления мостом постоянного тока Цель работы: ознакомиться с методом моста постоянного тока измерить сопротивление резисторов этим методом. Работа выполняется на ЭВМ. Краткие теоретические сведения Одним из распрос
12097. Магнитное поле на оси короткого соленоида 49 KB
  Лабораторная работа № 5.28к Магнитное поле на оси короткого соленоида Цель работы: ознакомиться с баллистическим методом измерения магнитной индукции магнитного поля соленоида. Работа выполняется на ЭВМ. Краткие теоретические сведения Баллистический мето
12098. Снятие основной кривой намагничения 63 KB
  Лабораторная работа 530k Снятие основной кривой намагничения Цель работы: познакомиться с баллистическим методом измерения индукции магнитного поля; снять основную кривую намагничения ферромагнитного материала. Работа выполняется на ЭВМ. КРАТКАЯ ТЕОРИЯ ...