Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.12.2016, 01:07   #11
Vladkp
Пользователь
 
Регистрация: 05.10.2016
Сообщений: 24
По умолчанию

Цитата:
Сообщение от Croessmah Посмотреть сообщение
По логике - все данные о поезде.
Иначе получается, что было:
Имя_поезда_1 Данные_поезда_1
Имя_поезда_2 Данные_поезда_2
А после сортировки получилось:
Имя_поезда_2 Данные_поезда_1
Имя_поезда_1 Данные_поезда_2
т.е. данные уже неверные.

Плюс вот это:
Код:
			if (found == false) {
				cout << "Поездов на такую дату к сожалению нет! ";
			}
Надобно вынести за пределы цикла.
Код:
for (int i = 0; i < n; i++) {
		for (int j = 1; j < n; j++) {
			if (strcmp(RASP[j - 1].Nazv, RASP[j].Nazv) > 0) {
				swap(RASP[j - 1].Nazv, RASP[j].Nazv);
                                swap(RASP[j - 1].NUMR, RASP[j].NUMR)
                                swap(RASP[j - 1].Date.day, RASP[j].Date.day)
                                swap(RASP[j - 1].Date.month, RASP[j].Date.month)
                                swap(RASP[j - 1].Date.year, RASP[j].Date.year)
                                swap(RASP[j - 1].Time.hour, RASP[j].Time.hour)
                                swap(RASP[j - 1].Time.min, RASP[j].Time.min)
                                swap(RASP[j - 1].Time.sec, RASP[j].Time.sec)



			}
		}
	}
типо вот так? а с циклом что там? куда и что вынести или занести ? :D
Vladkp вне форума Ответить с цитированием
Старый 26.12.2016, 10:59   #12
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

это неверно.
Цитата:
Сообщение от Vladkp Посмотреть сообщение
swap(RASP[j - 1].Nazv, RASP[j].Nazv);
попробуйте так: (у меня нет C, чтобы проверить)
Код:
    swap(RASP[j - 1], RASP[j]);
если это не сработает.
тогда поступить можно так:
Код:
TIMETABLE temp;
for (int i = 0; i < n; i++) {
		for (int j = 1; j < n; j++) {
			if (strcmp(RASP[j - 1].Nazv, RASP[j].Nazv) > 0) {
                              temp = RASP[j - 1]; RASP[j - 1] = RASP[j]; RASP[j] = temp;
			}
		}
	}
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.12.2016, 17:45   #13
Vladkp
Пользователь
 
Регистрация: 05.10.2016
Сообщений: 24
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
это неверно.


попробуйте так: (у меня нет C, чтобы проверить)
Код:
    swap(RASP[j - 1], RASP[j]);
если это не сработает.
тогда поступить можно так:
Код:
TIMETABLE temp;
for (int i = 0; i < n; i++) {
		for (int j = 1; j < n; j++) {
			if (strcmp(RASP[j - 1].Nazv, RASP[j].Nazv) > 0) {
                              temp = RASP[j - 1]; RASP[j - 1] = RASP[j]; RASP[j] = temp;
			}
		}
	}
у меня проблема в том, когда скомпилировалось и вроде выдало всю норм информацию, пишет "Для продолжения нажмите любую клавишу" когда нажимаю оно не закрывается, а снова "Введите дату (день/месяц/год) отправления поезда : Kiev № 755 26 12 2016 16 42 0
т.е не правильно как то работает
вот скрин, после Kiev № 755 26 12 2016 16 42 0 какой то бред
http://radikal.ru/lfp/s019.radikal.r...3bcd9t.jpg/htm

Последний раз редактировалось Vladkp; 26.12.2016 в 18:00.
Vladkp вне форума Ответить с цитированием
Старый 26.12.2016, 17:53   #14
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Вам уже про эту ошибку выше сказали же!

Вынесите эти строки ЗА ЦИКЛ.
Цитата:
Сообщение от Vladkp Посмотреть сообщение
Код:
if (found == false) {
				cout << "Поездов на такую дату к сожалению нет! ";
			}
			system("pause");
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.12.2016, 18:06   #15
Vladkp
Пользователь
 
Регистрация: 05.10.2016
Сообщений: 24
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Вам уже про эту ошибку выше сказали же!

Вынесите эти строки ЗА ЦИКЛ.
я туплю жестко, покажите куда их вынести надо
Vladkp вне форума Ответить с цитированием
Старый 26.12.2016, 19:45   #16
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Код:
#pragma region ВЫВОД СОРТИРОВКИ 
	cout << "Упорядочение записей по номерам поездов" << endl;
	for (int i = 0; i < n; i++) {
		cout << RASP[i].NUMR << endl;
        }
#pragma endregion

#pragma region ИНФОРМАЦИЯ О ПОЕЗДАХ, ДАТА КОТОРЫХ ВВЕДЕНА С КЛАВИАТУРЫ
	cout << "Введите дату (день) отправления поезда : ";
	int privet;
	bool found = false;
	cin >> privet;
	for (int i = 0; i < n; i++) {
		if (RASP[i].Date.day == privet) {
			cout << " " << RASP[i].Nazv << " № " << RASP[i].NUMR << "  " << RASP[i].Date.day << " " << RASP[i].Date.month << " " << RASP[i].Date.year << " " << RASP[i].Time.hour << " " << RASP[i].Time.min << " " << RASP[i].Time.sec << " " << endl;
			found = true;
		}
	}

	if (!found) {
		cout << "Поездов на такую дату к сожалению нет! ";
	}
	system("pause");

#pragma endregion
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.12.2016, 20:24   #17
Vladkp
Пользователь
 
Регистрация: 05.10.2016
Сообщений: 24
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Код:
#pragma region ВЫВОД СОРТИРОВКИ 
	cout << "Упорядочение записей по номерам поездов" << endl;
	for (int i = 0; i < n; i++) {
		cout << RASP[i].NUMR << endl;
        }
#pragma endregion

#pragma region ИНФОРМАЦИЯ О ПОЕЗДАХ, ДАТА КОТОРЫХ ВВЕДЕНА С КЛАВИАТУРЫ
	cout << "Введите дату (день) отправления поезда : ";
	int privet;
	bool found = false;
	cin >> privet;
	for (int i = 0; i < n; i++) {
		if (RASP[i].Date.day == privet) {
			cout << " " << RASP[i].Nazv << " № " << RASP[i].NUMR << "  " << RASP[i].Date.day << " " << RASP[i].Date.month << " " << RASP[i].Date.year << " " << RASP[i].Time.hour << " " << RASP[i].Time.min << " " << RASP[i].Time.sec << " " << endl;
			found = true;
		}
	}

	if (!found) {
		cout << "Поездов на такую дату к сожалению нет! ";
	}
	system("pause");

#pragma endregion
проблема осталась
http://radikal.ru/lfp/i079.radikal.r...c66d98.png/htm
Vladkp вне форума Ответить с цитированием
Старый 26.12.2016, 22:41   #18
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Vladkp Посмотреть сообщение
проблема осталась
программу целкиком выложите
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.12.2016, 23:22   #19
Vladkp
Пользователь
 
Регистрация: 05.10.2016
Сообщений: 24
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
программу целкиком выложите
Код:
#include <iostream>
#include <string>
#include <conio.h>

using namespace std;
struct vremya {
	int day;
	int month;
	int year;
	int hour;
	int min;
	int sec;
}
; struct TIMETABLE
{
	char Nazv[100];
	int NUMR;
	vremya Date;
	vremya Time;
};

int main() {
	setlocale(LC_ALL, "");
	int n;
	char ch;
	TIMETABLE RASP[100];
	int counter = 0;

#pragma region ВВОД МАССИВА СТРУКТУР

	cout << "Введите кол-во интересующих вас поездов ";
	cin >> n;
	for (int i = 0; i < n; i++) {
		cout << "введите место назначения на англ ";
		cin >> RASP[i].Nazv;
		cout << "введите номер поезда ";
		cin >> RASP[i].NUMR;
		cout << "введите дату отправления(день/месяц/год) : ";
		cin >> RASP[i].Date.day >> ch >> RASP[i].Date.month >> ch >> RASP[i].Date.year;
		cout << "введите время отправления (час/мин/сек) : ";
		cin >> RASP[i].Time.hour >> ch >> RASP[i].Time.min >> ch >> RASP[i].Time.sec;
	}
#pragma endregion

#pragma region СОРТИРОВКА
	for (int i = 0; i < n; i++) {
		for (int j = 1; j < n; j++) {
			if (strcmp(RASP[j - 1].Nazv, RASP[j].Nazv) > 0) {
				swap(RASP[j - 1], RASP[j]);
			}
		}
	}

#pragma endregion

#pragma region ВЫВОД СОРТИРОВКИ 

	for (int i = 0; i < n; i++) {
		cout << "Упорядочение записей по номерам поездов" << endl;
		cout << RASP[i].NUMR << endl;

#pragma endregion

#pragma region ИНФОРМАЦИЯ О ПОЕЗДАХ, ДАТА КОТОРЫХ ВВЕДЕНА С КЛАВИАТУРЫ
		cout << "Введите дату (день/месяц/год) отправления поезда : ";
		; int privet;
		bool found = false;
		cin >> privet;
		for (int i = 0; i < n; i++) {
			if (RASP[i].Date.day == privet) {
				cout << " " << RASP[i].Nazv << " № " << RASP[i].NUMR << "  " << RASP[i].Date.day << " " << RASP[i].Date.month << " " << RASP[i].Date.year << " " << RASP[i].Time.hour << " " << RASP[i].Time.min << " " << RASP[i].Time.sec << " " << endl;
				found = true;
			}
		}

			if (!found ) {
				                   cout << "Поездов на такую дату к сожалению нет! ";
			}
			system("pause");



		}
	}
Vladkp вне форума Ответить с цитированием
Старый 27.12.2016, 09:58   #20
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

извините, но, до тех пор, пока Вы не увидите разницу между

Цитата:
Код:
#pragma region ВЫВОД СОРТИРОВКИ 

	for (int i = 0; i < n; i++) {
		cout << "Упорядочение записей по номерам поездов" << endl;
		cout << RASP[i].NUMR << endl;

#pragma endregion

#pragma region ИНФОРМАЦИЯ О ПОЕЗДАХ, ДАТА КОТОРЫХ ВВЕДЕНА С КЛАВИАТУРЫ
		cout << "Введите дату (день/месяц/год) отправления поезда : ";
		; int privet;
		bool found = false;
		cin >> privet;
		for (int i = 0; i < n; i++) {
			if (RASP[i].Date.day == privet) {
				cout << " " << RASP[i].Nazv << " № " << RASP[i].NUMR << "  " << RASP[i].Date.day << " " << RASP[i].Date.month << " " << RASP[i].Date.year << " " << RASP[i].Time.hour << " " << RASP[i].Time.min << " " << RASP[i].Time.sec << " " << endl;
				found = true;
			}
		}

			if (!found ) {
				                   cout << "Поездов на такую дату к сожалению нет! ";
			}
			system("pause");



		}
	}
и вот этим:
Код:
#pragma region ВЫВОД СОРТИРОВКИ 
	cout << "Упорядочение записей по номерам поездов" << endl;
	for (int i = 0; i < n; i++) {
		cout << RASP[i].NUMR << endl;
        }
#pragma endregion

#pragma region ИНФОРМАЦИЯ О ПОЕЗДАХ, ДАТА КОТОРЫХ ВВЕДЕНА С КЛАВИАТУРЫ
	cout << "Введите дату (день) отправления поезда : ";
	int privet;
	bool found = false;
	cin >> privet;
	for (int i = 0; i < n; i++) {
		if (RASP[i].Date.day == privet) {
			cout << " " << RASP[i].Nazv << " № " << RASP[i].NUMR << "  " << RASP[i].Date.day << " " << RASP[i].Date.month << " " << RASP[i].Date.year << " " << RASP[i].Time.hour << " " << RASP[i].Time.min << " " << RASP[i].Time.sec << " " << endl;
			found = true;
		}
	}

	if (!found) {
		cout << "Поездов на такую дату к сожалению нет! ";
	}
	system("pause");

#pragma endregion
думаю, что обсуждать что-то бесполезно.

особенно обратите внимание на фигурные скобочки.
найдите первую ЗАКРЫВАЮЩУЮ фигурную скобку у себя в коде и в моём примере.

p.s. а вообще не понимаю, что сложно - взять у себя в коде удалить ВСЁ ПОСЛЕ СТРОЧКИ
Код:
#pragma region ВЫВОД СОРТИРОВКИ

и вставить мой кусок кода?!!!!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно сделать задачу (по-могите). Вывести на экран сумму двух введённых с клавиатуры цифр. Milve Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 07.12.2016 16:19
Определить и вывести на экран информацию о стране (DOS 38h). Влад_+_ Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 5 22.12.2015 22:17
Определить и вывести на экран информацию о стране (DOS 38h). INSIDER73 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 20 22.12.2015 15:41
Вывести на экран информацию о всех диск windetta35555 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 31.05.2011 20:02
Нужно подправить код zeppelin58 Общие вопросы C/C++ 1 28.05.2010 12:11