Вывод информации о маршрутах, которые начинаются или оканчиваются в заданном пункте - C (СИ)
Формулировка задачи:
Программа: Описать структуру с именем MARSH, содержащую следующие поля: назване начального пукта маршрута, название конечного пункта маршрута, номер маршрута.
запрограммировать вывод на экран информации о маршрутах, которые начинаются или оканчиваются в пункте, название которого введено с клавиатуры. Если маршрутов нет, то вывести соответствующее сообщение.
Смог описать структуру, но дальше не знаю, что делать. Прошу помочь.
#include <stdio.h> #include <locale.h> #include <stdio.h> struct marsh { char start[100], end[100]; int num; }; int main() { setlocale(LC_ALL, "RUS"); int cnt_marsh = 0, ch; struct marsh lib[8]; do { printf("введите начало маршрута"); scanf("%s", lib[cnt_marsh].start); printf("введите конец маршрута"); scanf("%s", lib[cnt_marsh].end); printf("введите номер маршрута"); scanf("%s", lib[cnt_marsh].num); cnt_marsh++; } while (cnt_marsh < 3);
Еще ввод данных в массив должен состоять из восьми элементов типа Marsh
Решение задачи: «Вывод информации о маршрутах, которые начинаются или оканчиваются в заданном пункте»
textual
Листинг программы
#include <stdio.h> #include <locale.h> #include <string.h> #define N 8 struct marsh { char start[100], end[100]; int num; }; int main() { setlocale(LC_ALL, "RUS"); int cnt_marsh = 0, flag = 0; char str[BUFSIZ]; struct marsh lib[8]; do { printf("введите начало маршрута\n"); scanf("%s", lib[cnt_marsh].start); printf("введите конец маршрута\n"); scanf("%s", lib[cnt_marsh].end); printf("введите номер маршрута"); scanf("%d", &lib[cnt_marsh].num); cnt_marsh++; } while (cnt_marsh < N); puts("Введите пункт:"); scanf("%s", str); for(cnt_marsh = 0; cnt_marsh < N; cnt_marsh++){ if(!strcmp(str, lib[cnt_marsh].start) || !strcmp(str, lib[cnt_marsh].end)){ printf("%s %s %d", lib[cnt_marsh].start, lib[cnt_marsh].end, lib[cnt_marsh].num); flag = 1; break; } } if(!flag) puts("Маршрут не найден"); }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы
- Определяем структуру marsh, которая содержит поля start (начало маршрута), end (конец маршрута) и num (номер маршрута)
- Устанавливаем локальную настройку на русский язык
- Объявляем переменные: cnt_marsh (счетчик количества введенных маршрутов), flag (флаг для определения, найден ли маршрут), str (строка для ввода пункта) и lib (массив структур marsh)
- Запускаем цикл do-while, который позволяет ввести N маршрутов
- В каждой итерации цикла запрашиваем у пользователя начало маршрута, конец маршрута и номер маршрута, и сохраняем их в соответствующие поля структуры marsh
- Увеличиваем счетчик cnt_marsh на 1 после каждого введенного маршрута
- Запрашиваем у пользователя пункт, в котором он заинтересован
- Запускаем цикл for, который проходит по всем введенным маршрутам
- Сравниваем строку str с полями start и end текущей структуры marsh, используя функцию strcmp
- Если совпадение найдено, выводим значения полей start, end и num текущей структуры marsh и устанавливаем флаг flag в 1, после чего выходим из цикла с помощью оператора break
- Если после прохода по всем маршрутам флаг flag остается равным 0, выводим сообщение
Маршрут не найден
- Код не содержит обработки ошибок, возникающих при вводе данных пользователем (например, если пользователь вводит некорректные данные или не вводит их вообще)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д