Форум программистов, компьютерный форум, киберфорум
C++/CLI Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
26 / 26 / 11
Регистрация: 03.11.2009
Сообщений: 158

Задача построить R деревьев и вывести для каждого из них определенные значения в файл

07.10.2010, 22:15. Показов 1051. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет, всем. вопрос может банальный , но ...При пошаговой отладки все отлично выполняется, но если просто запустить непонятно что получается.Задача построить R деревьев и вывести для каждого из них определенные значения в файл, так вот при отладки выводится в файл всё правильно , но как просто запуск , то в файле появляются только одна и та же запись по первому графу, размноженная в r экземплярах. Подскажите что может быть не так.....
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.10.2010, 22:15
Ответы с готовыми решениями:

Есть 3 объекта с классом obj; вывести для каждого из них вывести параметр i
Надо провести манипуляции с переменными всех объектов с определенным классом. Например есть 3 объекта с классом obj надо вывести для...

Для каждого значения A вывести все значения функции попдающие в интервал от C до D
Мне дали вот такое условие задачи: Y=f(x; a) X1<=x<=x2, x3 A1<=a<=a2, a3 Для каждого значения A вывести все значения функции...

Вывести различные слова, указав для каждого из них число вхождений в последовательность
Дана последовательность до 30 слов в каждом из которых от 1 до 5 символов, между словами - пробел или запятая, в конце - точка. Вывести...

6
08.10.2010, 14:04

Не по теме:


Наверно плохая погода на улице

0
Эксперт С++
516 / 421 / 92
Регистрация: 23.09.2010
Сообщений: 1,165
08.10.2010, 14:10
Надо код смотреть.
0
26 / 26 / 11
Регистрация: 03.11.2009
Сообщений: 158
09.10.2010, 19:13  [ТС]
Цитата Сообщение от Genius Ignat Посмотреть сообщение

Не по теме:


Наверно плохая погода на улице

Когда нечего сказать, лучше не писать.....................
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
09.10.2010, 20:38
User1990,
Вам тонко намекнули, что надо показать код. Если я позвоню в авто-мастерскую и скажу, что у меня машина не едет, вряд-ли мне чем-то смогут помочь, не осмотрев саму машину...
0
26 / 26 / 11
Регистрация: 03.11.2009
Сообщений: 158
11.10.2010, 19:39  [ТС]
хорошо
файл Vershina.h
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
#pragma once
#include "time.h"
#include "stdlib.h"
#include "conio.h"
#include "stdio.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;
/*  inline float alpha{
    return n/n_;}*/
};
 class Vershina_def  
 {
 public:
     Vershina_def(int i,int rod);
     int chislo_reber;
    int nomer_vershiny;
    int uroven_vershiny;
    int parent;
     Vershina_def ** 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
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#include "StdAfx.h"
 
#include "stdio.h"
 
#include <iostream>
#include <deque>
#include "Vershina.h"
 
using namespace std;
 
int n, n_;
Vershina * ukaz; 
Vershina_def * ukaz_def;
int tek_uroven;
float k;
int rebra[5];
Vershina_def::Vershina_def(int j,int rod)
{   n++;
    nomer_vershiny=n;
    parent=rod;
    uroven_vershiny=j;
    chislo_reber=3;
        potomki=new Vershina_def* [chislo_reber]; 
        for(int i=0;i<chislo_reber;i++)
        potomki[i]=NULL;
}
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;
//FILE *fp;
int i;
//bool p=true;
 
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_);
// sender->Items->Add("hfgjghj");
}
здесь непосредственно идет цикл (100 графов) , в котором вызывается функция создания графа.
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
32
33
34
35
36
private: System::Void rГрафовToolStripMenuItem_Click(System::Object^  sender, System::EventArgs^  e) {
int j,i;
//float k;
Vershina * tek_ukaz;
FILE *fp;
System::String ^ str="";
String ^ probel="   ";
 
//static bool p=true;
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_;
//k=0;n_=0;n=0;
//str=str->Concat(Convert::ToString(n),probel,Convert::ToString(k));
//this->listBox1->Items->Add(str);
    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); 
    this->listBox1->Items->Add("сделано!!!");
         }
критикуйте.......
0
26 / 26 / 11
Регистрация: 03.11.2009
Сообщений: 158
14.10.2010, 11:57  [ТС]
Люди ну в чем проблема то???

Добавлено через 4 часа 33 минуты
Цитата Сообщение от User1990 Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
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_; //k=0;n_=0;n=0; //str=str->Concat(Convert::ToString(n),probel,Convert::ToString(k)); //this->listBox1->Items->Add(str);
 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"); }
именно из-зи этого цикла чего -то не срабатывает, в файл записывается одна и та же запись , в чем же загвоздка?????

Добавлено через 2 часа 9 минут
ещё вопрос может это из-зи того что исрользуется шаблонная функция , как вообще реализуется шаблоны при сборке программы...

Добавлено через 12 часов 40 минут
с чем же это всё таки связано???
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.10.2010, 11:57
Помогаю со студенческими работами здесь

Для каждого массива вывести индексы тех элементов, значения которых больше значения последующего элемента
Привет, помогите пожалуйста с лабораторной. Уже кое-что сделано 1)Для каждого массива вывести индексы тех элементов, значения которых...

Вывести значения каждого столбца матрицы в файл с разным именем
Добрый вечер! Есть массив данных W размером, например, 144х10. Мне необходимо вывести в файлы значения каждого столбца в файл с разным...

Вывести все различные слова, указав для каждого из них число его вхождений в последовательность
Дана последовательность, содержащая от 1 до 30 слов, в каждом из которых от 1 до 5 строчных латинских букв; между соседними словами -...

Вывести на экран все разные слова, указав для каждого из них число его вхождений в текст
Здраствуйте нужна помощь з такой в задачкой. Вводитса текст каторий состоит из слов между словами запятая в конце точка, надо вивести на...

Задача: для каждого врача вывести количество посещений
Здравствуйте. Помогите с вопросом. Есть две таблицы: Врачи: id - Primary key ФИО Запись: id - Primary key id_Врача -...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru