Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Составить программу, которая содержит текущую инфо 
:(
    Опции темы
dima2308
Дата 10.3.2017, 21:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 5.12.2014

Репутация: нет
Всего: нет



Выполняю задание. Условие следующее:
Составить программу, которая содержит текущую информацию о заявках на авиабилеты.
Каждая заявка содержит:
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";
}



PM MAIL   Вверх
ss
Дата 12.3.2017, 00:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 131
Регистрация: 17.5.2007

Репутация: нет
Всего: нет



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

можно или дописать  tmp->next = NULL или
в структуре задать в конструкторе (чтобы каждый раз не задавать)
List(): reis_n (0),  next(NULL){}
PM MAIL   Вверх
xvr
Дата 13.3.2017, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



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

PM MAIL   Вверх
teesync
Дата 27.7.2022, 00:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 26.7.2022

Репутация: нет
Всего: нет




Модератор: Сообщение скрыто.

PM MAIL   Вверх
squilia
Дата 15.8.2022, 07:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 15.8.2022

Репутация: нет
Всего: нет




Модератор: Сообщение скрыто.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1264 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.