Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
4 / 3 / 1
Регистрация: 28.11.2019
Сообщений: 53

Разработка программ с интегрированными типами данных (структуры данных)

13.12.2019, 19:53. Показов 2570. Ответов 27
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Может кто-нибудь помочь с этим? Как задать структуру я, вроде, понимаю. Но не могу понять, как с ней правильно работать.

Описать структуру AEROFLOT, которая включает в себя следующие поля:
1) NAZM – название пункта назначения.
2) NUMR – номер рейса.
3) TIP – тип самолёта.
Написать программу, которая выполняет следующие действия:
1) Введение с клавиатуры данных в массив AIRPORT, который состоит из семи эллементов AEROFLOT; записи должны быть размещены в алфавитном порядке по названию пунктов назначения.
2) Вывод на экран пунктов назначения и номеров рейсов, обслуживаемых самолетом, тип которого введен с клавиатуры.
3) Если таких рейсов нет, вывести на дисплей соответствующее сообщение.

Добавлено через 31 минуту
Пока есть такой код. Пока делал, столкнулся ещё с одной проблемой - если память выделять динамически, данные записываются неправильно (второй массив вылазит на первый).
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <stdio.h>
#include <stdlib.h>
#define n 7
 
struct aeroflot
{
    char destination[100];
    char type_aircraft[100];
    int flight_number;
} aeroflot;
 
struct aeroflot airport[n];
 
int main()
{
    printf("Enter flight details: \n");
    //aeroflot.destination = (char*) malloc(50*sizeof(char));
    //aeroflot.type_aircraft = (char*) malloc(50*sizeof(char));
    for(int i = 0; i < n; i++)
    {
        scanf("%s", &(airport[i].destination));
        scanf("%s", &(airport[i].type_aircraft));
        scanf("%d", &(airport[i].flight_number));
    }
    for (int i = 0; i < n; i++)
    {
        printf("%d\t", airport[i].flight_number);
        printf("%s\t", airport[i].type_aircraft);
        printf("%s\n", airport[i].destination);
    } 
    system("pause");
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.12.2019, 19:53
Ответы с готовыми решениями:

Разработка динамической структуры данных: deque
Здравствуйте . Есть ли у кого то пример программы записи динамической структуры в бинарный файл, и вывод оттуда . Двухсторонняя очередь ,...

Составление и отладка программ с комбинированными типами данных (записи)
Написать программу, которая формирует файл записей данной структуры: Type sportsmen = Record name: String; strana: String; ...

Разработка алгоритмов и программ с анализом организации данных
Опишите и постройте с помощью двумерного массива Sps линейный однонаправленный список из семи целых чисел и сделайте этот список пустым....

27
Мозгоправ
 Аватар для L0M
1745 / 1039 / 468
Регистрация: 01.10.2018
Сообщений: 2,138
Записей в блоге: 2
14.12.2019, 17:05
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Ashoka007 Посмотреть сообщение
Вылазит такая ошибка на рядок с qsort: "invalid conversion from 'int (*)(const aeroflot*, const aeroflot*)' to 'int (__attribute__((cdecl)) *)(const void*, const void*)' [-fpermissive]"...
Тогда так:
C
1
2
3
4
5
6
7
int comparator(const void* op1, const void* op2) {
    return strcmp(((const aeroflot*)op1)->destination, ((const aeroflot*)op2)->destination);
}
 
// ...
 
qsort(airport, n, sizeof(aeroflot), comparator);
Вашему компилятору не понравилось несовпадение типов указателей - надо привести явно.

В решении analogov net в #13 создаются две лишние переменные и выполняются два оператора присваивания. В некоторых случаях это может быть неприемлемо.
2
4 / 3 / 1
Регистрация: 28.11.2019
Сообщений: 53
14.12.2019, 17:17  [ТС]
Ага, понял... А что стрелочки (->) обозначают?
0
 Аватар для analogov net
2532 / 1130 / 495
Регистрация: 17.11.2018
Сообщений: 2,840
14.12.2019, 17:19
Цитата Сообщение от L0M Посмотреть сообщение
в #13 создаются две лишние переменные и выполняются два оператора присваивания. В некоторых случаях это может быть неприемлемо.
L0M, действительно, сначала я написал так, без дополнительных переменных:
C
1
    return ( strcmp( ( *( aeroflot* )a ).destination, ( *( aeroflot* )b ).destination ) );
, но потом подумал, что это будет немного сложнее для понимания ТС и переделал по другому.

Добавлено через 1 минуту
Против L0M`а нет приёма...
1
4 / 3 / 1
Регистрация: 28.11.2019
Сообщений: 53
14.12.2019, 17:20  [ТС]
Цитата Сообщение от analogov net Посмотреть сообщение
это будет немного сложнее для понимания ТС
Да, есть немного...
0
Мозгоправ
 Аватар для L0M
1745 / 1039 / 468
Регистрация: 01.10.2018
Сообщений: 2,138
Записей в блоге: 2
14.12.2019, 18:26
Цитата Сообщение от Ashoka007 Посмотреть сообщение
А что стрелочки (->) обозначают?
Это обращение к полю структуры по указателю.

C
1
2
3
4
5
6
aeroflot A;           // A - переменная-структура
aeroflot *pA = &a;    // pA - указатель на неё
 
A.flight_number = 5;      // присвоение полю структуры значения
(*pA).flight_number = 5;  // присвоение полю структуры значения
pA->flight_number = 5;    // присвоение полю структуры значения
Последние две строки делают в точности одно и то же. Просто разная форма записи.

Добавлено через 38 минут
Можно ещё такой вариант:
C
1
2
3
4
5
6
7
8
9
int comparator(const void* op1, const void* op2) {
    const aeroflot* pa1 = (const aeroflot*)op1;
    const aeroflot* pa2 = (const aeroflot*)op2;
    return strcmp(pa1->destination, pa2->destination);
}
 
// ...
 
qsort(airport, n, sizeof(aeroflot), comparator);
Через промежуточные типизированные указатели. Так удобно делать, когда нужны каки-то дополнительные телодвижения с данными, переданными через нетипизированные (void *) указатели, что бы не городить каждый раз приведения типа.
2
4 / 3 / 1
Регистрация: 28.11.2019
Сообщений: 53
14.12.2019, 19:50  [ТС]
Оо, всё... До меня дошло... Спасибо!
Кстати, а куда делась кнопка "спасибо"?
0
 Аватар для analogov net
2532 / 1130 / 495
Регистрация: 17.11.2018
Сообщений: 2,840
14.12.2019, 19:56
Цитата Сообщение от Ashoka007 Посмотреть сообщение
Кстати, а куда делась кнопка "спасибо"?
Ashoka007, может быть, потому что ты пометил тему решенной, она у тебя исчезла?
Ты не против, если я скажу "спасибо" L0M`у от твоего имени?
0
4 / 3 / 1
Регистрация: 28.11.2019
Сообщений: 53
15.12.2019, 10:44  [ТС]
Нет, конечно не против.
Кстати, кнопка таки появилась. Надо бы правила форума перечитать..

Добавлено через 15 минут
Кстати, такой ещё вопрос... А можно как-то устроить проверку на переполнение памяти?
Ну, если пользователь введёт слишком длинную строку.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.12.2019, 10:44

Разработка алгоритмов и программ с анализом организаци данных
Помогите, пожалуйста с заданием. Опишите и постройте с помощью двумерного массива Sps линейный однонаправленный список из семи целых чисел...

Разработка алгоритмов и программ с анализом организации данных
Постройте очередь из 7-ти символов - ‘k’, ‘l’,‘m’, ‘n’, ‘o’, ‘p’, ‘r’. Выведите из очереди три символа ‘l’, ‘m’, ‘r’ и добавьте в конец...

Разработка и отладка программ ввода- вывода данных в файлы
Задание : Заполнить целочисленный двумерный массив случайными числами и записать его в файл в виде матрицы. Прочитать содержимое фай-ла,...

Разработка и отладка алгоритмов и программ с использованием структур данных.
народ , помогите переделать задачу под это условие , плиз оч нужно , приведённый мною код это аналогичная задача но под другое условие ))) ...

Разработка и отладка алгоритмов и программ с использованием структур данных
Дан список преподавателей, предмет и количество часов по предмету, ввести не менее8 пре-подавателей, заполнить структуру, и вывести фамилии...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
Новые блоги и статьи
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов. Логика кажется понятной: 1. Находим ключевые слова. 2. Добавляем их на. . .
Знание — сила: Доктрина интенциональности знаний, углубление в формулу
Hrethgir 01.08.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11957&stc=1&d=1785567302 Знаменитый афоризм Фрэнсиса Бэкона «Знание — сила» (Scientia potentia est) в массовой культуре принято понимать. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru