Сортировка структуры по убыванию или возрастанию в зависимости от введенного символа - C (СИ)
Формулировка задачи:
Написал программу вроде работает, беда только в том , что когда нажимаеш 1 в запущенной прогррамме , то сортировка происходит по возрастанию, а када 0 так же ...,,, как сделать чтобы при нажатии 0 сортировка была на убывание ... помогите пажалуйсто((
#include "stdafx.h" #include <string.h> #include <string> #include <iostream> #include <math.h> #include <conio.h> #include <stdio.h> #include <Windows.h> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { setlocale(LC_CTYPE,"Russian"); struct marsh { char begst [3]; char numer [3]; char term [3]; char world; }; marsh mas[3], temp; int math; for (int i=0;i<3;i++) { //cout<<"\n"; cout<<"Введите пункт отправления:";cin>>mas[i].begst; cout<<"введите пункт назначения:";cin>>mas[i].term; cout<<"Введите номер маршрута:";cin>>mas[i].numer; cout<<"--------------------------------\n"; } cout<<"введите 1 для возрастания , введите 0 для убывания = "; int n; cin>>n; if (n>0) { for (int i=0;i<3;i++) { for (int j=0;j<3;j++) { if (atoi(mas[i].numer)<atoi(mas[j].numer)) { temp=mas[j]; mas[j]=mas[i]; mas[i]=temp; } } } } if (n=0) { for (int i=0;i<3;i++) { for (int j=0;j<3;j++) { if (atoi(mas[i].begst)>atoi(mas[j].begst)) { temp=mas[j]; mas[j]=mas[i]; mas[i]=temp; } } } } for (int i=0;i<3;i++) { cout<<"пункт отправления:"<<mas[i].begst; cout<<"\nпункт назначения:"<<mas[i].term; cout<<"\nномер маршрута:"<<mas[i].numer; cout<<"\n--------------------------------"<<"\n"; } char pp[8]; printf ("Ищем маршрут\n "); printf ("Введите номер маршрута: "); scanf("%s%*c", pp); int f = 0; for (int i=0; i<3; i++) { if (strcmp (mas[i].numer, pp) == 0) { cout<<"Пункт отправления:"<<mas[i].begst; cout<<"\nПункт назначения:"<<mas[i].term; cout<<"\n"; //f++; } } if (!f) { printf ("V %s Маршрут не найден!",pp); } getchar; return 0; }
Решение задачи: «Сортировка структуры по убыванию или возрастанию в зависимости от введенного символа»
textual
Листинг программы
#include "stdafx.h" #include <string.h> #include <string> #include <iostream> #include <math.h> #include <conio.h> #include <stdio.h> #include <Windows.h> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { setlocale(LC_CTYPE,"Russian"); struct marsh { char begst [3]; char numer [3]; char term [3]; char world; }; marsh mas[3], temp; int math; for (int i=0;i<3;i++) { //cout<<"\n"; cout<<"Введите пункт отправления:";cin>>mas[i].begst; cout<<"введите пункт назначения:";cin>>mas[i].term; cout<<"Введите номер маршрута:";cin>>mas[i].numer; cout<<"--------------------------------\n"; } cout<<"введите 1 для возрастания , введите 0 для убывания = "; int n; cin>>n; if (n==1) { for (int i=0;i<3;i++) { for (int j=0;j<3;j++) { if (atoi(mas[i].numer)<atoi(mas[j].numer)) { temp=mas[j]; mas[j]=mas[i]; mas[i]=temp; } } } } if (n==0) { for (int i=0;i<3;i++) { for (int j=0;j<3;j++) { if (atoi(mas[i].numer)>atoi(mas[j].numer)) { temp=mas[j]; mas[j]=mas[i]; mas[i]=temp; } } } } for (int i=0;i<3;i++) { cout<<"пункт отправления:"<<mas[i].begst; cout<<"\nпункт назначения:"<<mas[i].term; cout<<"\nномер маршрута:"<<mas[i].numer; cout<<"\n--------------------------------"<<"\n"; } char pp[8]; printf ("Ищем маршрут\n "); printf ("Введите номер маршрута: "); scanf("%s%*c", pp); int f = 0; for (int i=0; i<3; i++) { if (strcmp (mas[i].numer, pp) == 0) { cout<<"Пункт отправления:"<<mas[i].begst; cout<<"\nПункт назначения:"<<mas[i].term; cout<<"\n"; //f++; } } if (!f) { printf ("V %s Маршрут не найден!",pp); } getchar; return 0; }
Объяснение кода листинга программы
- Ввод структуры с полями begst, numer, term, world, объём которой составляет 3 элемента
- Ввод данных в структуру с помощью функции cin
- Ввод числа n для выбора направления сортировки
- Использование условного оператора if для определения направления сортировки
- Сортировка массива структур по выбранному направлению с помощью цикла for и условных операторов if
- Вывод отсортированного массива на экран с помощью цикла for и функции cout
- Ввод номера маршрута для поиска с помощью функции scanf
- Поиск маршрута в массиве структур с помощью цикла for и условного оператора if
- Вывод найденного маршрута на экран с помощью функций cout
- Проверка наличия маршрута с помощью переменной f
- Вывод сообщения об отсутствии маршрута с помощью функции printf
- Возврат значения 0 функцией main
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д