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

Парсинг файла .cnf - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ функция, подсчитывающая, сколько раз в тексте встречается сочетание http://www.cyberforum.ru/cpp-beginners/thread1066342.html
Написать функцию, которая подсчитывает, сколько раз в тексте встречается сочетание, введенное с клавиатуры. Создайте класс в соответствии с условием задачи. Определите функции-члены класса для установки и получения значений закрытых переменных, для вывода реализации требуемых действий. Используйте конструкторы для инициализации начальных значений закрытых переменных и деструкторы. Расположите...
C++ &,|, ^, приведите пример на каждую операцию бе компелятора а в ручную , для объяснения работы этих операций #include <iostream> int main() { char op = 0; std::cin >> op; int a = 220; int b = 12; http://www.cyberforum.ru/cpp-beginners/thread1066332.html
LNK2019: ссылка на неразрешенный внешний символ C++
подскажите что означают эти ошибки : Ошибка 11 error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl input_elements(int * *,int,int)" (?input_elements@@YAXPAPAHHH@Z) в функции _wmain c:\documents and settings\Ирина\мои документы\visual studio 2010\Projects\отчетность\отчетность\отчетность.obj Ошибка 12 error LNK1120: 1 неразрешенных внешних элементов c:\documents and...
Составить программу которая меняет местами значения типа char C++
Помогите с заданием я не понимаю что тут надо делать. Это я перевела с латышского языка на русский, но не знаю на сколько правильно. (Sastādīt programmu, kas apmaina vietām divu char tipa mainīgo vērtības, izmantojot palīgmainīgo.) Вот само задание: Составить программу которая меняет местами два значения типа char используя вспомогательную переменную.
C++ Недопонимание кода http://www.cyberforum.ru/cpp-beginners/thread1066322.html
Я разбираю некоторый код С++ (Сразу скажу, что учил с++ самостоятельно, не супер профи) и там есть некоторые строчки, которые я не до конца понимаю. (Код из CryEngine3). const SAccessoryParams accessory=m_sharedparams->accessoryparams; Я не знаю что делает "->" Благодарю всем кто поможет и по людски объяснит.
C++ Реализовать ввод с клавиатуры в программу #include <iostream> int main() { char op = 0; std::cin >> op; int a = 220; int b = 12; подробнее

Показать сообщение отдельно
alsav22
5284 / 4803 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
09.01.2014, 13:55     Парсинг файла .cnf
Один из вариантов:
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
 
int main ()
{
    const int N = 4; // максимально количество чисел (с 0) в строке файла
    
    ifstream fin("gus_md5_16.cnf");
    if (!fin) cout << "Error fin!" << endl;
    else
    {
        string str;
        while (fin >> str)
        {
            if (str != "p")
            {
                fin.ignore(255, '\n');
                continue;
            }
            else
                fin >> str;
                if (str != "cnf")
                {
                    fin.ignore(255, '\n');
                    continue;
                }
                else
                {
                   unsigned int cnt_all = 0; // всего считанных чисел (вместе с 0)
                   unsigned int cnt = 0; // количество считанных чисел без 0
                   int A, B;
                   
                   fin >> A >> B;
               
                   int** arr = new int*[B];
                   for (int i = 0; i < B; ++i)
                       arr[i] = new int[N];
               
                   int n;
                   int i = 0, j = 0;
                   while (fin >> n)
                   {
                        arr[i][j] = n;
                        ++cnt_all;
                        if (n != 0) ++cnt;
                        ++j;
                        if (j == N || n == 0)
                        {
                            ++i;
                            j = 0;
                        }
                    }
 
                    cout << "Successful!\n" << endl;
                    cout << "cnt_all = " << cnt_all << endl;
                    cout << "cnt = " << cnt << endl;
                    
                    // вывод, для проверки, чисел, считанных из последней строки файла
                    for (int i = 0; i < N; ++i)
                        cout << arr[B - 1][i] << ' ';
                    cout << endl;
                }
          }
    }
    
    cin.get();
    return 0;
}

Насчёт колличества строк (228634), ограничено только размером памяти, которую ОС может выделить приложению.

Добавлено через 3 минуты
4, в двух местах, забыл заменить на N (исправил). Можно ещё сделать выход из чтения чисел, если строк в файле вдруг окажется больше, чем B (чтобы за границу массива не выйти):
C++
1
2
3
4
5
6
7
8
9
10
11
12
while (fin >> n && i < B) // добавленно условие
{
        arr[i][j] = n;
        ++cnt_all;
        if (n != 0) ++cnt;
        ++j;
        if (j == N || n == 0)
        {
             ++i;
             j = 0;
        }
}
 
Текущее время: 18:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru