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

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

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

Тривиальная задача: двухмерный динамический массив - C++

29.12.2011, 00:20. Просмотров 583. Ответов 1
Метки нет (Все метки)

задача простая: считать из файла размеры двухмерной матрицы, динамически ее создать, провести над ней операции, вывести в файл. Проблема в чем скачивается только 1 строчка массива. и над ней все проиводится. Исправте ошибку пожалуйста.
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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
#include <stdio.h>
#include <fstream>
#include <vector>
#include "iostream"
#include <string>
#include <clocale>  // поддержка русского языка
 
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:
    double **md_ms; // наш массив
    int mn_razStr, // длина строчки
        mn_razStb, // длина столба
        mn_minPosStr, // позиция минимального елемента в строке
        mn_minPosStb; // позиция минимального елемента в столбе
 
};
    void matrica:: inputParametrs(){
        
        ifstream a("input.txt",ios::in);
            
        a >> mn_razStr >> mn_razStb;
        
        md_ms = new double*[mn_razStr];
        
        for(int i =0; i< mn_razStr; i++)
            md_ms[i] = new double[mn_razStb];
        
        for(int i =0, j=0; i < mn_razStr ;i++ ){
            for(; j < mn_razStb; j++ ){
                a >> md_ms[i][j]; 
            }
        }
        a.close();
    }  
    void matrica:: work(){
        double temp = md_ms[0][0];
        for(int i=0, j=0; i < mn_razStr; i++){
            for(; 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("output3.txt", ios::out);
 
        cout << "\tВыходящие данные:\n Для массива: ";
        b <<  "\tВыходящие данные:\n Для массива: ";
        for(int i=0,j=0; i < mn_razStr; i++){
            for(; j < mn_razStb ; j++){
                cout << md_ms[i][j] << " ";
                b << md_ms[i][j] << " ";
            }
            cout << endl;
        }
        
        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;
        b.close();
    }
    int main(){
        setlocale(LC_CTYPE,"Russian");
        matrica m;
        m.inputParametrs();
        m.work();
        m.outParametr();
        return EXIT_SUCCESS;
    }
==========================================================================
не получилось через массивы. попробую через вектрры.
============================================================================
 
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("input.txt",ios::in);
        a >> mn_razStr >> mn_razStb;
        md_ms.assign(mn_razStr, vector<double>(mn_razStb));
        
        for( unsigned i=0, j =0; i < md_ms.size(); i++){
            for( ; j< md_ms[i].size() ; j++){
                a >> md_ms[i][j];
            }
        }
 
        a.close();   
    }  
    void matrica:: work(){
        double temp = md_ms[0][0];
        
        for(int i=0, j=0; i < mn_razStr; i++){
            for(; 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("output3.txt", ios::out);
 
        cout << "\tВыходящие данные:\n Для массива: \n";
        b <<  "\tВыходящие данные:\n Для массива: \n";
        for(int i=0,j=0; i < mn_razStr; i++){
            for(; j < mn_razStb ; j++){
                cout << md_ms[i][j] << " ";
                b << md_ms[i][j] << " ";
            }
            cout << endl;
        }
        
        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;
        b.close();
    }
    int main(){
        setlocale(LC_CTYPE,"Russian");
        matrica m;
        m.inputParametrs();
        m.work();
        m.outParametr();
        return EXIT_SUCCESS;
    }
ч

Добавлено через 9 минут
Входные параметры: 3 3 1 -2 3 4 5 6 -7 -8 9.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.12.2011, 00:20
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Тривиальная задача: двухмерный динамический массив (C++):

Динамический двухмерный массив - C++
Нужно сделать динамический двухмерный массив. 1. n столбиков и m строчек нужно задавать самому 2. массив должен записываться и...

Двухмерный динамический массив - C++
a=new int* for(int i=0;i&lt;m;i++) a=new int; Вот создание двухмерного динамического массива.Начеркал небольшой рисунок с...

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

Двухмерный динамический массив - C++
Ребята, подскажите пожалуйста, необходимо создать двухмерный динамический массив. Его размерность должна быть 10000000 на 10000000....

двухмерный динамический массив - C++
задание было такое: Найти количество отрицательных и положительных элементов массива. Массив в памяти разместить динамически (с...

Динамический двухмерный массив - C++
ИМХО директива include предназначена для включения документа в тело JSP НА ЭТАПЕ ТРАНСЛЯЦИИ JSP В СЕРВЛЕТ , а не во время выполнения ,...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Nicky
3 / 3 / 0
Регистрация: 21.12.2011
Сообщений: 10
29.12.2011, 02:47 #2
Привет.

В строках 38-39, 47-48, и 62-63 замени

C++
1
2
                for(int i =0, j=0; i < mn_razStr ;i++ ){
                        for(; j < mn_razStb; j++ ){
на

C++
1
2
                for(int i =0; i < mn_razStr ;i++ ){
                        for(int j =0; j < mn_razStb; j++ ){
Удачи!
Никки
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.12.2011, 02:47
Привет! Вот еще темы с ответами:

Двухмерный динамический массив - C++
Мне нужно создать 4 многомерных динамических массивов, размерность которых 10000000 10000000, и у меня не получалось их создавать на...

Указатель на двухмерный динамический массив - C++
Друзья, нужна Ваша помощь! Создаю одномерный динамический, создаю указатель на него (вернее на его первый эл-т). То же самое пытаюсь...

Двухмерный динамический массив строк - C++
Всем привет) Помогите пожалуйста создать двумерный динамический массив строк, почитал Подбельского, вроде сделала всё как по учебнику, но...

Создать двухмерный динамический массив строк - C++
Ввести 2-мерный массив. Количество строк и столбцов заранее неизвестно. Признаком конца ввода строки - ввод указанной пользователем...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

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