C++. Помогите с решением задачи

компьютеры программирование C++

Задание следующее:
1. Описать структуру с именем AEROFLOT, содержащую следующие поля:
- название пункта назначения рейса;
- номер рейса;
- тип самолета;
2. Написать программу, выполняющую действия:
- ввод с клавиатуры данных в массив, состоящий из элементов типа AEROFLOT;
- вывод на экран пунктов назначения и номеров рейса, обслуживаемых самолетом, тип которого введен с клавиатуры;
- если таких рейсов нет, вывести соответствующее сообщение.

// AEROFLOT.cpp : main project file.
/*--------Подключение библиотек---------*/

#include "stdafx.h"
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <cstdlib>
using namespace std;
const int n=8; //количество записей (размерность массива)

int main() //главная функция программы
{
int w;
setlocale(LC_ALL,"russian_russia"); //подключение русского языка

/*--------Создание структуры---------*/
struct AeroFlot{
char destination[12]; //пункт назначения
char tip[5]; //тип самолёта
int nom; //номер рейса
} //определение массива с записями
cout<<"введите кол-во рейсов";
cin>>w;
AeroFlot *air = new AeroFlot [w];
cout<<"Ожидается ввод данных"<<'\n'<<'\n';

/*--------заполнение массива---------*/
for (int i=0; i<w; i++){
cout<<"Номер рейса: ";
cin>>air[i].nom;
cout<<"Пункт назначения: ";
cin>>air[i].destination;
cout<<"Тип самолёта: ";
cin>>air[i].tip;
cout<<'\n';
} //for

/*-------диалог с пользователем-------*/
int zapr; //запрашиваемый номер
cout<<"Поиск рейсов: ";
cin>>zapr; //ввод запроса

//-------цикл поиска совпадений-------//
cout<<'\n'<<"Информация о рейсах:"<<'\n'<<'\n';
bool flag2=false;
for (int i=0; i<w; i++){
if(zapr==air[i].nom){
cout<<"Номер рейса: "<<air[i].nom<<'\n';
cout<<"Пункт назначения: "<<air[i].destination<<'\n';
cout<<"Тип самолёта: "<<air[i].tip<<'\n'<<'\n';
flag2=true;
} //if
} //for
if (!flag2) cout<<"Рейсов нет!"<<'\n'<<'\n';

return 0;
}

я его выполнил, программа описанная выше, работает. Вопрос - Как сделать, чтобы фильтр работал по введенному названию самолета? (в данный момент работает по номеру) Меняю zapr на tip - программа выдает ошибку. Не могу определиться с типами данных. Помогите пожалуйста.
Заранее благодарен!
Ответы:
Если меняешь zapr на tip (int на char), то нужно заменить air[i].nom на air[i].tip
//----
char type; //запрашиваемый тип  (было int zapr;)
cout<<"Поиск рейсов: ";
cin>>type; //ввод запроса (Было cin>>zapr;)
сравнение char* с помощью == будет сравнивать не содержимое строк, а их адреса в памяти
используйте функцию strncmp() или напишите свой аналог (благо длина строки ограничена)
Быстрое и хорошее решение - используй класс string вместо массива символов. Если это невозможно, допиши функции-члены сравнения по полям в структуре AeroFlot.
Вроде так работает. Попробуйте:


15 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.