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

Квадратная матрица - C++

Восстановить пароль Регистрация
 
romster
 Аватар для romster
5 / 3 / 1
Регистрация: 25.11.2011
Сообщений: 78
25.11.2011, 22:13     Квадратная матрица #1
Помогите решить: Дана квадратная матрица. Найти строчку с наибольшим и наименьшим произведением элементов. Вывести на печать полученные суммы их элементов.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.11.2011, 22:13     Квадратная матрица
Посмотрите здесь:

C++ Квадратная матрица
C++ Квадратная матрица
Квадратная матрица.... C++
C++ Квадратная матрица
Квадратная матрица C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
fojia
2 / 2 / 2
Регистрация: 18.03.2011
Сообщений: 48
26.11.2011, 00:30     Квадратная матрица #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
#include<iostream>
#include<conio>
#include<time>
using namespace std;
 
int main()
{const  int n=5;
 int np=0,bp=0,x=0;
int a[n][n],b[n];
srand((unsigned)time(NULL));
srand(time(NULL));
   cout<<"Matrica"<<endl;
for(int i=0;i<n;i++)
{for(int j=0;j<n;j++)
{     a[i][j]=rand()%10;
cout<<a[i][j]<<" ";
 
}cout<<endl;}
for(int i=0;i<n;i++)
{ np=0;
 for(int j=0;j<n;j++)
 { np=np+a[i][j];
               }b[i]=np;
               }
 bp=b[0];
 x=b[0];
 for(int i=0;i<n;i++)
   if (bp<b[i])
   {bp=b[i] ;}
   else if (x>b[i])
     {x=b[i] ;}
printf("max=%d\n",bp);
printf("min=%d\n",x);
getch();
 
        return 0;
}
romster
 Аватар для romster
5 / 3 / 1
Регистрация: 25.11.2011
Сообщений: 78
01.12.2011, 23:50  [ТС]     Квадратная матрица #3
Цитата Сообщение от fojia Посмотреть сообщение
Вроде как-то так


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
#include<iostream>
#include<conio>
#include<time>
using namespace std;
 
int main()
{const  int n=5;
 int np=0,bp=0,x=0;
int a[n][n],b[n];
srand((unsigned)time(NULL));
srand(time(NULL));
   cout<<"Matrica"<<endl;
for(int i=0;i<n;i++)
{for(int j=0;j<n;j++)
{     a[i][j]=rand()%10;
cout<<a[i][j]<<" ";
 
}cout<<endl;}
for(int i=0;i<n;i++)
{ np=0;
 for(int j=0;j<n;j++)
 { np=np+a[i][j];
               }b[i]=np;
               }
 bp=b[0];
 x=b[0];
 for(int i=0;i<n;i++)
   if (bp<b[i])
   {bp=b[i] ;}
   else if (x>b[i])
     {x=b[i] ;}
printf("max=%d\n",bp);
printf("min=%d\n",x);
getch();
 
        return 0;
}
Я её испробовал, даже отредактировал как следует, но почему-то минимальный элемент выводит (ито сложив значения строк), а максимальный нет
ZaVyLoN
 Аватар для ZaVyLoN
83 / 83 / 6
Регистрация: 26.10.2009
Сообщений: 269
02.12.2011, 01:29     Квадратная матрица #4
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
#include <stdlib.h>
#include <stdio.h>
 
#define N 3
 
void func(int **massive);
void min_max(int *mas);
 
int main()
{
    int **arr = (int**) malloc (N * sizeof(int));
    for (int i = 0; i < N; i++) 
        *(arr + i) = (int*) malloc (N * sizeof(int));
 
        
    printf("Enter the matrix\n");
    for(int i = 0; i < N; i++)
    {
        for(int j = 0; j < N; j++)
        {
            scanf("%d", &(*(*(arr + i) + j)));
        }
    }
 
    func(arr);
        
    printf("Show matrix\n");
    for(int i = 0; i < N; i++)
    {
        for(int j = 0; j < N; j++)
        {
            printf("%d ", *(*(arr + i) + j));
        }
        printf("\n");   
    }
        
    for(int i = 0; i < N; i++)
        free(arr[i]);
    free(arr);
 
    return 0;
}
 
 
void func(int **massive)
{
    int *mult_massive =  (int*) malloc (N * sizeof(int));
    for(int i = 0; i < N; i++)
    {
        int mult = 1;
        for(int j = 0; j < N; j++)
        {
                mult *= *(*(massive + i) + j);
                if(j == N-1)
                {
                  mult_massive[i] = mult;             
                }
        }
 
    }
 
    min_max(mult_massive);
 
        
}
 
void min_max(int *mas)
{
    int max, min;
    for(int i = 0; i < N; i++)
    {
        max = mas[0];
        if(mas[i] > max)
            max = mas[i];
 
        min = mas[0];
        if(mas[i] < min)
            min = mas[i];
    }
 
    printf ("Max = %d \n", max);
    printf ("Min = %d \n", min);
 
    printf ("Max + Min = %d \n", max + min);
 
}
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
02.12.2011, 09:17     Квадратная матрица #5
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
#include <iostream>
#include <algorithm>
#include <iterator>
#include <vector>
#include <numeric>
 
using namespace std;
 
//////////////////////////////////////////////
 
const int SIZE = 5;
 
//////////////////////////////////////////////
 
class cFindMM  //: public unary_function(vector<int>, void)
{
public:
    cFindMM(): min_mult(), max_mult(), min(), max(), curr_row() {}
 
    void operator()(const vector<int>& v)
    {
        int curr_mult = accumulate(v.begin(), v.end(), 1, multiplies<int>());
 
        if (curr_mult > max_mult)
        {
            max_mult = curr_mult;
            max = curr_row;
        }
 
        if (curr_mult < min_mult)
        {
            min_mult = curr_mult;
            min = curr_row;
        }
 
        ++curr_row;
    }
 
 
    operator std::pair<int, int>()
    {
        return std::make_pair<int, int>(min, max);
    }
 
private:
    int min_mult;
    int max_mult;
    int min;
    int max;
    int curr_row;
};
 
//////////////////////////////////////////////
 
int main()
{
    vector<int> v1 = {1,1,3,1,7};
    vector<int> v2 = {1,1,1,2,2};
    vector<int> v3 = {1,8,1,1,7};
    vector<int> v4 = {1,1,9,9,1};
    vector<int> v5 = {1,3,1,1,3};
 
    vector<vector<int>> m;
 
    m.push_back(v1);
    m.push_back(v2);
    m.push_back(v3);
    m.push_back(v4);
    m.push_back(v5);
 
 
    //номера строк с min и max произведениями
    std::pair<int,int> p = for_each(m.begin(), m.end(), cFindMM());
    cout << "min number row: " << p.first << endl;
    cout << "max number row: " << p.second << endl;
 
    //их сумма
    int sum_max_num_row =  accumulate(m[p.first].begin(), m[p.first].end(), 0);
    int sum_min_num_row =  accumulate(m[p.second].begin(), m[p.second].end(), 0);
    cout << "Sum of min and max rows: " << sum_max_num_row + sum_min_num_row;
}
Yandex
Объявления
02.12.2011, 09:17     Квадратная матрица
Ответ Создать тему
Опции темы

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