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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.01.2013, 19:13   #1
zorg-kirill
Пользователь
 
Регистрация: 11.11.2012
Сообщений: 32
Восклицание Массив структур с массивом, bool-ом и char-ом

Вводишь кол-во прогнозов, кол-во угаданных мест(про места неважно пока), программа должна в каждом прогнозе указать каждому спортсмену его место на финише рандомно и без повторений и выводить для каждого прогноза имена (заглавные англ. буквы) спортсменов в порядке прибытия на финиш.
Ошибка в функции make_forecasts строки
forec[i].used=false;
forec[i].name=char(i+65);
(с записью в память проблемы)

Код программы:
Код:
#include <iostream>
using namespace std;
short* guess;
struct man
{
	char name;
	bool used;
	short* guess;
};
man* forec;
short m,n,men;
void input();
void make_forecasts();
void main()
{
	input();
	make_forecasts();
	system("pause");
}
void input()
{
	do 
	{
		cout<<"Number of forecasts =";
		cin>>m;
		cout<<"Number of guessed places =";
		cin>>n;
	}
	while(m*n>26 || m<1 || n<1);
	men=m*n;
	guess=new short[m];
	man *forec=new man[men];
}
void make_forecasts()
{
	short i,j,l,tmp;
	bool allow=true,flag=true;
	for(i=0; i<men; i++) //for each man
	{
		forec[i].used=false;
		forec[i].name=char(i+65);
		for(j=0;j<m;j++) //for each forecast
		{
			allow=true;
			do
			{
				flag=true;
				tmp=rand()%men+1;
				for(l=0; l<j; l++) //to make different places in one forecast
				{
					if(tmp==forec[i].guess[l])
					{
						flag=false;
						break;
					}
					if (flag)
					{
						forec[i].guess[l]=tmp;
						allow=false;
					}
				}
			}
			while(allow);
		}
	}
	for(j=0; j<m; j++)
	{
		cout<<"Forecast "<<j+1<<":"<<endl;
		for(i=0;i<men;i++)
			for(l=i+1;l<men;l++)
				if(forec[j].guess[l]=i)
					cout<<forec[j].name;
		cout<<endl;
	}
}
zorg-kirill вне форума Ответить с цитированием
Старый 16.01.2013, 12:12   #2
masax
Форумчанин
 
Регистрация: 01.10.2008
Сообщений: 248
По умолчанию

внутри функции input:
Код:
man *forec=new man[men];
убери man *
т.е. должно остаться
Код:
forec=new man[men];
а то получается что ты задаешь локальную переменную в функции
Контакты
skype, почта: bm@kwax.ru
masax вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
листинг программы с динамическим массивом структур (и создание файлов). nata_lu Помощь студентам 2 19.12.2012 12:22
сложение по модулю 2(проблема с массивом bool) Mahoyn93 Общие вопросы C/C++ 9 29.04.2012 22:00
Считать из файла в массив bool Lika18 Помощь студентам 0 13.01.2012 22:19
Проблема с массивом Char Terikon Visual C++ 1 03.12.2011 16:56
Работа с массивом структур ai\ekcah^p Помощь студентам 1 26.05.2009 19:10