+ Ответить в теме
Показано с 1 по 2 из 2

Тема: Сравнение структур

  1. #1
    dummy Mojiback is on a distinguished road
    Регистрация
    20.12.2017
    Сообщений
    4
    Вес репутации
    0

    По умолчанию Сравнение структур

    Здравствуйте! У меня созрел следующий вопрос: как сравнить несколько динамических структур по определенным полям?
    Имеется следующий код:
    Код :
    1. #include <iostream>
    2. #include <fstream>
    3. #include <iomanip>
    4. using namespace std;
    5.  
    6. struct tour_agency
    7. {
    8.     char name[15];
    9.     char tour[15];
    10.     char country[15];
    11.     int duration;
    12.     float price;
    13. };
    14.  
    15. tour_agency* AddStruct(tour_agency* Obj, const int amount) // функция выделения памяти для структуры
    16. {
    17.     if (amount == 0)
    18.     {
    19.         Obj = new tour_agency[amount + 1];
    20.     }
    21.     else
    22.     {
    23.         tour_agency* tempObj = new tour_agency[amount + 1];
    24.         for (int i = 0; i < amount; i++)
    25.         {
    26.             tempObj[i] = Obj[i];
    27.         }
    28.         delete[] Obj;
    29.         Obj = tempObj;
    30.     }
    31.     return Obj;
    32. }
    33.  
    34. void setData(tour_agency* Obj, const int amount) // функция ввода данных в структуры
    35. {
    36.     cout << "Название агенства: ";
    37.     cin.getline(Obj[amount].name, 15);
    38.     cout << "Тур: ";
    39.     cin.getline(Obj[amount].tour, 15);
    40.     cout << "Страна: ";
    41.     cin.getline(Obj[amount].country, 15);
    42.     cout << "Длительность тура: ";
    43.     cin >> Obj[amount].duration;
    44.     cout << "Стоимость: ";
    45.     cin >> Obj[amount].price;
    46.     cout << endl;
    47. }
    48.  
    49. void showData(const tour_agency* Obj, const int amount) // функция вывода таблицы с введенными данными и записи в файл
    50. {
    51.     cout << endl << "Введите название выходного файла (не более 20 символов!): ";
    52.     char file_name[20];
    53.     cin >> file_name;
    54.     strcat_s(file_name, ".txt");
    55.     ofstream out_file(file_name);
    56.     system("cls");
    57.     cout << "№ " << " Агенство\t" << setw(5) << "Тур\t" << setw(8) << "Страна\t" << setw(5) << "Длительность\t" << setw(5) << "Цена\t" << endl;
    58.     out_file << "№ " << " Агенство\t" << setw(5) << "Тур\t" << setw(8) << "Страна\t" << setw(5) << "Длительность\t" << setw(5) << "Цена\t" << endl;
    59.     cout << "----------------------------------------------------------------" << endl;
    60.     out_file << "----------------------------------------------------------------" << endl;
    61.     for (int i = 0; i < amount; i++)
    62.     {
    63.         cout << i + 1 << "  " << Obj[i].name << '\t' << Obj[i].tour << '\t' << Obj[i].country << '\t' << Obj[i].duration << '\t' << setw(4) << Obj[i].price << endl;
    64.         out_file << i + 1 << "  " << Obj[i].name << '\t' << Obj[i].tour << '\t' << Obj[i].country << '\t' << Obj[i].duration << '\t' << setw(4) << Obj[i].price << endl;
    65.     }
    66.     cout << endl;
    67.     system("pause");
    68. }
    69.  
    70. int main()
    71. {
    72.     setlocale(0, "");
    73.     tour_agency* our_tour_agency = 0;
    74.     int tour_agency_amount = 0;
    75.     int u_choice = 0; //  продолжить или остановить ввод данных
    76.  
    77.     do
    78.     {
    79.         our_tour_agency = AddStruct(our_tour_agency, tour_agency_amount);
    80.         setData(our_tour_agency, tour_agency_amount);
    81.  
    82.         tour_agency_amount++;
    83.  
    84.         cout << "Продолжить ввод данных? (1 - да, 0 - нет): ";
    85.         cin >> u_choice;
    86.         cin.get();
    87.     } while (u_choice != 0);
    88.  
    89.     showData(our_tour_agency, tour_agency_amount);
    90.  
    91.     delete[] our_tour_agency;
    92.     return 0;
    93. }

  2. По умолчанию

     
    Хотите избавиться от рекламы? Зарегистрируйтесь
  3. #2
    Moderator Куратор
    system architect
    Romeo is on a distinguished road Аватар для Romeo
    Регистрация
    02.03.2004
    Адрес
    Крым, Севастополь
    Возраст
    36
    Сообщений
    3,091
    Вес репутации
    21

    По умолчанию Re: Сравнение структур

    Вопрос не очень понятен. Проблема синтаксическая или логическая? Как я понимаю, имеются в виду не структуру, а объекты структур, верно? В чём проблема объявления оператора == ?
    Entites should not be multiplied beyond necessity @ William Occam
    ---
    Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
    ---
    Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.

+ Ответить в теме

Похожие темы

  1. массив структур
    подскажите как сделать массив структур и заполнить его(через функцию) . короче я хочу сделать телефонный справочник помогите
    от Slavik077 в разделе C и C++
  2. Использование циклических структур
    Я написал программу с использование циклических структур,которая решает функцию,но сделал без одного оператора цикла. Операторы цикла: внешний...
    от MegaHandsome в разделе задачи на Паскале и Delphi
  3. Сортировка массива структур
    Почему-то сортировка не работает. Вообще совсем. Даже не знаю в чем дело, в сортировке или в структуре. Помогите, пожалуйста, исправить. typedef...
    от request в разделе C и C++
  4. Массив структур и функции
    Есть задачка. Необходимо подсчитать кол-во комбинаций карт на руках у игрока в 5-карточном покере. Реализовать через массив структур. Вобщем-то...
    от Dragon в разделе C и C++
  5. масив структур
    Здрасте. Я сейчас самостоятельно учу С++ поэтому небыло у кого спросить решил пойти за помощью на этот форум. Ближе к телу. Тут есть задача на...
    от pycha в разделе C и C++

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения