Вывод информации о маршрутах, которые начинаются или оканчиваются в заданном пункте - 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("Маршрут не найден");
}

Объяснение кода листинга программы

  1. Включаем необходимые заголовочные файлы
  2. Определяем структуру marsh, которая содержит поля start (начало маршрута), end (конец маршрута) и num (номер маршрута)
  3. Устанавливаем локальную настройку на русский язык
  4. Объявляем переменные: cnt_marsh (счетчик количества введенных маршрутов), flag (флаг для определения, найден ли маршрут), str (строка для ввода пункта) и lib (массив структур marsh)
  5. Запускаем цикл do-while, который позволяет ввести N маршрутов
    • В каждой итерации цикла запрашиваем у пользователя начало маршрута, конец маршрута и номер маршрута, и сохраняем их в соответствующие поля структуры marsh
    • Увеличиваем счетчик cnt_marsh на 1 после каждого введенного маршрута
  6. Запрашиваем у пользователя пункт, в котором он заинтересован
  7. Запускаем цикл for, который проходит по всем введенным маршрутам
    • Сравниваем строку str с полями start и end текущей структуры marsh, используя функцию strcmp
    • Если совпадение найдено, выводим значения полей start, end и num текущей структуры marsh и устанавливаем флаг flag в 1, после чего выходим из цикла с помощью оператора break
  8. Если после прохода по всем маршрутам флаг flag остается равным 0, выводим сообщение Маршрут не найден
  9. Код не содержит обработки ошибок, возникающих при вводе данных пользователем (например, если пользователь вводит некорректные данные или не вводит их вообще)

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.625 из 5
Похожие ответы