0 / 0 / 1
Регистрация: 02.10.2014
Сообщений: 28
1

Не получается задать произвольный размер массива в struct

17.05.2015, 23:54. Показов 990. Ответов 2
Метки нет (Все метки)

Добрый вечер. Возникла проблема с лабараторной в универе. Не могу задать произвольный размер массива, т.е. чтобы его мог вводить пользователь с клавиатуры для массивов комбинированного типа (struct). В итоге получаю ошибку variable length array of non-pod element type 'struct flight1' Погуглив, я понял, что ошибка возникает с использованием в структуре переменной типа string и мне необходимо для нее использовать указатель. Но как это сделать в самом struct?

Вот этот кусок кода программы:

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
#include <iostream>
#include <string.h>
 
using namespace std;
 
struct flight1{
    string pointof;  //пункт посадки (вот с ним не работает)
    float dtime;     //время отправления
    float arrtime;   //время прибытия
    float flighttime; //время полета
    float cost;       //стоимость билета
};
 
int sflight(flight1 x[], int n){  //ф-ия находения сам. короткого полета
    int num = 0;  //номер полета
    float min = x[0].flighttime;
    for(int i=1; i<n; i++){
        if(x[i].flighttime<min) min=x[i].flighttime; num=i;
    }
    return(num);
}
 
int main(void){
    int n, m;
    cout<<"введите кол-во эл. в 1м массиве"<<endl;
    cin>>n;
    cout<<"введите кол-во эл. во 2м массиве"<<endl;
    cin>>m;
    struct flight1 r[n]; //массив 1  ------ ВОТ ТУТ ВЫПАДАЕТ ОШИБКА
    struct flight1 f[m]; //массив 2  --------- ВОТ ТУТ ВЫПАДАЕТ ОШИБКА
}
Текст задачи:

Создать комбинированный тип для расписание полетов самолетов (пункт посадки, время отправления, время прибытия, время полета, стоимость билета). Пользователь задает два комбинированных массива по N элементов в каждом.(для двух аэропортов). Описать функцию нахождения самого короткого полета в одном массиве. Применить функцию два раза для заданных двух аэропортов. (Так же будет уместно описать процедуру ввода комбинированного массива и процедуру вывода.)
Самое странное, что у преподавателя на машине с древним DEV C++ и WinXP похожая задача работает. Мне она говорит, что у это у меня могут быть какие-то проблемы с компилятором. У самого стоит последняя версия Xcode (6.2) на Mac OS X 10.9.5

Заранее спасибо за помощь!
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.05.2015, 23:54
Ответы с готовыми решениями:

Как задать произвольный размер массива
В общем проблема такая, есть задание (написанное каким то недалеким человеком). В нем не указано...

Как задать произвольный размер ( с клавиатуры) простой геометрической фигуре
Нужно, задать размер фигуры например круга или квадрата, но с клавиатуры. Программа будет...

не получается задать размер и цвет рамки таблицы
что не так? пишу: &lt;table style=&quot;border-color: black; border-width: 2px;&quot;&gt; но почему-то не...

Как задать размер массива и сразу же вводить элементы массива?
Походу требуется задать размер массива и сразу же вводить его элементы. Я знаю как это...

2
Эксперт С++
4978 / 3085 / 456
Регистрация: 10.11.2010
Сообщений: 11,164
Записей в блоге: 10
18.05.2015, 00:06 2
Если это C++, тогда ключевое слово struct в 29-й и 30-й строках не нужно.
VLA в C++ нет, стоит заменить на:
C++
1
2
    flight1 * r = new flight1[n];
    flight1 * f = new flight1[m];
и обращаться с ними как с указателями.
1
0 / 0 / 1
Регистрация: 02.10.2014
Сообщений: 28
18.05.2015, 00:32  [ТС] 3
castaway, спасибо.
Ответ получен, тему можно закрывать.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.05.2015, 00:32
Помогаю со студенческими работами здесь

Задать размер массива
Доброго времени суток. Делаю программу, которая шифрует перестановкой с ключем. Суть алгоритма:...

Задать размер массива
Массив, задать количество элементов через (то есть изначально при описании не задавать) запущенную...

Задать размер двумерного массива
по форуму искал, но находил только для одномерных либо, немного не понятные. Можете написать и...

Как задать размер массива?
Как в Питоне задать размерность массива? Пример c java: System.out.println(&quot;Введите размерность...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru