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

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

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

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

29.12.2011, 00:20. Просмотров 575. Ответов 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++
Ребята, подскажите пожалуйста, необходимо создать двухмерный динамический массив. Его размерность должна быть 10000000 на 10000000....

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

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

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

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

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

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

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

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

Динамический двухмерный массив (создать матрицу) - C++
Меня немного клинит, хочу уточнить. Задача заключается в том, чтобы создать двухмерный массив: матрицу размером 4 на 7 (4 строки, 7...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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++ ){
Удачи!
Никки
Yandex
Объявления
29.12.2011, 02:47     Тривиальная задача: двухмерный динамический массив
Ответ Создать тему
Опции темы

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