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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Помогите с задачей C++ Листинг -есть http://www.cyberforum.ru/cpp-beginners/thread577008.html
Найти: Площадь прямоугольной трапеции с основаниями a, b (b>a) и углом при большем основании α. h=(b-a)tg alfa; s=((b+a)/2)*h Использовать вложенные функции. Вывод через return и заголовок...
C++ Вычислить значение выражения Ребятки, помогите первокурснику строительного института написать несколько программ! заранее благодарю:) http://www.cyberforum.ru/cpp-beginners/thread577007.html
C++ Переставить местами максимальный элемент и второй элемент со значением, меньшим Р
В упорядоченном по убыванию массиве переставить места ми максимальный элемент и второй элемент со значением, меньшим Р. Нахождение максимального элемента реализовать в виде функции. Помогите решить...
Несложные Задачи по C++ C++
Ребят, помогите пожалуйста решить задачи. Несколько я сама уже сдала, остальные просто не успеваю) Хотелось бы сдать сессию вовремя и без хвостов. 1)Элементы массива M(n) упорядочены по неубыванию....
C++ Матрица http://www.cyberforum.ru/cpp-beginners/thread576994.html
В даной действительной матрице розмерностю 6х9, поменять местами строку с максимальным элементом со строкой с минимальным элементом. Предлагается что эти елементы единственны. 1й курс. Дуб-дубом....
C++ Найти сумму элементов массива, расположенных до последнего положительного элемента Вот такое задание нужно сделать на с++ в консольном приложении: В одномерном массиве, состоящем из n вещественных элементов, вычислить: 1) максимальный элемент массива; 2) сумму элементов... подробнее

Показать сообщение отдельно
norvik
0 / 0 / 0
Регистрация: 15.05.2012
Сообщений: 5

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

16.05.2012, 21:37. Просмотров 241. Ответов 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;
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru