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

Почему матрица выводится как обычный массив - C++

Восстановить пароль Регистрация
 
Vadim8063
1 / 1 / 0
Регистрация: 17.01.2012
Сообщений: 130
19.05.2012, 15:02     Почему матрица выводится как обычный массив #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
//matriza.h
#pragma once
 
class matriza
{
float *b,max,s;
int n,m,nom;
public:
    matriza();
    void ww_matriza();
    void f_max();
    void ww_max();
    void find_sum();
    void ww_sum();
    ~matriza();
};
//matriza.cpp
#include "StdAfx.h"
#include "matriza.h"
#include <iostream>
#include "conio.h"
 
using namespace std;
 
matriza::matriza()
{
    cout<<"\n Vvedite razmernost matrici n m";
    cin>>n;
    cin>>m;
    b=new float [n*m];
    for (int i=0;i<n;i++)
    for (int j=0;j<m;j++)
    {
        *(b+i*m+j)=0.5+rand();
    }
    cout<<"\n Rabotal konstruktor bez parametrov";
}
void matriza::ww_matriza()
{
    for (int i=0;i<n;i++)
    {for(int j=0;j<m;j++)
        {
            cout<<"\n "<<*(b+i*m+j);
        }
    }
}
void matriza::f_max()
{
    max=*b;
    for (int i=0;i<n;i++)
        for(int j=0;j<m;j++)
        {
            if(*(b+i*m+j)>max)
            {
                max=*(b+i*m+j);
                nom=i;
            }
        }
}
void matriza::ww_max()
{
    cout<<"\n max element= "<<max;
      cout<<"\n nom str= "<<nom;
 
}
void matriza::find_sum()
{
    s=0;
    for(int i=0;i<n;i++)
    for(int j=0;j<m;j++)
    {
        s=s+*(b+i*m+j);
    }
}
void matriza::ww_sum()
{
cout<<"\n Summa matrizi"<<s;
}
 
matriza::~matriza()
{
    delete[]b;
    cout<<"\n Rabotal destruktor";
}
// kontrol2.cpp:
#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
#include "matriza.h"
 
void main()
{
matriza *x;
x=new matriza;
x->ww_matriza();
x->f_max();
x->ww_max();
x->find_sum();
x->ww_sum();
system ("pause");
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
antoha398
155 / 155 / 3
Регистрация: 29.03.2012
Сообщений: 418
19.05.2012, 15:18     Почему матрица выводится как обычный массив #2
добавьте перенос строки, здесь
C++
1
2
3
4
5
6
7
8
9
10
void matriza::ww_matriza()
{
    for (int i=0;i<n;i++)
    {for(int j=0;j<m;j++)
        {
            cout<<"\n "<<*(b+i*m+j);
        }
   cout << endl;
    }
}
Vadim8063
1 / 1 / 0
Регистрация: 17.01.2012
Сообщений: 130
19.05.2012, 15:21  [ТС]     Почему матрица выводится как обычный массив #3
Всё равно выводит как попало, хотелось бы вывод по строкам и столбцам
antoha398
155 / 155 / 3
Регистрация: 29.03.2012
Сообщений: 418
19.05.2012, 15:22     Почему матрица выводится как обычный массив #4
C++
1
 cout<<"\n "<<*(b+i*m+j);
еще вместо \n пробел оставьте.
C++
1
 cout<<" "<<*(b+i*m+j);
Vadim8063
1 / 1 / 0
Регистрация: 17.01.2012
Сообщений: 130
19.05.2012, 15:28  [ТС]     Почему матрица выводится как обычный массив #5
Блин и всё равно вывод какойто не форматированный совсем. Может поможет prinf?

Добавлено через 1 минуту
Нет printf тоже гонит
antoha398
155 / 155 / 3
Регистрация: 29.03.2012
Сообщений: 418
19.05.2012, 15:33     Почему матрица выводится как обычный массив #6
Цитата Сообщение от Vadim8063 Посмотреть сообщение
Блин и всё равно вывод какойто не форматированный совсем. Может поможет prinf?
http://liveworkspace.org/code/d1cecd...002fb9ec333543

вывод внизу, если сойдет посмотрите, что я поменял.

Добавлено через 3 минуты
Цитата Сообщение от Vadim8063 Посмотреть сообщение
Нет printf тоже гонит
надо уметь пользоваться флагами форматирования, тогда все работать будет как надо.
Vadim8063
1 / 1 / 0
Регистрация: 17.01.2012
Сообщений: 130
19.05.2012, 15:34  [ТС]     Почему матрица выводится как обычный массив #7
блин у меня всё равно коряво выводит
antoha398
155 / 155 / 3
Регистрация: 29.03.2012
Сообщений: 418
19.05.2012, 15:38     Почему матрица выводится как обычный массив #8
C++
1
2
3
4
5
6
7
8
9
10
Rabotal konstruktor bez parametrov
     1.80429e+09     8.46931e+08     1.68169e+09     1.71464e+09     1.95775e+09     4.24238e+08
     7.19885e+08     1.64976e+09     5.96517e+08     1.18964e+09     1.0252e+09  1.35049e+09
     7.83369e+08     1.10252e+09     2.0449e+09  1.96751e+09     1.36518e+09     1.54038e+09
     3.04089e+08     1.30346e+09     3.50052e+07     5.21595e+08     2.94703e+08     1.72696e+09
     3.36466e+08     8.61022e+08     2.78723e+08     2.33665e+08     2.14517e+09     4.68703e+08
 
 max element= 2.14517e+09
 nom str= 4
 Summa matrizi3.22745e+10

что в этом не так?

Добавлено через 1 минуту
3 строка сдвигается на форуме.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.05.2012, 15:43     Почему матрица выводится как обычный массив
Еще ссылки по теме:

C++ Почему при выводе в поток char* выводится весь массив символов?
Не выводится матрица C++
C++ Почему выводится ноль?

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

Или воспользуйтесь поиском по форуму:
Vadim8063
1 / 1 / 0
Регистрация: 17.01.2012
Сообщений: 130
19.05.2012, 15:43  [ТС]     Почему матрица выводится как обычный массив #9
На форуме выводит нормально а в консоли все строки сдвигаются

Добавлено через 2 минуты
Всё спасибо разобрался, это из за рендома такую ересь выводило поменял на
C++
1
*(b+i*m+j)=0.5+rand()%20-10;
И всё полетело...
Yandex
Объявления
19.05.2012, 15:43     Почему матрица выводится как обычный массив
Ответ Создать тему
Опции темы

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