4 / 3 / 1
Регистрация: 28.11.2019
Сообщений: 53

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

13.12.2019, 19:53. Показов 2615. Ответов 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru