Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.12.2019, 23:55   #1
seibtoy
 
Регистрация: 09.12.2019
Сообщений: 8
По умолчанию Структуры. С++ почему в строке Stadium mass[size + 1]; выдаёт ошибку, что выражение должно иметь константное значение

Вот часть кода, не могу понять, почему в строке Stadium mass[size + 1]; выдаёт ошибку, что выражение должно иметь константное значение, более того не знаю как исправить.

Код:
#include <iostream>
#include <fstream>

using namespace std;

struct Stadium {
	char name[30];
	int year;
	int amount;
	char type[50];
};
void outinf(Stadium& mass);
void in_inf(Stadium& mass);

int main(int argc, char** argv) {
	int size;
	int i;

	cout << "Enter amount of stadium: ";
	cin >> size;
	 Stadium mass[size + 1];
	for (i = 0; i < size; i++) {
		outinf(mass[i]);
		cout << endl;
		in_inf(mass[i]);
	}
}
seibtoy вне форума Ответить с цитированием
Старый 18.12.2019, 09:17   #2
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

можно весь код, включая процедуры void'ов?
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 18.12.2019, 16:48   #3
seibtoy
 
Регистрация: 09.12.2019
Сообщений: 8
По умолчанию

Код:
#include <iostream>
#include <fstream>

using namespace std;

struct Stadium {
	char name[30];
	int year;
	int amount;
	char type[50];
};
void outinf(Stadium& mass);
void in_inf(Stadium& mass);

int main(int argc, char** argv) {
	int size;
	int i;

	cout << "Enter amount of stadium: ";
	cin >> size;
	Stadium mass[size + 1];
	for (i = 0; i < size; i++) {
		outinf(mass[i]);
		cout << endl;
		in_inf(mass[i]);
	}
	cout << endl << "read from file" << endl;
	for (i = 0; i < size; i++) {
		cout << mass[i].name << endl;
		cout << mass[i].year << endl;
		cout << mass[i].amount << endl;
		cout << mass[i].type << endl;
	}
	ofstream Fout("stad.txt", ios::out);
	int k;
	cout << "Enter year:";
	cin >> k;
	for (i = 0; i < size; i++) {
		if (mass[i].year <= k) {

			Fout << "Name: " << mass[i].name << endl;
			Fout << "Year: " << mass[i].year << endl;
			Fout << "Amount: " << mass[i].amount << endl;
			Fout << "Disciplines: " << mass[i].type << endl;
		}
	}
		cout << endl << "Enter element(s)" << endl;
		cout << "Name: "; cin >> mass[size].name;
		cout << "Year: "; cin >> mass[size].year;
		cout << "Amount: "; cin >> mass[size].amount;
		cout << "Disciplines: "; cin >> mass[size].type;

		Fout << "name playground" << mass[size].name << endl;
		Fout << "year of playground" << mass[size].year << endl;
		Fout << "amount of playground" << mass[size].amount << endl;
		Fout << "Enter types of disciplines" << mass[size].type << endl;

		remove("out.txt");
		rename("stand.txt", "out.txt");
		
		system("pause");
		return 0;
}
seibtoy вне форума Ответить с цитированием
Старый 18.12.2019, 17:59   #4
seibtoy
 
Регистрация: 09.12.2019
Сообщений: 8
По умолчанию

Поменял массив на динамический.
Код:
auto* mass = new Stadium[size + 1];
Ошибки больше нет, но появилась другая, насколько я понял это с библиотеками проблема?
Изображения
Тип файла: png Безымянный.png (15.6 Кб, 12 просмотров)
seibtoy вне форума Ответить с цитированием
Старый 18.12.2019, 21:45   #5
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

можно весь код, включая процедуры void'ов?

судя по fstream

и наличием вот этого вот:
Код:
void in_inf(Stadium& mass)
void outinf(Stadium& mass)
то задача звучит как забить массив размерностью N, вывести его в файл и прочитать из файла в массив или как?
Цитата:
Поменял массив на динамический.

Код:
auto* mass = new Stadium[size + 1];
вижу, поменяли, только вот как массив можно объявить и зачем +1? Массив с 0 начинается до этого числа не дойдет...если в цикле не напортачить.

вот как объявить динамический массив структур с количеством элементов size.

Код:
Stadium * mass = new Stadium [size];

вот пример заполнения массива

Код:
    cin>>mass[0].name; вместо нуля поставить переменную счетчика i
НАПИШИТЕ ПОЛНОЕ УСЛОВИЕ ЗАДАЧИ! В коде куча ошибок понятно, но как писать от контекста зависит.


ПО поводу ошибко при компиляции ругается на нехватку двух процедур void которые я цитировал выше.
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 18.12.2019, 23:52   #6
seibtoy
 
Регистрация: 09.12.2019
Сообщений: 8
По умолчанию

Задача звучит так: Нужно создать структуру "Стадион", которая включает в себя название, адрес, количество мест, вид спорта. Удалить запись с указанным названием. Добавить К записей в конец файла.
seibtoy вне форума Ответить с цитированием
Старый 19.12.2019, 17:33   #7
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

то есть работа только с файлом и массив не нужен?
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 19.12.2019, 18:37   #8
seibtoy
 
Регистрация: 09.12.2019
Сообщений: 8
По умолчанию

получается что так
seibtoy вне форума Ответить с цитированием
Старый 19.12.2019, 18:49   #9
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

Завтра постараюсь написать, щас компа нет под рукой
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Я учу структуры с++ и компилятор выдаёт ошибку Роман138 Помощь студентам 2 02.09.2018 11:10
Выражение должно иметь тип класса NIKITAY Visual C++ 4 03.04.2018 10:59
Придумай оптимизацию хранения элементов в БД так, чтобы иметь доступ к каждому элементу за константное время. нужен алгоритм AlexTeyder Помощь студентам 5 15.09.2014 15:11
C++ в чем проблема? Не могу обратиться к элементам массива A. Пишет "выражение должно иметь тип указателя" Praud Помощь студентам 3 04.05.2014 18:53
Выражение должно иметь константное значение? Си snqL Общие вопросы C/C++ 6 14.10.2011 22:12