Упорядочить записи по возрастанию номера рейса - C (СИ)
Формулировка задачи:
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct AEROFLOT {
char CITY[30];
int NUM;
char TYPE[30];
}AIR[10];
const int n=10;
int search(char city[30], AEROFLOT *AIR)
{
bool flag = false;
for (int i=0; i<n; i++)
{
if(strcmp(AIR[i].CITY, city)==0)
{
printf("%d ", AIR[i].NUM);
printf("%s\n", AIR[i].TYPE);
flag= true;
}
}
if (!flag)
printf("Vubachte. Nemae litaka v te misto\n");
}
void main()
{
char city[30];
AEROFLOT AIR[n];
strcpy(AIR[0].CITY, "Italy");
AIR[0].NUM=42;
strcpy(AIR[0].TYPE, "standart");
strcpy(AIR[1].CITY, "Kyiv");
AIR[1].NUM=15;
strcpy(AIR[1].TYPE, "charter");
strcpy(AIR[2].CITY, "Kryvyi Rih");
AIR[2].NUM=21;
strcpy(AIR[2].TYPE, "shvidko");
strcpy(AIR[3].CITY, "London");
AIR[3].NUM=56;
strcpy(AIR[3].TYPE, "standart");
strcpy(AIR[4].CITY, "Kyiv");
AIR[4].NUM=16;
strcpy(AIR[4].TYPE, "standart");
strcpy(AIR[5].CITY, "Dallas");
AIR[5].NUM=234;
strcpy(AIR[5].TYPE, "standart");
strcpy(AIR[6].CITY, "Rome");
AIR[6].NUM=52;
strcpy(AIR[6].TYPE, "shvidko");
strcpy(AIR[7].CITY, "Blefusku");
AIR[7].NUM=81;
strcpy(AIR[7].TYPE, "charter");
strcpy(AIR[8].CITY, "Kingstone");
AIR[8].NUM=67;
strcpy(AIR[8].TYPE, "standart");
strcpy(AIR[9].CITY, "Kamberra");
AIR[9].NUM=32;
strcpy(AIR[9].TYPE, "shvidko");
printf("VVedite gorod\n");
scanf("%s", city);
search(city,AIR);
getch();
}Решение задачи: «Упорядочить записи по возрастанию номера рейса»
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct AEROFLOT {
char CITY[30];
int NUM;
char TYPE[30];
}AIR[10];
const int n=10;
int search(char city[30], AEROFLOT *AIR)
{
bool flag = false;
for (int i=0; i<n; i++)
{
if(strcmp(AIR[i].CITY, city)==0)
{
printf("%d ", AIR[i].NUM);
printf("%s\n", AIR[i].TYPE);
flag= true;
}
}
if (!flag)
printf("Vubachte. Nemae litaka v te misto\n");
}
int main()
{
char city[30];
AEROFLOT AIR[n];
int i, min, x, j;
AEROFLOT BUF ;
strcpy(AIR[0].CITY, "Italy");
AIR[0].NUM=42;
strcpy(AIR[0].TYPE, "standart");
strcpy(AIR[1].CITY, "Kyiv");
AIR[1].NUM=15;
strcpy(AIR[1].TYPE, "charter");
strcpy(AIR[2].CITY, "Kryvyi Rih");
AIR[2].NUM=21;
strcpy(AIR[2].TYPE, "shvidko");
strcpy(AIR[3].CITY, "London");
AIR[3].NUM=56;
strcpy(AIR[3].TYPE, "standart");
strcpy(AIR[4].CITY, "Kyiv");
AIR[4].NUM=16;
strcpy(AIR[4].TYPE, "standart");
strcpy(AIR[5].CITY, "Dallas");
AIR[5].NUM=234;
strcpy(AIR[5].TYPE, "standart");
strcpy(AIR[6].CITY, "Rome");
AIR[6].NUM=52;
strcpy(AIR[6].TYPE, "shvidko");
strcpy(AIR[7].CITY, "Blefusku");
AIR[7].NUM=81;
strcpy(AIR[7].TYPE, "charter");
strcpy(AIR[8].CITY, "Kingstone");
AIR[8].NUM=67;
strcpy(AIR[8].TYPE, "standart");
strcpy(AIR[9].CITY, "Kamberra");
AIR[9].NUM=32;
strcpy(AIR[9].TYPE, "shvidko");
//printf("VVedite gorod\n");
//scanf("%s", city);
//search(city,AIR);
x = 0;
for ( i = 0; i <= n - 1; i++ )
{
min = AIR[i].NUM;
for ( j = i + 1; j <= n - 1; j++ )
{
if ( AIR[j].NUM < min )
{
min = AIR[j].NUM;
x = j;
}
}
BUF = AIR[x];
AIR[x] = AIR[i];
AIR[i] = BUF;
}
for ( i = 0; i < n; i++ )
{
printf ( "%d %s %s \n", AIR[i].NUM, AIR[i].CITY, AIR[i].TYPE);
}
getch();
}
Объяснение кода листинга программы
В этом коде представлен некоторый набор структур данных, состоящий из названий городов, номеров рейсов и типов перелетов. Сначала объявляется структура AEROFLOT, которая содержит три поля: CITY (название города), NUM (номер рейса) и TYPE (тип перелета). Затем создается массив AIR из 10 структур AEROFLOT. Далее, функции main() и search() объявляются. В функции main() создается пустой массив city для ввода названия города, а затем заполняется массив AIR данными о рейсах. После этого происходит сортировка массива AIR по номеру рейса с помощью алгоритма сортировки выбором. В конце функции main() происходит печать отсортированного массива AIR. Код также включает функцию search(), которая выполняет поиск в отсортированном массиве AIR по названию города. Однако, в данном коде функция search() не вызывается.