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

Выдаёт не правильную сумму чисел правее столбца с макс элементом - C++

Восстановить пароль Регистрация
 
Vadim8063
1 / 1 / 0
Регистрация: 17.01.2012
Сообщений: 130
19.05.2012, 16:27     Выдаёт не правильную сумму чисел правее столбца с макс элементом #1
Сумма правее макс числа right_sum()
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
//matriza.h
#pragma once
 
class matriza
{
float *b,max,s;
int n,m,nom,nom1;
public:
    matriza();
    void ww_matriza();
    void f_max();
    void ww_max();
    void find_sum();
    void ww_sum();
    void right_sum();
    ~matriza();
};
//matriza.cpp
#include "StdAfx.h"
#include "matriza.h"
#include <iostream>
#include "conio.h"
#include "stdio.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()%50-1;
    }
    }
void matriza::ww_matriza()
{
    for (int i=0;i<n;i++)
    {for(int j=0;j<m;j++)
        {
            cout<<"\t "<<*(b+i*m+j);
        }
cout<<endl;
    }
}
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=j;
 
                nom1=i;
            }
        }
}
void matriza::ww_max()
{
    cout<<"\n max element= "<<max;
      cout<<"\n nom stolbca= "<<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;
}
void matriza::right_sum()
{
    s=0;
    for(int i=nom1;i<n;i++)
        for (int j=nom;j<m;j++)
        {
            s=s+*(b+i*m+j);    
        }
        cout<<"\Summa elementov pravee max="<<s;
 
}
 
matriza::~matriza()
{
    delete[]b;
    cout<<"\n Rabotal destruktor";
}
//kontrol2
#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();
x->right_sum();
system ("pause");
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.05.2012, 16:27     Выдаёт не правильную сумму чисел правее столбца с макс элементом
Посмотрите здесь:

C++ Посчитать сумму каждого столбца матрицы,номер которого не является элементом одномерного массива.
Найдите скалярное произведение строки с наибольшим элементом матрицы и столбца с наименьшим элементом матрицы C++
Кол-во элементов в столбце с макс. элементом C++
C++ Ввести номер строки массива и определ. разность между макс и мин элементом
Динамические структуры данных: Найти скалярное произведение строки с наибольшим элементом и столбца с наименьшим элементом C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
antoha398
155 / 155 / 3
Регистрация: 29.03.2012
Сообщений: 418
19.05.2012, 16:35     Выдаёт не правильную сумму чисел правее столбца с макс элементом #2
что у вас подразумевается правее?
правее столбца с максимальным элементом включая его? или как?
Vadim8063
1 / 1 / 0
Регистрация: 17.01.2012
Сообщений: 130
19.05.2012, 16:39  [ТС]     Выдаёт не правильную сумму чисел правее столбца с макс элементом #3
Правее столбца с макс элементом не включая этот столбец
antoha398
155 / 155 / 3
Регистрация: 29.03.2012
Сообщений: 418
19.05.2012, 16:59     Выдаёт не правильную сумму чисел правее столбца с макс элементом #4
C++
1
2
3
4
5
6
7
8
9
10
11
void matriza::right_sum()
{
    s=0;
    for(int i=nom1;i<n;i++)
        for (int j=nom;j<m;j++)
        {
            s=s+*(b+i*m+j);    
        }
        cout<<"\Summa elementov pravee max="<<s;
 
}
тогда тут надо перебирать не с nom (в котором хранится номер столбца с максимальными элементом), а со следующего nom+1.
И судя по этому циклу считается сумма правее и ниже. так и должно быть?
Vadim8063
1 / 1 / 0
Регистрация: 17.01.2012
Сообщений: 130
19.05.2012, 17:03  [ТС]     Выдаёт не правильную сумму чисел правее столбца с макс элементом #5
Нет только столбцы которые правее
antoha398
155 / 155 / 3
Регистрация: 29.03.2012
Сообщений: 418
19.05.2012, 17:04     Выдаёт не правильную сумму чисел правее столбца с макс элементом #6
тогда попробуйте так:
C++
1
2
3
4
5
6
7
8
9
10
11
void matriza::right_sum()
{
    s=0;
    for(int i=0;i<n;i++)
        for (int j=nom+1;j<m;j++)
        {
            s=s+*(b+i*m+j);    
        }
        cout<<"\Summa elementov pravee max="<<s;
 
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.05.2012, 17:09     Выдаёт не правильную сумму чисел правее столбца с макс элементом
Еще ссылки по теме:

посчитать макс и мин элемент массива ,сумма между 1-ым и 2-ым положит элементом и упорядочить по определённому принципу C++
Найти сумму чисел, которые находятся между Мин. и Макс по модулю элементами массива C++
Найти сумму элементов, стоящих правее второго столбца C++

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

Или воспользуйтесь поиском по форуму:
Vadim8063
1 / 1 / 0
Регистрация: 17.01.2012
Сообщений: 130
19.05.2012, 17:09  [ТС]     Выдаёт не правильную сумму чисел правее столбца с макс элементом #7
Спасибо так правильно считает.
Yandex
Объявления
19.05.2012, 17:09     Выдаёт не правильную сумму чисел правее столбца с макс элементом
Ответ Создать тему
Опции темы

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