Практические / Отчеты студентов 2011-2012 / ВТ-11 Лр / Шадлова / Лабораторная работа №9
.docМосковский Государственный Университет Леса
ФЭСТ ВТ-11
Лабораторная работа №9.
Программирование на языках высокого уровня
Тема: “Структуры”
Выполнил студент Шадлова Н.А.
Проверил Ларионов Н.В.
Москва 2012.
1. Условия задания:
1. Описать структуру с именем TRAIN, содержащую следующие поля:
• название пункта назначения;
• номер поезда;
• время отправления.
2. Написать программу, выполняющую следующие действия:
• ввод с клавиатуры данных в массив, состоящий из восьми элементов типа
TRAIN; записи должны быть упорядочены по номерам поездов;
• вывод на экран информации о поезде, номер которого введен с клавиатуры;
• если таких поездов нет, выдать на дисплей соответствующее сообщение.
2. Листинг программ:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define FALSE -1
#define N 8
struct __TRAIN
{
char name[20];
int num;
unsigned int min;
unsigned int hour;
};
typedef __TRAIN train;
void scantrain(train tr[]);
void printtrain(train tr[]);
int get_num(train tr[],int num);
void sort(train tr[]);
int main()
{
struct __TRAIN trains[N];
clrscr();
for(int i = 0;i < N;i++)
scantrain(&trains[i]);
int n;
sort(trains);
for(i = 0;i < N;i++)
{
printf("=========================\n");
printtrain(&trains[i]);
printf("=========================\n");
getch();
}
for(i=0;i>N;i++)
{
scanf("%d",&n);
printf("%d",n);
i = get_num(trains,n);
if (i != FALSE)
printtrain(&trains[i]);
else if(n == 999)
exit(0);
else
printf("Takogo poezda net\n");
}
return 0;
}
void scantrain(train tr[])
{
printf("Vvedite nomer poezda: ");
scanf("%d",&tr->num);
printf("Vvedite punkt naznacheniya: ");
scanf("%s",tr->name);
printf("Vvedite chas otpravleniya: ");
scanf("%d",&tr->hour);
printf("Vvedite minutu otpravleniya: ");
scanf("%d",&tr->min);
}
void printtrain(train tr[])
{
printf("Nomer poezda: %d\n",tr->num);
printf("Punkt naznacheniya: %s\n",tr->name);
printf("Vremya otpradleniya: %d:%d\n",
tr->hour,tr->min);
}
void sort(train tr[])
{
struct __TRAIN temp;
for(int i = 0;i < N-1;i++)
for(int j = N-2;j >= i;j--)
if (tr[j].num > tr[j + 1].num)
{
temp = tr[j];
tr[j] = tr[j+1];
tr[j+1] = temp;
}
}
int get_num(train tr[],int num)
{
for(int i = 0;i < N;i++)
if (tr[i].num == num)
return i;
else
continue;
return -1;
}