Вывод элементов структуры - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Приветствую. Есть структура:
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++;
        }
    }
Итого у нас должно создастся 50 элементов. Теперь нужно отобразить имя каждого из них. Условие выхода из цикла, в котором будем перебирать, нужно указать размер нашего массива пассажиров. Вот тут у меня проблема, сколько не гуглил, находил разные конструкции вывода размера массива структурного типа: sizeof(PASSENGERS) и sizeof(PASSENGERS)/sizeof(PASSENGERS[0]) и sizeof(PASSENGERS)/sizeof(struct PASSENGER). Однако первая конструкция выводит мне, как я понимаю размер структуры в байтах, а именно 160, вторая и третья - число 10. Ну и собственно не догоняю, почему в цикле не выводится значение поля одного из элементов PASSENGERS[0].name, вернее выводится что-то вроде 819746560, а должно от 0 до 49. Прошу помочь мне разобраться.

Решение задачи: «Вывод элементов структуры»

textual
Листинг программы
#define ABS(a)  a < 0 ? -a : a
ABS(10-20) /*Тут, без скобок получим полный бред*/

Объяснение кода листинга программы

  1. В коде определен макрос ABS(a), который принимает один аргумент типа int (a).
  2. Макрос возвращает абсолютное значение аргумента, т.е. если a < 0, то возвращается -a, иначе возвращается a.
  3. Затем вызывается макрос ABS с аргументом 10-20.
  4. 10-20 равно -10, поэтому возвращается -(-10) = 10.
  5. Результат 10 выводится на экран.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.182 из 5
Похожие ответы