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

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

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

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

16.05.2012, 21:37. Просмотров 236. Ответов 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++
Здравствуйте у меня есть проблема с чтением файла файл input.txt нужно считывать так по группам если в первой строке есть у меня 2...

Не большие операции с массивом. - C++
Доброго дня. Ни как не могу понять в чем причина не исполнения следующей программы. Код ищет минимальный и максимальный элементы в...

Операции над динамическим массивом - C++
Написать программу, которая будет создавать массив, длина которого задается с клавиатуры, и предлагать 3 операции: добавить данные в...

Считывание данных из файла.тхт в массив - C++
доброго времени суток. я новичок и поставлена одна задача(скорее игровая). у меня есть текстовый файл в котором первая строка содержит...

Записать числа из ТХТ файла в массив - C++
Добрый день. такая проблема. есть файл ТХТ в котором записаны два столбца значвений в виде 1.9316500000 0.153104081 ...

Проблема с массивом - C++
Здравствуйте. Задача: умножение матрицы на число. Проблема: корректно выводятся только 2, 5, 6, 7, 8 и 9 элементы массива. Причем...

Проблема с массивом. - C++
Приветствую,возникла некоторая проблема в решение данной задачи:Разделить массив на две части, поместив в первую элементы, большие среднего...

проблема с массивом - C++
#include &lt;iostream&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; using namespace std; int main(){ const int n = 3; ...

Работа с массивом - предусмотреть все базовые операции - C++
. Постановка задачи 1) Сформировать массив из n элементов с помощью датчика случайных чисел (n задается пользователем с клавиатуры). ...

Проблема с динамическим массивом - C++
#include &quot;stdafx.h&quot; #include&lt;iostream&gt; #include&lt;conio.h&gt; using namespace std; int l,r,i=0,j=0,k=0,k1=0,k2=0,x=2,z=1;int ost; int...


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

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

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