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

Динамические массивы С++ - найти строку с наибольшей и наименьшей суммой элементов - C++

Восстановить пароль Регистрация
 
lokteva
0 / 0 / 0
Регистрация: 14.04.2013
Сообщений: 16
11.05.2013, 10:46     Динамические массивы С++ - найти строку с наибольшей и наименьшей суммой элементов #1
Сформировать прямоугольную матрицу, вводя ее размеры (число строк и число столбцов) с клавиатуры. Найти строку с наибольшей и наименьшей суммой элементов. Вывести на печать найденные строки и суммы их элементов.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <cstdlib>
#include <vector>
using namespace std; 
//setlocale(LC_ALL,"rus_rus.1251");
vector <vector <int>>dvec;
int N,M,i,j;
cout<<"Введите число строк и столбцов"<<endl;
cin>>N>>M;
for ( int i=0;i<N;i++)
{
    for ( int j=0;j<M;j++)
        vec.push_back(i);
    dvec.push_back(vec);
}
как дальше?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.05.2013, 10:46     Динамические массивы С++ - найти строку с наибольшей и наименьшей суммой элементов
Посмотрите здесь:

C++ Дана матрица размера МхН.Найти номер ее строки с наибольшей суммой элементов и вывести данный номер, а также значение наибольшей суммы.
найти тройку последовательных элементов массива F с наименьшей суммой C++
C++ Дана прямоугольная матрица. Найти строку с наибольшей суммой элементов
C++ Матрица. Найти номер ее ряда с наибольшей суммой элементов и вывести данный ее номер, а также значение наибольшей суммы
C++ В матрице размерностью MxN найти номер строки с наибольшей суммой элементов и вывести данный номер, а также значение наибольшей суммы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11807 / 6786 / 767
Регистрация: 27.09.2012
Сообщений: 16,840
Записей в блоге: 2
Завершенные тесты: 1
11.05.2013, 11:09     Динамические массивы С++ - найти строку с наибольшей и наименьшей суммой элементов #2
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
#include <iostream>
#include <vector>
#include <iomanip>
 
using namespace std;
 
 
template<typename T>
std::ostream & operator<<(std::ostream & lhv,const std::vector<T> & rhv){
    for(typename std::vector<T>::size_type i=0;i<rhv.size();++i)
        lhv<<rhv[i]<<" ";
    lhv<<std::endl;
    return lhv;
}
 
 
int main(){
    vector <vector <int> >dvec;
    int N,M,i,j;
    cout<<"Введите число строк и столбцов"<<endl;
    cin>>N>>M;
    for ( int i=0;i<N;i++){
        vector<int> vec;
        for ( int j=0;j<M;j++)
            vec.push_back(i);
        dvec.push_back(vec);
    }
    for(int i=0;i<dvec.size();++i)
        std::cout<<dvec[i]<<std::endl;
    
    int maxSumm, minSumm, minIndex, maxIndex, tempSumm=0;
    for(int j=0;j<dvec[0].size();++j)
        tempSumm=dvec[0][j];
    maxSumm=minSumm=tempSumm;
    tempSumm=minIndex=maxIndex=0;
    for(int i=1;i<dvec.size();++i,tempSumm=0){
        for(int j=0;j<dvec[i].size();++j)
            tempSumm+=dvec[i][j];
        if(tempSumm>maxSumm){
            maxIndex=i;
            maxSumm=tempSumm;
        }
        if(tempSumm<minSumm){
            minIndex=i;
            minSumm=tempSumm;
        }
    }
    for(int i=0;i<dvec.size();++i)
        std::cout<<std::setw(6)<<(maxIndex==i?"max-> ":(minIndex==i?"min-> ":""))<<dvec[i]<<std::endl;
}
lokteva
0 / 0 / 0
Регистрация: 14.04.2013
Сообщений: 16
11.05.2013, 11:15  [ТС]     Динамические массивы С++ - найти строку с наибольшей и наименьшей суммой элементов #3
прокомментируйте,пожалуйста, этот фрагмент программы
C++
1
2
3
4
5
6
template<typename T>
std::ostream & operator<<(std::ostream & lhv,const std::vector<T> & rhv){
    for(typename std::vector<T>::size_type i=0;i<rhv.size();++i)
        lhv<<rhv[i]<<" ";
    lhv<<std::endl;
    return lhv;
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11807 / 6786 / 767
Регистрация: 27.09.2012
Сообщений: 16,840
Записей в блоге: 2
Завершенные тесты: 1
11.05.2013, 11:31     Динамические массивы С++ - найти строку с наибольшей и наименьшей суммой элементов #4
Думаю, без шаблона будет понятнее:
C++
1
2
3
4
5
6
7
//Перегруженный оператор вывода для параметра std::vector<int>
std::ostream & operator<<(std::ostream & lhv,const std::vector<int> & rhv){
    for(std::vector<int>::size_type i=0;i<rhv.size();++i)//Выводим всё через пробел
        lhv<<rhv[i]<<" ";
    lhv<<std::endl;//Перевод на новую строку со сбросом буфера
    return lhv;
}
lokteva
0 / 0 / 0
Регистрация: 14.04.2013
Сообщений: 16
11.05.2013, 11:34  [ТС]     Динамические массивы С++ - найти строку с наибольшей и наименьшей суммой элементов #5
а что значит std? можно его не писать в программе?
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11807 / 6786 / 767
Регистрация: 27.09.2012
Сообщений: 16,840
Записей в блоге: 2
Завершенные тесты: 1
11.05.2013, 11:39     Динамические массивы С++ - найти строку с наибольшей и наименьшей суммой элементов #6
Цитата Сообщение от lokteva Посмотреть сообщение
а что значит std?
пространство имен std

Цитата Сообщение от lokteva Посмотреть сообщение
можно его не писать в программе?
у Вас стоит
C++
1
using namespace std;
так что можно
lokteva
0 / 0 / 0
Регистрация: 14.04.2013
Сообщений: 16
11.05.2013, 11:51  [ТС]     Динамические массивы С++ - найти строку с наибольшей и наименьшей суммой элементов #7
C++
1
2
3
4
5
6
7
8
template<typename T>
ostream & operator<<(ostream & lhv,const vector<T> & rhv)
{
    for(typename vector<T>::size_type i=0;i<rhv.size();++i)
        lhv<<rhv[i]<<" ";
    lhv<<endl;
    return lhv;
}
никак не могу разобраться с этим фрагментом!можно поподробнее,пожалуйста!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.05.2013, 14:44     Динамические массивы С++ - найти строку с наибольшей и наименьшей суммой элементов
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
_Mutex
Заблокирован
11.05.2013, 14:44     Динамические массивы С++ - найти строку с наибольшей и наименьшей суммой элементов #8
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
struct elem{
    int sum;
    int index;
};
elem* calculate(vector <vector <int>> &vect,const bool& index,const int & N,const int &M){
    int row;static elem result[2];
    for (int i=0;i<N;i++){
        if(!index)row=int();
    for (int j=0;j<M;j++)if(index)vect[i].push_back((cin>>row,row)); else row+=vect[i][j];
        if(!index){
            if(i==0){result[0].sum=row;result[1].sum=row;continue;};   
            if(result[0].sum>row){result[0].sum=row;result[0].index=i;};//min
            if(result[1].sum<row){result[1].sum=row;result[1].index=i;};//max
        };
    };
    return result;
}; 
int main(){
    setlocale(LC_ALL,"rus_rus.1251");
cout<<"Введите число строк и столбцов"<<endl;
int N=(cin>>N,N),M=(cin>>M,M);
vector <vector <int>>dvec(N);
calculate(dvec,true,N,M);
elem* result=calculate(dvec,false,N,M);
for(int i=0;i<2;i++){
    cout<<((i)?"Максимум ":"Минимум ")<<result->sum<<endl;
    for(int j=0;j<M;j++)cout<<dvec[result->index][j]<<" ";
    cout<<endl;
    result++;
}; 
    return 0;
};
Yandex
Объявления
11.05.2013, 14:44     Динамические массивы С++ - найти строку с наибольшей и наименьшей суммой элементов
Ответ Создать тему
Опции темы

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