Вывод элементов структуры - 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 выводится на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д