Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Составить программу, которая содержит текущую инфо


Автор: dima2308 10.3.2017, 21:46
Выполняю задание. Условие следующее:
Составить программу, которая содержит текущую информацию о заявках на авиабилеты.
Каждая заявка содержит:
1) пункт назначения
2) номер рейса
3) фио
4) дату

Требуется реализовать функции:
1) хранения заявок в виде списка
2) добавления заявок
3) вывода всех заявок
4) поиск заявки по номеру и дате
5) удаление заявок.

Не могу понять, как правильно добавлять заявки и их выводить. 
Заполнив одну заявку, всё выводится хорошо. 
Но как только хочу заполнить ещё или вывести больше одной, то не работает.
Прошу подсказать, что исправить нужно.
Код прикладываю:
Код

#include <iostream>
#include <string>
#include <cstring>
using namespace std;

struct List // объявление структуры с данными
{
    string point;
    int reis_n;    
    string fio;
    string date;
    List *next;
};

// прототипы функций
int Menu();
void add(List *first); 
void cout_all(List *first);
void cout_one(List *first);
void del(List *first);


int main()
{
    setlocale( LC_ALL,"Russian" );
    List *first = new List;
    cout<<"Введите пункт назначения: ";
    cin>>first->point;
    cout<<"Введите номер рейса: ";
    cin>>first->reis_n;
    cout<<"Введите фио пассажира: ";
    cin>>first->fio;
    cout<<"Введите дату вылета: ";
    cin>>first->date;
    first->next=NULL;

    short k;
    while ((k=Menu())!=0)
    {
        switch(k)
        {
        case 1: add(first); break;
        case 2: cout_all(first); break;
        case 3: del(first); break;
        case 4: cout_one(first); break; 
        case 5: break;
        default: cout<<"Введите число от 1 до 5: ";
        }        
    }
    return 0;
}

int Menu()
{
    cout<<"\n";
    cout<<"1 - Добавить заявку\n";
    cout<<"2 - Вывести все заявки\n";
    cout<<"3 - Удалить заявку\n";
    cout<<"4 - Вывести заявку по номеру рейса и дате вылета\n";
    cout<<"0 - Выход\n";
    cout<<"\n";
    cout<<"Введите нужный пункт: ";
    
    short k;
    cin>>k;
    cout<<"\n";
    return k;
}

void add(List *first) // добавление одной заявки в список
{
    List *t;

    for (t=first; (t->next)!=NULL; t=t->next)
    {}
    List *tmp = new List;
    cout<<"Введите пункт назначения: ";
    cin>>tmp->point;
    cout<<"Введите номер рейса: ";
    cin>>tmp->reis_n;
    cout<<"Введите фио пассажира: ";
    cin>>tmp->fio;
    cout<<"Введите дату вылета: ";
    cin>>tmp->date;
    t->next=tmp;
}

void cout_all(List *first) // вывод всех заявок
{
    List *t;
    for (t=first; (t->next)!=NULL; t=t->next)
    {}
    cout<<"Пункт назначения: "<<t->point<<"\n";
    cout<<"Номер рейса: "<<t->reis_n<<"\n";
    cout<<"ФИО пассажира: "<<t->fio<<"\n";
    cout<<"Дата вылета пассажира: "<<t->date<<"\n";    
    t->next=t;
    
}

void cout_one(List *first) // вывод заявки по критериям
{
     List *t;
     int i=0;
     int num;
     string d;
     cout<<"Введите номер рейса:"<<"\n";
     cin>>num;
     cout<<"Введите дату вылета (ДД.ММ.ГГ): "<<"\n";
     cin>>d;
     for (t=first; (t->next)!=NULL;t=t->next)
     {}
         if ((t->reis_n==num)&&(t->date==d))
         {
             cout<<"Требуемая заявка найдена";
             cout<<"Пункт назначения: "<<t->point<<"\n";
             cout<<"Номер рейса: "<<t->reis_n<<"\n";
             cout<<"ФИО пассажира: "<<t->fio<<"\n";
             cout<<"Дата вылета пассажира: "<<t->date<<"\n";
             i++;
         }
     
     if (i==0) cout<<"Таких заявок не найдено"<<"\n";
}


void del(List *first) // удаление заявки
{
    cout<<"\n";
}



Автор: ss 12.3.2017, 00:44
в функ. add() при создание tmp не задано поле tmp->next = NULL поэтому цикл не отрабатывает при последующих добавлениях. 

можно или дописать  tmp->next = NULL или
в структуре задать в конструкторе (чтобы каждый раз не задавать)
List(): reis_n (0),  next(NULL){}

Автор: xvr 13.3.2017, 13:49
В функции count_all написан явный бред (не считая того, что название функции не отражает ее действия)
Не надо было ее делать из функции add - у них разное предназначение и реализация должна бвть разная.

Автор: teesync 27.7.2022, 00:52
Модератор: Сообщение скрыто.

Автор: squilia 15.8.2022, 07:18
Модератор: Сообщение скрыто.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)