Вывести информацию о заявках по номеру рейса, дате или сразу обо всех заявках - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Программа должна хранить информацию о заявках в виде списка, позволять добавлять новые заявки, а также выводить информацию о заявках по номеру рейса, дате или сразу обо всех заявках. После всех попыток разобраться получилось вот что (ситуация осложняется тем, что похожие программы в интернете есть в основном на C++, а не на C):
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include <locale.h>

typedef struct zayv
{
        int num;
    char dest[20];
        int number;
        char name[20];
    char date[10];
    struct zayv *next;
} request;
 
void menu();
void add(request **ppHead);
void shownum(request *ppHead);
void showdate(request *ppHead);
void showall(request *ppHead);
int entcontrol(int a, int b);
void entdate(char *array);

int main()
{
    setlocale (LC_ALL, "Russian");
    request *ppHead=NULL;
    int k;
    do
    {
     menu();
     printf("\n");
     k = entcontrol(1, 5);
     switch(k)
     {
      case 1:shownum(ppHead);
           break;
      case 2:showdate(ppHead);
           break;
      case 3:showall(ppHead);
           break;
      case 4:add(*ppHead);
           break;
       }
    } while(k!=5);
 
    getch();
    return 0;
}

void menu()
 {
  system("cls");
  printf("\t\t\tВыберите действие:\n\n");
  printf("\t\t\t1. Вывод заявок по номеру рейса.\n\
                2. Вывод заявок по дате вылета.\n\
            3. Вывод всех заявок. \n\
            4. Добавление новой заявки.\n\
                        5. Выход\n");
  }
 
void add(request **ppHead)
{
 
    request *pOldHead = *ppHead;
    request *pNewHead;
 
    pNewHead = malloc( sizeof(request));
 
    entcontrol2(pNewHead->dest);
    pNewHead->number = entcontrol(0, 10000);
    entcontrol2(pNewHead->name);
    entdate(pNewHead->date);
    pNewHead->next = pOldHead;
 
    *ppHead = pNewHead;
 
    return (void *) ppHead;
}

void out( const request * list, int num ){
    printf("\n\nЗаявка № %d", num);
    printf("\nПункт назначения > %s", list->dest);
    printf("\nНомер рейса > %d", list->number);
    printf("\nФамилия пассажира %s> ", list->name);
    printf("\nЖелаемая датa вылета %s> ", list->date);
}
void showall( const request *list ){
    int n = 1;
    for(; list ; list = list->next ){
        out( list, n );
        n++;
    }
}
void shownum( const request *list){
    int num, n = 1;
num = entcontrol;
    for(; list ; list = list->next ){
        if( list->number == num )
            out( list, n++ );
    }
}

void showdate( const request *list){
    int n = 1;
char dt[10];
entdate(dt);
    for(; list ; list = list->next ){
        if( list->date == dt )
            out( list, n++ );
    }
}

void entdate(char *array)
{
        int bl;
        int i;
        char str[10];
 
        do
        {
                fgets(str, 11, stdin);
                bl = 1;
 
    if(!isdigit(str[0]) || !isdigit(str[1]) || !isdigit(str[3]) || !isdigit(str[4]) || !isdigit(str[6]) || !isdigit(str[7]) || !isdigit(str[8]) || !isdigit(str[9]) || !isspace(str[2]) || !isspace(str[5]))
               {printf("Error: wrong date! Date format \"dd mm yyyy\" .\n");
                bl=0;}
 
        }
        while (!bl);
       strcpy(array, str);
 
}
 
int main()
{
    char temp[10];
    entdate(temp);
    printf("%s", temp);
    getch();
    return 0;
}
 
int entcontrol(int a, int b)
{
int bl;
int i,N;
char str[20];
 
do
{
scanf("%s",str);
bl = 1;
for(i=0;i<strlen(str);i++)
 if(!isdigit(str[i]))
{
printf("Error: wrong value\n");
bl=0;
break;
}
N = atoi(str);
if(N<a || N>b)
{
printf("Error: wrong value\n");
bl = 0;
}
}
while (!bl);
fflush(stdin);
return N;
}
Подскажите где исправлять.

Решение задачи: «Вывести информацию о заявках по номеру рейса, дате или сразу обо всех заявках»

textual
Листинг программы
request *ppHead=NULL;

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

В данном коде создается указатель на голову (первый элемент) списка заявок. Переменная ppHead типа указатель на указатель на запрос (request) и инициализируется значением NULL, что означает, что в начале списка нет ни одной заявки.

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


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

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

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