Не удается отсортировать записи по возрастанию номера рейса.
Код:
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <locale.h>
struct AEROFLOT
{
char CITY[30];
int NUM;
char TYPE[30];
};
AEROFLOT* filmas( int n )
#if 1
{
char str[] = "city i";
char str1[] = "type i";
AEROFLOT *AIR = (struct AEROFLOT*) malloc(n * sizeof(struct AEROFLOT));
srand( (unsigned) time( NULL ) );
for ( int i = 0 ; i < n ; i++)
{
str[5] = char(i+49);
strcpy( AIR[i].CITY, str );
str1[5] = char(i+49);
strcpy( AIR[i].TYPE, str1 );
AIR[i].NUM = rand() % 100;
}
return AIR;
}
#else
{
AEROFLOTT *AIR = (struct AEROFLOT*) malloc(n * sizeof(struct AEROFLOT));
for ( int i = 0 ; i< n; i++)
{
fflush(stdin);
printf("Введите название населенного пункта : ");
scanf("%s",&air[i].city);
printf("Введите номер рейса : ");
scanf("%d",&air[i].num);
printf("Введите тип самолёта :");
scanf("%s",&air[i].type);
printf("<-------------------------------==============------------------------------->\n");
}
return AIR;
}
#endif
void ordering( int n, AEROFLOT *AIR)
{
if( !AIR ) return ;
int x = 1;
do
{
x=0;
for (int i = 1; i < n; i++)
{
if(AIR[i].NUM<AIR[i+1].NUM)
{
AIR[0]=AIR[i];
AIR[i]=AIR[i+1];
AIR[i+1]=AIR[0];
x=1;
}
}
}
while(x);
}
void printstruct( AEROFLOT *AIR )
{
printf( "Номер рейса : %d, название населенного пункта : %s, тип самолёта : %s \n", AIR->NUM, AIR->CITY, AIR->TYPE );
}
void printstructs( int n, AEROFLOT *AIR )
{
for ( int i = 0 ; i < n; i++ )
printstruct( &AIR[i] );
}
void pointsearch( int n, AEROFLOT *AIR )
{
char check_nazv[20];
printf("\nВведите название населенного пункта : ");
fflush(stdin);
gets (check_nazv);
for ( int i = 0; i < n; i++ )
if (strcmp( check_nazv, AIR[i].CITY ) == 0)
printstruct( AIR + i );
}
void task1()
{
int n;
printf("Введите количество рейсов : ");
scanf("%d", &n);
printf("\n");
AEROFLOT* AIR = filmas(n);
printstructs(n, AIR);
ordering(n, AIR);
printf("\n\n");
printstructs(n, AIR);
pointsearch(n, AIR);
free( AIR );
}
int main ()
{
setlocale(LC_ALL, "Russian");
task1();
system("pause");
return 0;
}
вот что выдаёт в результате : (скриншот в правом углу)