Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
17
Добавлен:
17.04.2015
Размер:
33.28 Кб
Скачать

Московский Государственный Университет Леса

ФЭСТ ВТ-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;

}