Задание:
"Вывести на экран пункты назначения и номера маршрутов обслуживаемых
автобусов, марка которых введена с клавиатуры. Если таких нет, вывести
на экран соответствующее сообщение".
Я вроде бы это реализовал, но выдает не найдено; я понял где у меня ошибка, но не могу понять как сделать чтобы не найдено не выводилось.
И вот мне нужно, чтобы Не найдено не выводилось, а выводилось только найденное
#include "stdafx.h"
#include
using namespace std;
struct busabroad{
char punkt[10];
int num;
char mar[10];
int price;
};
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL,"rus");
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
int n1=1, i, m;
busabroad spisok[5];
cout << "Введите данные" << endl;
for(int i=0;i<5;i++){
cout << n1++<<" форма"<< endl;
int cp=GetConsoleCP();
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
cout <<"Введите пункт назначения: ";
cin>>spisok[i].punkt;
SetConsoleCP(cp);
int cp1=GetConsoleCP();
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
cout <<"Введите номер маршрута: ";
cin>>spisok[i].num;
SetConsoleCP(cp1);
int cp2 = GetConsoleCP();
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
cout <<"Введите марку автобуса: ";
cin>>spisok[i].mar;
SetConsoleCP(cp2);
int cp3=GetConsoleCP();
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
cout <<"Введите стоимость проезда: ";
cin>>spisok[i].price;
SetConsoleCP(cp3);
}
cout <<"Список: "<< endl;
busabroad sch;
for(int i=0;i<5;i++){
for(int j=i+1;j<6;j++)
if(strcmp(spisok[i].punkt, spisok[j].punkt)>0)
{
sch=spisok[i];
spisok[i]=spisok[j];
spisok[i]=sch;}}
for(i=0;i<5;i++)
{
cout<<"Введите пункт назначения: "<
Ответ
Оформлю в виде ответа то что написал в комментарии. Нужно просто вынести вывод "не найдено" за цикл. Сейчас логика такая что на каждой итерации сравнивается строковый ключ и при равенстве выводятся значения, при неравенстве выводится "не найдено", а нужно выводить "не найдено" только один раз и только если не было ни одного совпадения ключа. Чтобы достигнуть правильного нужно создать переменную например found которая будет следить было ли найдено что-то в цикле и после цикла если found == false то вывести "не найдено".
Вот пример кода, как нужно обрабатывать найденность/ненайденность в цикле, можно запустить онлайн
#include
int main() {
bool found = false;
for (int i = 0; i < 10; ++i) {
if (i == 5) {
cout << i << endl;
found = true;
}
}
if (!found) {
cout << "Not found!" << endl;
}
return 0;
}
Комментариев нет:
Отправить комментарий