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

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

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

Приветствую. Есть структура:
Листинг программы
  1. typedef struct PASSENGER{
  2. int name;
  3. int status;
  4. int place_in_the_queue;
  5. int city;
  6. }PASSENGER;
Заполняем её:
Листинг программы
  1. #define PASSENGER_COUNT 10
  2. #define CITY_COUNT 5
  3. struct PASSENGER PASSENGERS[PASSENGER_COUNT];
  4. int passenger_number = 0;
  5. for(int i=0;i<CITY_COUNT;i++){
  6. for(int j=0;j<PASSENGER_COUNT;j++){
  7. PASSENGERS[passenger_number].name = passenger_number;
  8. PASSENGERS[passenger_number].status = 0;
  9. PASSENGERS[passenger_number].place_in_the_queue = j;
  10. PASSENGERS[passenger_number].city = i;
  11. passenger_number++;
  12. }
  13. }
Итого у нас должно создастся 50 элементов. Теперь нужно отобразить имя каждого из них. Условие выхода из цикла, в котором будем перебирать, нужно указать размер нашего массива пассажиров. Вот тут у меня проблема, сколько не гуглил, находил разные конструкции вывода размера массива структурного типа: sizeof(PASSENGERS) и sizeof(PASSENGERS)/sizeof(PASSENGERS[0]) и sizeof(PASSENGERS)/sizeof(struct PASSENGER). Однако первая конструкция выводит мне, как я понимаю размер структуры в байтах, а именно 160, вторая и третья - число 10. Ну и собственно не догоняю, почему в цикле не выводится значение поля одного из элементов PASSENGERS[0].name, вернее выводится что-то вроде 819746560, а должно от 0 до 49. Прошу помочь мне разобраться.

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

textual
Листинг программы
  1. #define ABS(a)  a < 0 ? -a : a
  2. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы