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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.10.2010, 22:31   #1
user1990
Пользователь
 
Регистрация: 13.07.2010
Сообщений: 11
По умолчанию программа работает только при проходе F10 ....

Привет, всем. вопрос может банальный , но ...При пошаговой отладки все отлично выполняется, но если просто запустить непонятно что получается.Задача построить R деревьев и вывести для каждого из них определенные значения в файл, так вот при отладки выводится в файл всё правильно , но как просто запуск , то в файле появляются только одна и та же запись по первому графу, размноженная в r экземплярах. Подскажите что может быть не так.....
user1990 вне форума Ответить с цитированием
Старый 07.10.2010, 23:22   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код в студию. Или архив с проектом.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.10.2010, 22:26   #3
user1990
Пользователь
 
Регистрация: 13.07.2010
Сообщений: 11
По умолчанию

Код:
Vershina.h

#define chislo_vershin 50
class massiv{
public:
	float k;
	int all_v;
	int vis_v;
	int ch_u;
};
 class Vershina
{
public:
    Vershina(int i,int rod);	
	int chislo_reber;
	int nomer_vershiny;
	int uroven_vershiny;
	int parent;
	Vershina ** potomki;
};
 
 template <typename t>void createTree(t** ukaz){
 t * tek_ukaz=0;
 std:: deque <t*> ochered;

 int i,j,Summa,kol_vershin_urovny;
 n=0; tek_uroven=1;n_=0;
 
 srand(static_cast<unsigned>(time(0)));
    tek_ukaz=new t(tek_uroven,0);
	*ukaz=tek_ukaz;
	ochered.push_front(tek_ukaz);
	Summa=1;	
			while((n<=chislo_vershin)&&(!ochered.empty())){
				kol_vershin_urovny=Summa;
				
				tek_uroven++;
                Summa=0;
				
				for(j=0;j<kol_vershin_urovny;j++){
				tek_ukaz=ochered.front();
				ochered.pop_front();

				for ( i=0;i<tek_ukaz->chislo_reber;i++){
					tek_ukaz->potomki[i]=new t(tek_uroven,tek_ukaz->nomer_vershiny);
					ochered.push_back(tek_ukaz->potomki[i]); }	    
				Summa+=tek_ukaz->chislo_reber;}
				
			}
			
	ochered.clear();
	
 };
template <typename t>void Ochistka (t ** ptr){	
std:: deque <t*> ochered;

ochered.push_front(*ptr);
while(!ochered.empty()){
*ptr=ochered.front();
ochered.pop_front();
for (int i=0;i<(*ptr)->chislo_reber;i++)
ochered.push_back((*ptr)->potomki[i]);
delete  (*ptr);
*ptr=0;
}
}

template <typename t>void Vyvod(t * tek_ukaz){
 char error[33]; 
 std:: deque <t*> ochered;
FILE * file_1, *file_2, *file_3;
 int i,j,Summa,kol_vershin_urovny; 
 int _uroven=1;
 if((file_1=fopen("отчет_все_вершины.txt","w"))==NULL)
{sprintf(error,"Ошибка открытия/созданя файла...");
String ^s=gcnew String(error);
MessageBox::Show(s);}

if((file_2=fopen("отчет_висячие_вершины.txt","w"))==NULL)
{sprintf(error,"Ошибка открытия/созданя файла...");
String ^k=gcnew String(error);
MessageBox::Show(k);}
if((file_3=fopen("P.txt","w"))==NULL)
{sprintf(error,"Ошибка открытия/созданя файла...");
String ^ s=gcnew String(error);
MessageBox::Show(s);}

	ochered.push_front(tek_ukaz);
	Summa=1;	
			while(!ochered.empty()){
				kol_vershin_urovny=Summa;
				fprintf(file_1,"uroven %d\n",_uroven);
				_uroven++;
                Summa=0;
				fprintf(file_3," %d\n",kol_vershin_urovny);
				for(j=0;j<kol_vershin_urovny;j++){
				tek_ukaz=ochered.front();
				ochered.pop_front();
					
				if(tek_ukaz!=0){
					switch (tek_ukaz->chislo_reber){
case 0:{rebra[0]++;
	break;
	   }
case 1:{rebra[1]++;
	   break;}
case 2:{rebra[2]++;
	   break;}
case 3:{rebra[3]++;
	   break;}
case 4:{rebra[4]++;
	   break;}	
	}
fprintf(file_1,"%d - %d; ",tek_ukaz->nomer_vershiny,tek_ukaz->parent);
				for ( i=0;i<tek_ukaz->chislo_reber;i++)
					ochered.push_back(tek_ukaz->potomki[i]); 
				if(tek_ukaz->chislo_reber==0)
					fprintf(file_2,"%d - %d; ",tek_ukaz->nomer_vershiny,tek_ukaz->parent);
				Summa+=tek_ukaz->chislo_reber;}
 }

				fprintf(file_1,"\n");
			}
			
	ochered.clear();
	fclose(file_1);
	fclose(file_2);
	fclose(file_3);

}


Vershina.cpp

#include "Vershina.h"
int n, n_;
Vershina * ukaz; 
Vershina_def * ukaz_def;
int tek_uroven;
float k;
int rebra[5];

Vershina::Vershina(int j,int rod)
{	n++;
	nomer_vershiny=n;
	parent=rod;
	uroven_vershiny=j;
	chislo_reber=rand()%5;
	if(chislo_reber!=0){
		potomki=new Vershina* [chislo_reber]; 
		for(int i=0;i<chislo_reber;i++)
		potomki[i]=NULL;}
	else {
		n_++;
		potomki=NULL;
	} 

}
void dop_function(System::Windows::Forms::ListBox^  sender){
std:: deque <Vershina*> ochered;
Vershina * tek_ukaz;

int i;

if (ukaz!=0){ 
Ochistka(&ukaz);}
createTree(&ukaz);

while(n<=10){
Ochistka(&ukaz);
createTree(&ukaz);}

ochered.push_front(ukaz);

while(!ochered.empty()){
	tek_ukaz=ochered.front();
	ochered.pop_front();
	if((tek_ukaz->uroven_vershiny==tek_uroven)&&(tek_ukaz->chislo_reber!=0)) 
	{tek_ukaz->chislo_reber=0;
	n_++;}
	for ( i=0;i<tek_ukaz->chislo_reber;i++)
	ochered.push_back(tek_ukaz->potomki[i]); }

ochered.clear();
 k=float (n)/float( n_);

}


функция , где идет цикл из 100 графов....
private: System::Void rГрафовToolStripMenuItem_Click(System::Object^  sender, System::EventArgs^  e) {
int j,i;
Vershina * tek_ukaz;
FILE *fp;
System::String ^ str="";
String ^ probel="   ";

char error[33];
ukaz=NULL;
massiv ** ref=new massiv*[chislo_graphov];
if((fp=fopen("отчет.txt","w"))==NULL)
{sprintf(error,"Ошибка открытия/созданя файла...");
String ^s=gcnew String(error);
MessageBox::Show(s);} 

for(j=0;j<chislo_graphov;j++){
	dop_function(listBox1);
	ref[j]=new massiv[1];
	ref[j]->all_v=n;
	ref[j]->ch_u=tek_uroven;
	ref[j]->k=k;
	ref[j]->vis_v=n_;

	fprintf(fp,"число уровней графа %d;\n",ref[j]->ch_u);
	fprintf(fp,"параметр а %f;\n",ref[j]->k);
	fprintf(fp,"число всех вершин %d;\n",ref[j]->all_v);
	fprintf(fp," число висячих вершин %d;\n",ref[j]->vis_v);
    fprintf(fp,"\n");
}
	fclose(fp);	}
user1990 вне форума Ответить с цитированием
Старый 13.10.2010, 18:52   #4
user1990
Пользователь
 
Регистрация: 13.07.2010
Сообщений: 11
По умолчанию

люди кто-нибудь...
user1990 вне форума Ответить с цитированием
Старый 14.10.2010, 15:38   #5
user1990
Пользователь
 
Регистрация: 13.07.2010
Сообщений: 11
По умолчанию построить R графов с выводом в файл определенных значений

люди аууу help me

Последний раз редактировалось user1990; 14.10.2010 в 15:40.
user1990 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
При компиляции программы на си не выдаёт ошибок и предупреждений,но тем не менее программа не работает. AmoSirin Общие вопросы C/C++ 7 12.10.2010 00:11
Фоновая программа корректно работает только пол дня (использовал таймер) TwiX Общие вопросы Delphi 2 06.09.2010 17:57
Можно ли при пост-запросе InDy получить только куки (при логине на сайт например)? TwiX Работа с сетью в Delphi 2 07.02.2010 08:21
Ниспадающее меню. Работает только в firefox! _PROGRAMM_ JavaScript, Ajax 0 20.12.2009 20:30
Программа отлично работает при событии Button1Click, и отказывается работать в FormCreate xTANATOSx Общие вопросы Delphi 3 19.09.2007 08:02