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

Объяснение кода листинга программы

  1. Ввод структуры с полями begst, numer, term, world, объём которой составляет 3 элемента
  2. Ввод данных в структуру с помощью функции cin
  3. Ввод числа n для выбора направления сортировки
  4. Использование условного оператора if для определения направления сортировки
  5. Сортировка массива структур по выбранному направлению с помощью цикла for и условных операторов if
  6. Вывод отсортированного массива на экран с помощью цикла for и функции cout
  7. Ввод номера маршрута для поиска с помощью функции scanf
  8. Поиск маршрута в массиве структур с помощью цикла for и условного оператора if
  9. Вывод найденного маршрута на экран с помощью функций cout
  10. Проверка наличия маршрута с помощью переменной f
  11. Вывод сообщения об отсутствии маршрута с помощью функции printf
  12. Возврат значения 0 функцией main

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.6 из 5
Похожие ответы