1. Условие
Багаж пассажира характеризуется количеством вещей и их общим весом. Дан массив, содержащий информацию о багаже нескольких пассажиров. Определить, имеются ли два пассажира, багажи которых совпадают по числу вещей и различаются по весу не более чем на 0.5 кг.
2. Решение
Оператор задает количество пассажиров. Программа динамически выделяет блок оперативной памяти под массив структур, в которых хранится информация о пассажирах. В цикле оператор производит инициализацию массива структур. Далее массив обрабатывается: ищутся два пассажира, для которых выполняются заданные условия.
3. Алгоритм решения
4. Текст программы
1 : #include <stdio.h> 2 : #include <conio.h> 3 : #include <math.h> 4 : #include <alloc.h> 5 : #define DATA struct tabel 6 : DATA 7 : { 8 : int num; 9 : int kol; 10: int kg; 11: int gr; 12: }*b; 13: void main() 14: { 15: int i, j, n, s; 16: clrscr( ); 17: printf( "\n Введите кол-во пассажиров n (n-целое,n>0) " ); 18: scanf( "%d", &n ); 19: b=(DATA*)malloc( n*sizeof(DATA) ); 21 for( i=0; i<n; i++ ) 20: { 21: (b+i)->num=i+1; 22: printf( "\n Введите кол-во вещей %d-ro пассажира ", i+1 ); 23: scanf( "%d", &(b+i)->kol ); 24: printf( "\n Введите массу вещей %d-ro пассажира: ", i+1 ); 25: printf( "\n \t Kr:" ); 26: scanf( "%d", &(b+i)->kg ); 27: printf( "\n \t гр:" ); 28: scanf("%d",&(b+i)->gr); 29: } 30: clrscr(); 31: printf("\n Пассажир ___ Количество вещей ____ Масса вещей \n"); 32: for (i=0; i<n; i++) 33: printf ("____ %9d ____________ %3d ___________ %10d.%кг _\n", (b+i)->num, 34: (b+i)->kol, (b+i)->kg, (b+i)->gr ); 35: printf("\n Совпадают по количеству вещей и различаются по весу вещей не 36: более чем на 0,5 кг пассажиры: \n" ); 37: for (i=0; i<n; i++) 38: for (j=0; j<n; j++) 39: if (i!=j && (b+i)->kol==(b+j)->kol && 40: fabs(((b+i)->kg+.001*(b+i)->gr)-((b+j)->kg+.001*(b+j)->gr))<=0.5) 41: printf ( "\n \t \t %d %10d", (b+i)->num, (b+j)->num); 42: printf( "\n \n \n Для завершения программы введите любой символ "); 43: getch( ); 44: free(b); 45: }
5. Работа программы
Введите количество пассажиров n (n-целое,n>0)
3
Введите количество вещей 1-го пассажира 6
Введите массу вещей 1-го пассжира кг.: 5 гр.: 900
Введите количество вещей 2-го пассажира 6
Введите массу вещей 2-го пассажира кг.: 6 гр.: 0
Введите количество вещей 3-го пассажира 5
Введите массу вещей 3-го пассажира кг.: 6 гр.: 300
Пассажир _____ Количество вещей _____ Масса вещей
___ 1 _______________ 6 ______________ 5,900 кг _
___ 2 _______________ 6 ______________ 6,0 кг ___
___ 3 _______________ 5 ______________ 6,300 кг _
Совпадают по количеству вещей и различаются по весу не более чем на 0,5 кг пассажиры:
1 2
2 1
Для завершения программы введите любой символ
6. Проверка
Программа работает корректно.