Описать структуру с именем 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() для приостановки выполнения программы до тех пор, пока пользователь не введет данные.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д