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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.06.2013, 14:20   #1
averardo
Пользователь
 
Регистрация: 26.05.2013
Сообщений: 15
По умолчанию Структура и динамический массив

Есть структура. Мне нужно чтобы через цикл этаструктура имела следущий вид:
Код:
nameStruct num[0];
nameStruct num[1];
nameStruct num[2];
...
Я пишу следущее:
Код:
int *num = new int[5];
for (int i = 0; i < 5; i++) {
	nameStruct num[i];
}
Программа говорит что нужно в параметре num[i] передать константное значение. Что с этим можно сделать?
averardo вне форума Ответить с цитированием
Старый 16.06.2013, 14:37   #2
Ezhik Kihze
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 639
По умолчанию

Написать правильно. Вам нужен массив структур, так на кой вы создаете массив интов?
ICQ: 677936656 Gmail: ekEmbed@gmail.com
Ezhik Kihze вне форума Ответить с цитированием
Старый 16.06.2013, 15:21   #3
kventin_zhuk
БНТУ ФИТР
Форумчанин
 
Аватар для kventin_zhuk
 
Регистрация: 20.05.2012
Сообщений: 315
По умолчанию

Что вы хотите сделать лучше расскажите. А то ничего не понятно - или у вас массив int, или массив структур нужен? наверное так


Код:
nameStruct  *num = new nameStruct [5];
for (int i = 0; i < 5; i++) {
    // делаете что-то с каждым num[i]
}
С++(console/builder/WinAPI/Linux), C#, Pascal, Delphi, Asm, Prolog.
< ----- Контакты
kventin_zhuk@live.com

Последний раз редактировалось kventin_zhuk; 16.06.2013 в 15:24.
kventin_zhuk вне форума Ответить с цитированием
Старый 16.06.2013, 15:22   #4
RussDragon
Форумчанин
 
Аватар для RussDragon
 
Регистрация: 07.04.2012
Сообщений: 216
По умолчанию

Может быть:
Код:
nameStruct *num = new nameStruct[5]
?
Только скажите, а массив то для чего?
RussDragon вне форума Ответить с цитированием
Старый 16.06.2013, 16:07   #5
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,680
По умолчанию

Возможно Вам нужно
Код:
struct nameStruct
{
int ....;
int.....;
char ....;
};

const int n = 5;
nameStruct *ns;
ns = new nameStruct[n]; // Выделение памяти под массив структур
ну и т.д. уже используете выделенную память....
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 16.06.2013, 16:38   #6
averardo
Пользователь
 
Регистрация: 26.05.2013
Сообщений: 15
По умолчанию

Спасибо за ответы. Получилось. Вот код, по которому ниже у меня будет вопрос.
Код:
#include<iostream>
using namespace std;
class Students {
public:
	struct Student {
		char name[25];
		int group;
		float ses[5];
	};
	void in () {
		Student *num = new Student[1];
		cin>>num[0].name;
	}
	void out () {
		Student *num = new Student[1];
		cout<<num[0].name;
	}
};
int main() {
	Students per;
	per.in();
	per.out();
	system("pause");
	return 0;
}
Если ввести любое имя, то выведеться крякозябры, точнее квадратики. Если объеденить это в одну функцию то все будет работать. С чем это связано?
averardo вне форума Ответить с цитированием
Старый 16.06.2013, 16:55   #7
RussDragon
Форумчанин
 
Аватар для RussDragon
 
Регистрация: 07.04.2012
Сообщений: 216
По умолчанию

В следующий раз когда будете просить о помощи, пожалуйста, давайте полный код. (Если есть)
RussDragon вне форума Ответить с цитированием
Старый 17.06.2013, 09:09   #8
Shad0wF1rst
Форумчанин
 
Регистрация: 11.01.2013
Сообщений: 149
По умолчанию

Цитата:
Сообщение от averardo Посмотреть сообщение
Спасибо за ответы. Получилось. Вот код, по которому ниже у меня будет вопрос.
Код:
#include<iostream>
using namespace std;
class Students {
public:
	struct Student {
		char name[25];
		int group;
		float ses[5];
	};
	void in () {
		Student *num = new Student[1];
		cin>>num[0].name;
	}
	void out () {
		Student *num = new Student[1];
		cout<<num[0].name;
	}
};
int main() {
	Students per;
	per.in();
	per.out();
	system("pause");
	return 0;
}
Если ввести любое имя, то выведеться крякозябры, точнее квадратики. Если объеденить это в одну функцию то все будет работать. С чем это связано?
Понятное дело. Вы зачем то при выводе еще раз выделяете уже новый участок памяти в котором ничего нет.

логичней было бы написать так:
Код:
#include<iostream>
using namespace std;
class Students {
public:
	struct Student {
		char name[25];
		int group;
		float ses[5];
	};
	void in (struct Student &num) {
		cin>>num[0].name;
	}
	void out (struct Student &num) {
		cout<<num[0].name;
	}
};
int main() {
	Students per;
	per.in(per);
	per.out(per);
	system("pause");
	return 0;
}
НУ а если нужно динамически выделять, то строчку Students per; замените на struct Students *per = new struct Students[1]; и в функциях организуйте передачу не по ссылке а по указателю.
И не забывайте освобождать память при динамическом выделении.
Может это и чушь, но это моя чушь и я ее никому не отдам.
Shad0wF1rst вне форума Ответить с цитированием
Старый 17.06.2013, 15:10   #9
Kukurudza
Форумчанин
 
Регистрация: 02.06.2011
Сообщений: 282
По умолчанию

еманарот че за говнокод? чего сделать хотите расскажите?
Kukurudza вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Структура в С++ (динамический массив) Елена_05 Общие вопросы C/C++ 1 23.05.2011 12:20
Динамический массив, массив указателей alexalisa Паскаль, Turbo Pascal, PascalABC.NET 4 22.04.2011 21:33
Динамический массив - или всё таки не динамический? vedro-compota Общие вопросы C/C++ 30 10.12.2010 23:22
классы, структура и массив. С++ 9rki Помощь студентам 12 27.04.2010 13:34