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

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

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

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

16.05.2012, 21:37. Просмотров 229. Ответов 0
Метки нет (Все метки)

Добрый вечер, у меня есть потребность практического свойства обрабатывать данные(двумерные массивы
произвольной размерности), хранящиеся в тхт файлах. Кол-во столбцов не более 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++ Проблема с массивом.
C++ Чтение файла ТХТ С++
C++ Считывание данных из файла.тхт в массив
Проблема с массивом строк C++
C++ Записать числа из ТХТ файла в массив
C++ Работа с массивом - предусмотреть все базовые операции
C++ Операции над динамическим массивом
Выводит из файла.тхт последние данные два раза C++

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

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

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