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

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

Войти
Регистрация
Восстановить пароль
 
BabyGluk
26 / 26 / 4
Регистрация: 10.04.2013
Сообщений: 167
#1

Нужно поправить код - C++

06.06.2013, 12:08. Просмотров 241. Ответов 3
Метки нет (Все метки)

Вобщем есть файл txt с парами областей
вот пример кусочек
Кликните здесь для просмотра всего текста
Volynska Rivnenska
Volynska Lvivska

Lvivska Volynska
Lvivska Rivnenska
Lvivska Ternopilska
Lvivska IvanoFrankivska
Lvivska Zakarpatska

Zakarpatska Lvivska
Zakarpatska IvanoFrankivska

Rivnenska Volynska
Rivnenska Zhytomyrska
Rivnenska Lvivska
Rivnenska Ternopilska
Rivnenska Khmelnytska


структура такая
C++
1
2
3
4
5
6
7
8
9
struct map{
    char *region;
    int id;
    char *sosedi[100];
    char *color;
    char *colorS[100];
    char *tmp;
    char *key;
};
вот моя функция загрузки( но в цикле похходу зацикливаеться )
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
void LoadMap(){
    map *a  = new map[26];
    a[0].key = new char[50]; a[0].tmp = new char[50];
    string name ="sosedi.txt";
    ifstream load(name);
 
    for(int ii=0; ii<25;ii++){  
            a[ii].region = new char[50];
            load >> a[0].key >> a[0].tmp;
            a[ii].region = a[0].key;
            a[ii].id =ii;
            while(a[ii].region == a[0].key){
            load >> a[0].key >> a[0].tmp;
            for(int j = 0; j<obl[ii];j++){
            a[ii].sosedi[j] = a[0].tmp;
            }
            //cout<<key<<" "<<tmp<<"\n";
            }
        }
    cout<<"\nOK";
/*
    for(u = 1; u < 104; u++){
        cout<<a[i].region<<" ";
        for(int j = 0; j<obl[j];j++){
            cout<<a[i].sosedi[j]<<" ";
            }
        cout<<endl;
    }
    */
    delete[] a;
 
}
Обьясняю откуда взял obl[ii] у меня есть константный массив в котором в порядке идет количество соседей области.
C++
1
const int obl[25]={2,5,2,5,5,4,4,5,4,3,5,7,3,7,4,6,3,5,7,4,2,4,3,4,1};
Суть загрузки.
Я загружаю в ключ главную область, а в тмп ее соседа.
потом сразу a[i].region = ключ
пока a[i].region == ключу я в цикле заполняю этот регион соседями.. вот как то так..
но у меня где то сбиваеться..
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.06.2013, 12:08     Нужно поправить код
Посмотрите здесь:

Сортировка в лексографическом порядке(только чуть поправить код) C++
Поправить код C++
Поправить код для вращения C++
C++ Нужно поправить программу (тема - функции)
Необходимо поправить код C++
C++ Поправить немного код
C++ НУжно Поправить класс студент
Поправить код программы C++
Поправить код программы C++
C++ Поправить код программы
Поправить код непростой программы C++
C++ Нужно поправить синтаксис! С++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
StormSpirit
6 / 6 / 2
Регистрация: 13.02.2013
Сообщений: 32
06.06.2013, 14:40     Нужно поправить код #2
не совсем понятно в чем заключается сама задача.
BabyGluk
26 / 26 / 4
Регистрация: 10.04.2013
Сообщений: 167
06.06.2013, 15:09  [ТС]     Нужно поправить код #3
Вобщем с файла нужно в структуру загнать области и соседи областей,
я создавал конструктор которым это все создавал и записывал в файл, но мне нужно тупо просто с файла читать пары областей и заганять их в структуру

пара областей

киев черкассы
киев одесса
киев луцк

киев это ключ, черкассы сосед


структура
region - ключ
sosedi - сосед
StormSpirit
6 / 6 / 2
Регистрация: 13.02.2013
Сообщений: 32
06.06.2013, 18:45     Нужно поправить код #4
Не въехал как Вы работаете с файлом, переписал процедуру. Вот рабочий вариант, правда, он сыроват и имеет ряд недостатков...
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
#include <iostream>
#include <fstream>
#include <map>
#include <inttypes.h>
 
using namespace std;
/*
struct map{
    char *region;
    int id;
    char *sosedi[100];
    char *color;
    char *colorS[100];
    char *tmp;
    char *key;
};
*/
struct string_map{
    string region;
    int id;
    string sosedi[100];
    char *color;
    char *colorS[100];
    char *tmp;
    string key;
};
 
void display_map(string_map* some)
{
  for (int i=0; i<26; i++)
  {
    if (some[i].key != "") cout << some[i].key << endl;
    int j=0;
    while (some[i].sosedi[j] != "")
    {
      cout << "\t" << some[i].sosedi[j] << endl;
      j++;
    }
        
  }
}
 
    
    // key - oblast' value - id
map<string, uint16_t> oblast_id;
map<string, uint16_t>::iterator oblast_id_iter;
 
int main()
{
  string_map some[26];
  
  ifstream some_file ("sosedi.txt");
  string line;
  string sosed;
  int oblast_counter=0;
  while ( some_file.good() )
  {
    getline (some_file,line);
    unsigned pos = line.find(" ");
    sosed = line.substr(pos+1);
    line = line.substr(0,pos-1);
    oblast_id_iter = oblast_id.find(line);
    if (oblast_id_iter == oblast_id.end())
    {
      oblast_id[line] = oblast_counter;
      oblast_counter++;
    }
 
    oblast_id_iter = oblast_id.find(line);
    some[oblast_id_iter->second].key = line;
    for (int i=0; i<100; i++)
    {
      if (some[oblast_id_iter->second].sosedi[i] == "")
      {
        some[oblast_id_iter->second].sosedi[i] = sosed;
    break;
      }
    }
    
  }
 
  some_file.close();
 
  display_map(some);
}
Будут вопросы - спрашивайте.
Yandex
Объявления
06.06.2013, 18:45     Нужно поправить код
Ответ Создать тему
Опции темы

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