Сортировка структуры по убыванию или возрастанию в зависимости от введенного символа - 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