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

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

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

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

06.06.2013, 12:08. Просмотров 256. Ответов 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 == ключу я в цикле заполняю этот регион соседями.. вот как то так..
но у меня где то сбиваеться..
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.06.2013, 12:08
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Нужно поправить код (C++):

Поправить код - C++
В этом коде нужно дописать, что пременная step&lt;=0 иначе errror. Как это сделать ? Вот код. #include &lt;iostream&gt; using namespace...

Нужно поправить синтаксис! С++ - C++
#include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; const int maxN= 111111; long a; void swap(long w1, long w2) ...

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

Поправить код программы - C++
Здравствуйте, уважаемые программисты. Прошу у вас помощи с программой: Методические указания: 1. Ввод и вывод массива, а так же...

Поправить код программы - C++
Добрый день, уважаемые программисты. Нашёл нужный код для своего задания, а он не работает. Пытался его переделать,но ничего не вышло. Буду...

Необходимо поправить код - C++
в общем программа решает СЛАУ методом Жордана-Гаусса с выбором ведущего элемента, проблема в том, что код вроде бы правильный но выдает...

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

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

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

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


структура
region - ключ
sosedi - сосед
0
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);
}
Будут вопросы - спрашивайте.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.06.2013, 18:45
Привет! Вот еще темы с ответами:

Поправить немного код - C++
#include &lt;string.h&gt; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;iostream&gt; using namespace std; int main() { int...

НУжно Поправить класс студент - C++
Есть код программы но выбрасывает ошибки на всех компиляторах, скажите в чем проблема. заранее спасибо. Задача: Создать класс студент,...

Поправить код для вращения - C++
Всем доброго времени суток! Есть прога, которая при запуске крутит куб вокруг оси x, вотом при нажатии произвольной клавиши начинает его...

Поправить код непростой программы - C++
Здравствуйте. Написал код для вычисления интеграла методом средних прямоугольников, а он не работает. Очень прошу помочь #include...


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

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

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