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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как решить задачу без использования Bool? 
:(
    Опции темы
Uter123
Дата 28.11.2015, 22:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



 1. Описать структуру с именем TRAIN, содержащую следующие поля:
NAZN - название пункта назначения;
NUMR - номер поезда;
TIME - время отправления.

 2. Написать программу, выполняющую следующие действия:
ввод с клавиатуры данных в массив, состоящий из шести элементов типа TRAIN; записи должны быть упорядочены по времени отправления поезда;
вывод на экран информации о поездах, направляющихся в пункт, название которого введено с клавиатуры; 
если таких поездов нет, выдать на дисплей соответствующее сообщение.
Код

#include "stdafx.h"
#include <iostream>
#include <locale>
#include <string>
#define Num 6
using namespace std;

struct TRAIN    {
char NAZN[20];
int NUMR;
float TIME;
};

TRAIN RASP[Num];

int main()
{
setlocale(LC_ALL,"Russian");
for(int i=0; i<Num;i++)
{
cout<<"Введите место назначения: ";
cin>>RASP[i].NAZN;
cout<<"Введите номер поезда: ";
cin>>RASP[i].NUMR;
cout<<"Введите время отправления: ";
cin>>RASP[i].TIME;
cout<<endl;
}

for (int i=0; i<Num; i++)
{
for(int j=0; j<Num; j++)
{
if(RASP[i].TIME < RASP[j].TIME)
{
swap(RASP[i],RASP[j]);
}
}
}

cout<<"Введите пункт назначения: ";
char UserIn_NAZN[20];
cin>>UserIn_NAZN;
cout<<endl;
bool flag1, flag2 = false;
for(int i=0; i<Num;i++)
{
if( strcmp(UserIn_NAZN,RASP[i].NAZN) == 0)
{
cout<<"Место назначения: "<<RASP[i].NAZN <<"\t"<<"Номер поезда: "<<RASP[i].NUMR<<"\t"<<"Время отправления: "<<RASP[i].TIME<<endl;
flag2 = true;
}
else
{
flag1 = false;
}
}
if ( flag1 == false && flag2 == false)
{
cout<<"\t\tНа данный маршрут поездов нет!"<<endl;
}
system("pause");
return 0;
}

PM MAIL   Вверх
feodorv
Дата 29.11.2015, 03:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

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



  • Время как float? 
  • Вы бы хоть перед swap проверяли, что i > j, а то меняете структуры даже в случае правильной сортировки. А лучше воспользоваться пузырьковой сортировкой.
  • flag1 не нужен от слова совсем, тем более он даже не инициализируется
  • вместо flag2 используйте count:
    Код
    int count =0;
    ...
    if( strcmp(UserIn_NAZN,RASP[i].NAZN) == 0)
    {
    cout<<"Место назначения: "<<RASP[i].NAZN <<"\t"<<"Номер поезда: "<<RASP[i].NUMR<<"\t"<<"Время отправления: "<<RASP[i].TIME<<endl;
    count++;
    }
    if ( count == 0 )
       cout<<"\t\tНа данный маршрут поездов нет!"<<endl;



--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
math64
Дата 30.11.2015, 08:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

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



Цитата(feodorv @  29.11.2015,  03:53 Найти цитируемый пост)
Вы бы хоть перед swap проверяли, что i > j, а то меняете структуры даже в случае правильной сортировки. А лучше воспользоваться пузырьковой сортировкой.

Проверять не надо. Просто цикл по j:
Код

for(int j=0; j<i; j++)

причем сортировать можно уже во время ввода.
PS: выше я немного ошибся. Нужно найти место куда вставить новую запись и пододвинуть записи ниже этого места, чтобы освободить место для вставки.
Это назывется сортировка вставками. Обычно медленнее, чем другие методы сортировки, но пока пользователь готовится ввести новую запись, можно отсортировать уже введенные.

Это сообщение отредактировал(а) math64 - 30.11.2015, 10:30
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

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

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

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

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


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

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


 




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


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

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