Как можно сравнить элементы массива?

194
03 октября 2017, 06:12

Здраствуйте. Мне нужно добавить в программу сравнение: верно ли , что название пунктов назначения совпадают у двух поездов. Я не знаю как это сделать. Можете подсказать?

#include <iostream>
#include <cctype>
#include <cstring>
#include <cstdlib>
using namespace std;
const int SIZE = 100;
struct Train {
    char name[40];
    int number;
    double times;
} train[SIZE];
void enter(),init_list(),display(),input(int i);
int menu();
int main()
{
    char choice;
    init_list();
    while (1) {
        choice = menu();
        switch(choice) {
            case 'e' : enter();
            break;
            case 'd' : display();
            break;
            //case 'u': update();
            break;
            case 'q': return 0;
        }
    }
    return 0;
}
void init_list()
{
    int t;
    for(t=0; t<SIZE; t++ ) *train[t].name = '\0';
}
int menu()
{
        char ch;
        cout << '\n';
        do {
            cout << "(E)nter\n"; // Ввести новый элемент.
            cout << "(D)isplay\n"; // Отобразить всю ведомость.
            cout << "(Q)uit\n\n"; // Выйти из программы.
            cout << "Выберите команду: ";
            cin >> ch;
        }while(!strchr("eduq", tolower(ch)));
    return tolower(ch);
}
void enter()
{
    int i;
    for(i=0; i<SIZE; i++)
        if(!*train[i].name) break;
    if(i==SIZE) {
        cout << "Список полон.\n";
    return;
    }
    input(i);
}
void input(int i) {
    cout <<"Пункт назначения: ";
     cin >>train[i].name;
     cout <<endl;
    cout <<"Номер поезда: ";
     cin >>train[i].number;
    cout <<"Время отправления: ";
     cin >>train[i].times;
}
void display()
{
    int t;
    for(t=0; t<SIZE; t++) {
        if(*train[t].name) {
            cout << "Пункт назначения: " << train[t].name <<endl;
            cout << "Номер поезда: " << train[t].number <<endl;
            cout << "Время отправления: " << train[t].times<<endl;
        }
    }
}
Answer 1

Если описать как string

string name;

Тогда сравнение корректно с использованием == Также cstring надежнее и получится с++, а не смесь с С. Вы задали длину 40. А если будет введено больше? С string об этом не надо беспокоиться.

Answer 2

Для сравнения С-строк есть функция strcmp.

READ ALSO
Передать класс в конструкторе

Передать класс в конструкторе

Есть конструктор WindowMgmt как присвоить полю window первый аргумент

156
Удваивание вывода при простом парсинге csv в C++

Удваивание вывода при простом парсинге csv в C++

Я написал этот код, и я не могу понять, почему он удваивает строку, когда я компилирую и запускаю ее

157
Проблемы с GCC в MinGW

Проблемы с GCC в MinGW

gcc: installation problem, cannot exec `cc1': No such file or directory

195
Как обратиться к #include &ldquo;..&rdquo; уровнем выше?

Как обратиться к #include “..” уровнем выше?

Наверно, я туплюУ меня есть файл "stdafx

214