Описать структуру с именем TRAIN - C (СИ) (77621)
Формулировка задачи:
Ребят,помогите сделать пожалуйста! (в поиске такой проги на Си нет)
Описать структуру с именем TRAIN, содержащую следующие поля:
- название пункта назначения
- номер поезда
- время отправления
Написать программу, выполняющую следующие действия:
- ввод с клавиатуры данных в массив, состоящий из восьми элементов типа TRAIN; записи должны быть размещены в АЛФАВИТНОМ ПОРЯДКЕ ПО НАЗВАНИЯМ ПУНКТОВ НАЗНАЧЕНИЯ;
- вывод на экран информации о поездах, отправляющихся после ВВЕДЕННОГО С КЛАВ. ВРЕМЕНИ;
- если таких поездов нет, выдать на дисплей соответствующее сообщение.
(перерыла весь форум.есть много похожих.но такой на Си нет нигде)
Помогите пожалуйста сделать!
вот примерно те же темы.
http://www.cyberforum.ru/search.php?searchid=4263433
Решение задачи: «Описать структуру с именем TRAIN»
textual
Листинг программы
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#define n 2
struct TRAIN
{
char punkt[15];
int r_num;
int ch;
int min;
} train[n];
void Read(TRAIN *);
void Sort();
void Output(int);
int main(void)
{
int ch1,min1;
Read(train);
printf("|Punkt naznacheniya|\tNomer reisa|\tVremi|\t\n");
for(int i=0;i<n;i++)
Output(i);
Sort();
printf("Sortirovka\n");
printf("|Punkt naznacheniya|\tNomer reisa|\tVremi|\t\n");
for(int i=0;i<n;i++)
Output(i);
printf("\nVvedite Vremi: \n");
printf("Hour:\n");
scanf("%d",&ch1);
printf("Minutes: \n");
scanf("%d",&min1);
int s=0;
for(int i=0;i<n;i++)
if(train[i].ch>=ch1 && train[i].min>=min1){
printf("|Punkt naznacheniya|\tNomer reisa|\tVremi|\t\n");
Output(i);
s=1;
}
if(!s) printf("Takoe vremi net!\n");
return 0;
}
void Read(TRAIN t[n])
{
int i;
for(i = 0;i<n;i++)
{
printf("Punkt naznacheniya:\n");
scanf("%s",&t[i].punkt);
printf("Nomer reisa: \n");
scanf("%d",&t[i].r_num);
printf("Hour: \n");
scanf("%d",&t[i].ch);
printf("Minutes: \n");
scanf("%d",&t[i].min);
}
}
void Sort() //sortirovka po punkty naznacenia
{
int swap=1;
while(swap!=0)
{
swap=0;
for(int i=0;i<n-1;i++)
if(strcmp(train[i].punkt,train[i+1].punkt)>=0)
{
swap=1;
TRAIN temp=train[i];
train[i]=train[i+1];
train[i+1]=temp;
}
}
}
void Output(int i)
{
printf("|%s\t\t |%d\t\t |%d.%d\t |\n",
train[i].punkt,train[i].r_num,train[i].ch,train[i].min);
}
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы:
- #include
для работы с функцией вывода и ввода данных; - #include
для работы с функцией getch(), которая используется для приостановки выполнения программы до тех пор, пока пользователь не введет данные; - #include
для работы с функцией malloc() и free(), которые используются для динамического выделения и освобождения памяти; - #include
для работы со строками.
- #include
- Определяем структуру TRAIN:
- В структуре TRAIN есть четыре поля:
- char punkt[15] - название пункта назначения;
- int r_num - номер поезда;
- int ch - часы;
- int min - минуты.
- В структуре TRAIN есть четыре поля:
- Создаем массив структур TRAIN:
- Мы создаем массив структур TRAIN с фиксированным размером n.
- Функция Read():
- Эта функция используется для чтения данных о поездах в массив структур TRAIN.
- Функция Sort():
- Эта функция сортирует массив структур TRAIN по полю punkt в алфавитном порядке.
- Функция Output(int i):
- Эта функция выводит данные о поезде с индексом i в консоль.
- Основная функция main():
- В этой функции мы сначала считываем данные о поездах, затем выводим их в консоль, после чего сортируем и снова выводим.
- Затем мы считываем время и ищем поезда, которые отправляются в это время.
- Если таких поездов нет, выводим сообщение
Takoe vremi net!.
- Код в строке 17:
- Здесь мы используем цикл for для перебора всех поездов и проверки, отправляется ли поезд в указанное время.
- Если да, мы выводим данные о поезде и устанавливаем флаг s в 1.
- Код в строке 26:
- Здесь мы используем функцию scanf() для считывания времени.
- Код в строке 32:
- Здесь мы используем цикл for для перебора всех поездов и проверки, отправляется ли поезд в указанное время.
- Если да, мы выводим данные о поезде и устанавливаем флаг s в 1.
- Код в строке 38:
- Здесь мы используем функцию printf() для вывода сообщения
Takoe vremi net!.
- Здесь мы используем функцию printf() для вывода сообщения
- Код в строке 44:
- Здесь мы используем функцию getch() для приостановки выполнения программы до тех пор, пока пользователь не введет данные.