Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
artemi
0 / 0 / 0
Регистрация: 03.02.2010
Сообщений: 21
#1

Загрузка файла в дерево - C++

04.05.2010, 19:20. Просмотров 498. Ответов 5
Метки нет (Все метки)

надо загрузить фаил в дерево и произвести продвижение по дереву на ходя минимальное значение ,также надо ввести инфо в фаил
помогите доделать. моя программа не коректно работает и не могу сделать продвижение по дереву
вот мой код:
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
145
#include <iostream.h>
#include <iomanip.h>
#include <conio.h>
#include <fstream.h>
struct Map{
        int num;
        char gorod[20];
        int rast;
        friend ostream &operator<<(ostream &stream, Map mp){
                stream<<" "<<mp.num<<" "<<mp.gorod<<" "<<mp.rast;
                return stream;
        }
        friend istream &operator>>(istream &stream, Map &mp){
                stream>>mp.num>>mp.gorod>>mp.rast;
                return stream;
        }
};
struct node{
        Map info;
        node *nextl,*nextr;
        node(){
                info.num=info.rast=0;
                nextl=nextr=0;
        }
        node(Map newinfo){
                info=newinfo;
                nextl=nextr=0;
        }
};
template<class T,class T1>class tree{
        public:
        T *root;
        tree() {root=0;}
        void push(T*&wer,T1 dat,int n){
                if (wer==0){
                       try{
                        wer=new T;
                         if(!wer) throw 1;
                        wer->nextl=0;wer->nextr=0;wer->info=dat;
  }
                          catch (int mthrow) {cout<<"No memory!"<<endl;return;}
                }
          else if(n==1)
               if(strcmp(dat.gorod,wer->info.gorod)<0)push(wer->nextl,dat,1);
                        else push(wer->nextr,dat,1);
                else
                        if(dat.rast>wer->info.rast)push(wer->nextl,dat,2);
                        else push(wer->nextr,dat,2);
        }
        void insert(T1 dat,int n){
                if(root==0)root=new T(dat); else push(root,dat,n);
        }
        void look(ostream &stream,T *&wer){
                if(wer!=0){
                        look(stream,wer->nextl);
                        stream<<" "<<wer->info<< endl;
                        look (stream,wer->nextr);
                }
        }
        friend ostream &operator<<(ostream &stream,tree ob)
                { ob.look (stream, ob.root);return stream; }
};
void main(){
  int r;
  do{
  cout<<"1.Sort with names\n";
  cout<<"2.Sort with balls\n";
  cout<<"3.Exit\n";
  cout<<"4.add\n";
  cout<<"5.file\n";
  cin>>r;
  switch (r){
  case 1: {
                 tree<node,Map>q;
                 node *n;
                 ifstream infile("Map.txt");
                 while(!infile.eof()){
                                Map m;
                                infile>>m;
                                q.insert(m,1);
                        }
                  infile.close();
                  cout<<q;
                  break;
                 }
        case 2: {
                 tree<node, Map> q;
                 node *n;
 ifstream infile("map.txt");
                 Map *m;
                 m = new Map;
                 int i = 1;
                 float s = 0;
                 while(!infile.eof()){
                                infile >> m[i];
                                s+=m[i].rast;
                                i++;
                         }
                  for(int j=1;j<=i;j++)
                        if (m[j].rast>s/i)
                                q.insert(m[j],2);
                  infile.close();
                  cprintf("Miide rastoynie is %1.3f",s/i);
                  cout<<'\n'<< q;
                  break;
                 }
        case 3: {return;}
        default: {cout<<"Error! Try again\n"; break;}
 
 
     case 5:
     {
         tree<node,Map>q;
         node *no;
         Map *m;
         int n,i;//рабочая переменная для подсчёта
         cout<<"Kolichestvo zapisey=";cin>>n;
         if(m!=NULL)delete[]m; //очистка рабочей области(массива)
         m=new Map[n];     //выделение динамической памяти
         if(m==NULL){cout<<"Net pamyati\n";getch();n=0;return;}
         //создание базы данных
         for(i=0;i<n;i++){
         cout<<"enter num\n";
         cin>>m[i].num;
         cout<<"enter gorod\n";
         cin>>m[i].gorod;
         cout<<"enter rastoynie\n";
         cin>>m[i].rast;  }
         cout<<"karta sozdana\n" ;
         ofstream outfile("Map.txt",ios::out);
                 while(!outfile.eof()){
                 for(int i=0;i<n;i++){
                                outfile<<setw(5)<<m[i].num<<setw(12)<<m[i].gorod<<setw(10)<<m[i].rast<<endl;
                                }
 
                  outfile.close();
                  cout<<"save file\n";
                  getch();
                        }
                                 break;}
          }
        getch();
        clrscr();  }
  while(r!=6);
  return;}
Добавлено через 8 часов 3 минуты
помогите доделать
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.05.2010, 19:20
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Загрузка файла в дерево (C++):

Загрузка данных из файла с возможностью выбора файла - C++
Всем доброго времени суток. У меня возник такой вопрос как организовать выбор файла с данными на языке СИ, пришла мысль в голову, что можно...

Запись из файла в дерево - C++
Помогите пожалуйста, задание записать имеющиеся данные из файла в дерево, у меня есть вот такие идеи, но я не знаю как организовать чтобы...

[C++] Загрузка файла - C++
#include &quot;stdafx.h&quot; #include &lt;windows.h&gt; #include &lt;urlmon.h&gt; #pragma comment(lib, &quot;urlmon.lib&quot;) int main() { HRESULT hr...

Загрузка файла из интернета - C++
Товарищи, имею следующих вопрос- необходимо мне написать программу на C++, которая скачивает из интернета xml и сохраняет на диске. Как...

Загрузка структуры из файла - C++
Объясните, пожалуйста, как произвести загрузку чисел вещественного типа из файла в структуру. Текст файла выглядит так: и вот сам...

Загрузка чисел из файла - C++
Здрасти, как загрузить матрицу из файла? если есть такой txt-файл: 3 3 1 2 3 4 5 6 7 8 9 первая строка-размерность...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Roma_F
331 / 246 / 5
Регистрация: 13.12.2009
Сообщений: 589
04.05.2010, 20:04 #2
Цитата Сообщение от artemi Посмотреть сообщение
надо загрузить фаил
какая структура у файла
artemi
0 / 0 / 0
Регистрация: 03.02.2010
Сообщений: 21
04.05.2010, 21:00  [ТС] #3
структура обычный txt
в файл сохранить вводимые данные, а потом загрузить этот фаил в дерево и продвигаясь по дереву найти минимальное значение
Roma_F
331 / 246 / 5
Регистрация: 13.12.2009
Сообщений: 589
04.05.2010, 21:35 #4
Цитата Сообщение от artemi Посмотреть сообщение
структура обычный txt
а чем отличается обычный txt от необычного?

мне лично лень разбирать этот код по строчкам - проще запустить его и посмотреть в деле, но для этого не хватает волшебного файла с "вводимыми даннами"
Aye Aye
367 / 281 / 36
Регистрация: 17.12.2009
Сообщений: 567
04.05.2010, 21:59 #5
в целом идея такая:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// например узлы такие
struct node{
   int val;      // значение
   node *l,*r; // левое, правое поддеревья
};
int find_min(const node *t)
{
    if (t==NULL)
    {
        if (t->l==t->r==NULL) return t->val;
        int i=find_min(t->l), j=find_min(t->r), k=(i<j)?i:j;
        return (k < t->val)?k:t->val;
    }
}
// применение
node *root;
make(root); // создаем дерево.
int min=find_min(root); // находим минимальный элемент.
проще говоря, самый минимальный элемент в дереве это наименьший из элементов в поддеревьях и узле.
artemi
0 / 0 / 0
Регистрация: 03.02.2010
Сообщений: 21
04.05.2010, 22:04  [ТС] #6
проблема в том что программа как бы записывает в фаил но при загрузке потом при обработки прогамма выдает ошибки может проблема с запись в фаил
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.05.2010, 22:04
Привет! Вот еще темы с ответами:

Загрузка файла на хостинг - C++
Доброго времен суток, уважаемые посетители cyberforum! Хотелось бы узнать, каким образом можно залить файл на хостинг? (http://rghost.ru/...

Загрузка из файла в списки - C++
Добрый вечер, нужно создать БД студентов используя списки. Уже работает добавление студентов, вывод, сохранение в файл, но не работает...

Загрузка bitmap файла - C++
Как побайтово загрузить bitmap-файл, для дальнейшей работы с ним (сравнение цветов и т.п.) в массив? Пытался как то так: ...

Файлы, загрузка с файла - C++
Есть два класса. нужно сохранить данные в базу и загрузить. Сохранение сделал. Подскажите как сделать загруску с файла чтобы данные можно...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
04.05.2010, 22:04
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru