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

Операции с массивом из файла *.тхт. Проблема. - C++

Восстановить пароль Регистрация
 
norvik
0 / 0 / 0
Регистрация: 15.05.2012
Сообщений: 5
16.05.2012, 21:37     Операции с массивом из файла *.тхт. Проблема. #1
Добрый вечер, у меня есть потребность практического свойства обрабатывать данные(двумерные массивы
произвольной размерности), хранящиеся в тхт файлах. Кол-во столбцов не более 10, а строк до миллиона,
поэтому екселем медленно. Я слабо разбираюсь в с++, но нашел здесь на форуме пример решения такой задачи, в общем он меня устраивает, но почему-то работает не со всеми файлами. Обрабатывается без ошибок только файл с массивом целых чисел, и то не всегда. Даже если матрица содержит только целые
числа, но предварительно редактировалась(ексель или ноутпад++) программа виснет с ошибкой "Expression: vector subscript out of range". При попытке обработать массив десятичных дробей та же ошибка. Помогите пожалуйста переделать код что бы можно было считать из файла массив чисел(в строке могут находиться целые числа и десятичные дроби) ,
произвести операции с ним и записать результат в другой файл.
Код
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
// text5.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <stdio.h>
#include <fstream>
#include <vector>
#include "iostream"
#include <string>
#include <conio.h> 
using namespace std;
 
 
 
class matrica
{
public:
    matrica():mn_minPosStr(0), mn_minPosStb(0),mn_razStr(0),mn_razStb(0){}
 
    void inputParametrs();  
    void work();            
    void outParametr();     
 
private:
    vector <vector <double> > md_ms; // наш массив
    int mn_razStr, // длина строчки
        mn_razStb, // длина столба
        mn_minPosStr, // позиция минимального елемента в строке
        mn_minPosStb; // позиция минимального елемента в столбе
 
};
    void matrica:: inputParametrs(){
        
        ifstream a("sourse.txt",ios::in);
        a >> mn_razStr >> mn_razStb;
        md_ms.assign(mn_razStr, vector<double>(mn_razStb));
        
        for(int i =0; i < mn_razStr ;i++ ){
                   for(int j =0; j < mn_razStb; j++ ){
                a >> md_ms[i][j];
            }
        }
 
        a.close();   
    }  
    void matrica:: work(){
        float temp = md_ms[0][0];
        
        for(int i =0; i < mn_razStr ;i++ ){
                        for(int j =0; j < mn_razStb; j++ ){
                if (temp > md_ms[i][j]){
                    temp = md_ms[i][j];
                    mn_minPosStr = i;
                    mn_minPosStb = j;
                }   
            }
             
        }
    }
 
 
    void matrica:: outParametr(){
        ofstream b("result.txt", ios::out);
 
        cout << "\tВыходящие данные:\n Для массива: \n";
        b <<  "\tВыходящие данные:\n Для массива: \n";
                for(int i =0; i < mn_razStr ;i++ ){
                        for(int j =0; j < mn_razStb; j++ ){
                cout << md_ms[i][j] << " ";
                b << md_ms[i][j] << " ";
            }
            cout << endl;
    }
        _getch();
        
        b << "\n Минимальный элемент: " << md_ms[mn_minPosStr][mn_minPosStb] <<
            ", Позиция: [ " << mn_minPosStr+1 <<"]["<< mn_minPosStb+1 <<"]." << endl;
        
        cout << "\n Минимальный элемент: " << md_ms[mn_minPosStr][mn_minPosStb] <<
            ", Позиция: [ " << mn_minPosStr+1 <<"]["<< mn_minPosStb+1 <<"]." << endl;
        _getch();
        b.close();
    }
    int main(){
        matrica m;
        m.inputParametrs();
        m.work();
        m.outParametr();
        return EXIT_SUCCESS;
    }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.05.2012, 21:37     Операции с массивом из файла *.тхт. Проблема.
Посмотрите здесь:

Операции с массивом. C++
Операции с массивом. C++
C++ Не большие операции с массивом.
операции над двумерным массивом. C++
C++ Чтение файла ТХТ С++
Задания С++ (операции с массивом ч.1) C++
Операции с одномерным массивом (ошибки) C++
Произвести операции с динамическим массивом. C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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