Вывод элементов структуры - C (СИ)
Формулировка задачи:
Приветствую.
Есть структура:
Заполняем её:
Итого у нас должно создастся 50 элементов. Теперь нужно отобразить имя каждого из них. Условие выхода из цикла, в котором будем перебирать, нужно указать размер нашего массива пассажиров. Вот тут у меня проблема, сколько не гуглил, находил разные конструкции вывода размера массива структурного типа: sizeof(PASSENGERS) и sizeof(PASSENGERS)/sizeof(PASSENGERS[0]) и sizeof(PASSENGERS)/sizeof(struct PASSENGER). Однако первая конструкция выводит мне, как я понимаю размер структуры в байтах, а именно 160, вторая и третья - число 10.
Ну и собственно не догоняю, почему в цикле не выводится значение поля одного из элементов PASSENGERS[0].name, вернее выводится что-то вроде 819746560, а должно от 0 до 49.
Прошу помочь мне разобраться.
typedef struct PASSENGER{ int name; int status; int place_in_the_queue; int city; }PASSENGER;
#define PASSENGER_COUNT 10 #define CITY_COUNT 5 struct PASSENGER PASSENGERS[PASSENGER_COUNT]; int passenger_number = 0; for(int i=0;i<CITY_COUNT;i++){ for(int j=0;j<PASSENGER_COUNT;j++){ PASSENGERS[passenger_number].name = passenger_number; PASSENGERS[passenger_number].status = 0; PASSENGERS[passenger_number].place_in_the_queue = j; PASSENGERS[passenger_number].city = i; passenger_number++; } }
Решение задачи: «Вывод элементов структуры»
textual
Листинг программы
#define ABS(a) a < 0 ? -a : a ABS(10-20) /*Тут, без скобок получим полный бред*/
Объяснение кода листинга программы
- В коде определен макрос ABS(a), который принимает один аргумент типа int (a).
- Макрос возвращает абсолютное значение аргумента, т.е. если a < 0, то возвращается -a, иначе возвращается a.
- Затем вызывается макрос ABS с аргументом 10-20.
- 10-20 равно -10, поэтому возвращается -(-10) = 10.
- Результат 10 выводится на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д