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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.03.2022, 06:54   #1
Motisha
Новичок
Джуниор
 
Регистрация: 21.03.2022
Сообщений: 1
Восклицание Сортировка структур С++ visual studio

Я знаю, что код ужасный, но как получается...
В результате должна выводится вся информация про полеты, в пунктах прибытия которых есть хотя бы 2 буквы "а". И затем нужно отсортировать по алфавиту по пунктам.
Пробовала методом пузырька, но там какая-то проблема с temp (в нее записывается непонятно откуда взятые "МММММММММ...М") (скрин ошибки в приложении). А если через sort, то ошибка b[bi].punkt должно быть классом, а не char).
Помогите, пожалуйста, сделать работающую сортировку((
Код:
#include <cstring>
#include <iostream>
#include <algorithm>
#include <windows.h>
using namespace std;
const int N = 3;
//struct sort_class
//{
//	bool operator() (int i, int j)
//	{
//	return (b[i].punkt[0] > b[i + 1].punkt[0]);
//	}
//} sort_object;

struct PLANE {
	char punkt[15] = ""; char vrotpr[10] = ""; char vrprib[10] = ""; char vrpolet[10] = ""; char price[10] = "";
};
int main()
{
	SetConsoleCP(1251);
	SetConsoleOutputCP(1251);
	int n = 0, m = 0, l = 0, size = 0;
	char temp[15];
	struct PLANE catalog[N];
	for (int i = 0; i < N; i++) {
		cout << "Введите пункт прибытия " << endl;
		cin >> (catalog + i)->punkt;
		cout << "Введите время отправления " << endl;
		cin >> (catalog + i)->vrotpr;
		cout << "Введите время прибытия " << endl;
		cin >> (catalog + i)->vrprib;
		cout << "Время в полете" << endl;
		cin >> (catalog + i)->vrpolet;
		cout << "Введите стоимость" << endl;
		cin >> (catalog + i)->price;
		cout << endl;
	}

	PLANE* b = new PLANE[N];
	int bi = 0;
	for (int i = 0; i < N; i++) {
		m = 0;
		size = strlen(catalog[i].punkt);
		for (int j = 0; j < size; j++) {
			if ((catalog[i].punkt[j] == 'а') || (catalog[i].punkt[j] == 'А')) {
				m++;
			}
		}
		if (m == 2) {
			b[bi] = catalog[i];
			bi++;
		}
	}
	sort(b[bi].punkt.begin(), b[bi].punkt.end(), sort_object);
	//for (int i = 0; i < N; i++) { //сортировка, проблема с temp, как мне кажется
	//	for (int j = i; j < size; j++) {
	//		if ((b[i].punkt[0] > b[i + 1].punkt[0])) {
	//			PLANE temp = b[i];
	//			b[i] = b[i + 1];
	//			b[i + 1] = temp;
	//		}
	//	}
	//}

	for (int i = 0; i < bi; i++) {
		cout << "\n\n" << b[i].punkt << endl;;
		cout << " Время отправдения " << b[i].vrotpr << endl;
		cout << " Время прибытия " << b[i].vrprib << endl;
		cout << " Время в полете " << b[i].vrpolet << endl;
		cout << " Стоимость " << b[i].price << endl;
	}
	cout << endl;
	return 0;
}
Изображения
Тип файла: jpg изображение_2022-03-21_105415.jpg (79.0 Кб, 2 просмотров)
Motisha вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка массивов С++ (Visual Studio) Taodin Помощь студентам 0 20.11.2020 11:01
Сравнение строк и массив структур mfc|visual studio sonic911 Помощь студентам 1 15.05.2015 06:30
Сортировка по последней букве, С++, Visual Studio cuc789 Помощь студентам 2 14.01.2015 10:21
Функции. Сортировка вставками (Visual Studio 2010 C++) evgeny_1991 Помощь студентам 0 14.02.2014 18:42
Сортировка типизированного файла на Microsoft Visual Studio С++ Panda1 Помощь студентам 3 17.02.2013 00:26