Практические / Отчеты студентов 2011-2012 / ВТ-11 Лр / Рудов / лабораторная работа №9
.docМОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЛЕСА
Факультет электроники и системотехники.
Лабораторная работа № 9
Тема: «Структуры»
Выполнил студент: Рудов К. А. ВТ-11
Проверил: Ларионов Н.В.
Москва 2011 г.
-
Условие задачи:
1. Описать структуру с именем AEROFLOT, содержащую следующие ноля:
• название пункта назначения рейса;
• номер рейса;
• тип самолета.
2. Написать программу, выполняющую следующие действия:
• ввод с клавиатуры данных в массив, состоящий из семи элементов типа
AEROFLOT; записи должны быть размещены в алфавитном порядке по
названиям пунктов назначения;
• вывод на экран пунктов назначения и номеров рейсов, обслуживаемых самолетом, тип которого введен с клавиатуры;
• если таких рейсов нет, выдать на дисплей соответствующее сообщение.
-
Данные:
-
Схема программы:
-
Листинг программы:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#define N 7
struct AEROFLOT
{
char type[50];
int num;
char name[50];
};
void print_race(int index);
void scanf_race(int index);
void sort_race();
void find_race(char type[]);
struct AEROFLOT aeroflot[N];
int main()
{
int i,n;
char type[50];
for(i = 0;i < N;i++)
scanf_race(i);
sort_race();
for(i = 0;i < N;i++)
print_race(i);
do
{
printf("Vvedite tip samoleta: ");
scanf("%s",type);
if (strcmp(type,"!") == 0)
return 0;
find_race(type);
} while(1);
getch();
return 0;
}
void print_race(int index)
{
printf("===================\n");
printf("Tip samoleta: %s\n",aeroflot[index].type);
printf("Nomer reisa: %d\n",aeroflot[index].num);
printf("Punkt naznacheniya: %s\n",aeroflot[index].name);
}
void scanf_race(int index)
{
printf("Vvedite tip samoleta: ");
scanf("%s",aeroflot[index].type);
printf("Vvedite nomer reisa: ");
scanf("%d",&aeroflot[index].num);
printf("Vvedite nazvanie punkta naznacheniya: ");
scanf("%s",aeroflot[index].name);
}
void sort_race()
{
int i,j,res;
struct AEROFLOT temp;
for(i = 0;i < N;i++)
for(j = N -1 ;j > i;j--)
{
res = strcmp(aeroflot[j-1].name,aeroflot[j].name);
if (res > 0)
{
temp = aeroflot[j-1];
aeroflot[j-1] = aeroflot[j];
aeroflot[j] = temp;
}
}
}
void find_race(char type[])
{
int i;
int is = 0;
for(i = 0;i < N;i++)
{
if (strcmp(aeroflot[i].type,type) == 0)
{
print_race(i);
is = 1;
}
}
if (!is)
printf("Takogo reisa net\n");
}