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

Найти норму матрицы - C++

Восстановить пароль Регистрация
 
filimoncc
1 / 1 / 1
Регистрация: 02.12.2013
Сообщений: 101
08.12.2013, 23:50     Найти норму матрицы #1
Найти норму матрицы, если норма матрицы представляет из себя максимальное из чисел, полученных при сложении всех элементов каждой строки, взятых по модулю.

Как составить программу?
Есть набросок:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <cmath>
using namespace std;
int main()
{float result; float sum=0;
   cout<<"razmer macciva 10x10"<<endl;
 int a[10][10];//задаем массив
 int n,m; cout<<"Vvedite n<=10 i m<=10 (kol-vo elementov v maccive)"<<endl;;cin>>n>>m;
  for (int j=0; j<m; j++)
 for (int i=0; i<n; i++)
 
 {cout<<"a["<<i<<"]["<<j<<"]=";cin>>a[i][j];}//заполняем массив
for (int i=0; i<n; i++)
for (int j=0; j<m; j++)
sum+=pow(a[i][j],2);//находим сумму всех элементов в квадрате//
result=sqrt(sum);//вычисляем квадртный корень из суммы
cout<<"HOPMA matricy="<<result<<endl;//выводим результат
    return 0;
}
Добавлено через 2 минуты
Как, после подсчета суммы в каждой строке, присвоить эту сумму отдельной переменной для дальнейшего обнаружения максимального из чисел?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Doksim
 Аватар для Doksim
57 / 57 / 8
Регистрация: 08.12.2013
Сообщений: 257
08.12.2013, 23:52     Найти норму матрицы #2
Цитата Сообщение от filimoncc Посмотреть сообщение
Найти норму матрицы, если норма матрицы представляет из себя максимальное из чисел, полученных при сложении всех элементов каждой строки, взятых по модулю.

Как составить программу?
Есть набросок:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <cmath>
using namespace std;
int main()
{float result; float sum=0;
   cout<<"razmer macciva 10x10"<<endl;
 int a[10][10];//задаем массив
 int n,m; cout<<"Vvedite n<=10 i m<=10 (kol-vo elementov v maccive)"<<endl;;cin>>n>>m;
  for (int j=0; j<m; j++)
 for (int i=0; i<n; i++)
 
 {cout<<"a["<<i<<"]["<<j<<"]=";cin>>a[i][j];}//заполняем массив
for (int i=0; i<n; i++)
for (int j=0; j<m; j++)
sum+=pow(a[i][j],2);//находим сумму всех элементов в квадрате//
result=sqrt(sum);//вычисляем квадртный корень из суммы
cout<<"HOPMA matricy="<<result<<endl;//выводим результат
    return 0;
}
Добавлено через 2 минуты
Как, после подсчета суммы в каждой строке, присвоить эту сумму отдельной переменной для дальнейшего обнаружения максимального из чисел?
ну так ты её составил
filimoncc
1 / 1 / 1
Регистрация: 02.12.2013
Сообщений: 101
09.12.2013, 00:11  [ТС]     Найти норму матрицы #3
Doksim, в 15 и 16 строке надо что-то придумать другое. И программа делает не то (см. условие), а значит до конца не составлена.
StackOverflow
All rights reserved.
91 / 81 / 5
Регистрация: 03.08.2013
Сообщений: 258
09.12.2013, 00:23     Найти норму матрицы #4
Алгоритм:
-просуммируем все элементы в строке, взятые по модулю (функция abs() сгодится, ну или просто на -1 домножим, если число отрицательное ), результат сохраним в переменную sum;
-sum сохраним в одномерный массив в ячеке с индексом, равным индексу строки;
-повторяем до тех пор, пока управляющая переменная < числа строк в матрице;

-далее работаем с полученным массивом чисел, а именно присваиваем первый элемент переменной max, затем сравниваем следующий элемент с максимальным, и если он больше, то изменяем значение переменной max;
повторяем, пока управляющий индекс меньше размера массива.
Полученное значение max и есть норма матрицы. Сами реализуете?
filimoncc
1 / 1 / 1
Регистрация: 02.12.2013
Сообщений: 101
09.12.2013, 00:46  [ТС]     Найти норму матрицы #5
StackOverflow, если несложно, напишите код.

Добавлено через 13 секунд
а то срочно надо.
StackOverflow
All rights reserved.
91 / 81 / 5
Регистрация: 03.08.2013
Сообщений: 258
09.12.2013, 00:58     Найти норму матрицы #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//начиная с 15 строчки кода
    {
        sum += abs( a[ i ][ j ] );
    } //вышли из вложенного цикла
    b[ i ] = sum; //здесь будем хранить наши суммы
    sum = 0; //обнуляем счётчик sum, чтобы начать подсчёт с новой строки
}
 
int max = 0;
for ( int k =  0; k < n; k++ )
{
    if ( b[ k ] > max )
    {
        max = b[ k ];
    }
}
 
//дальше можете делать что угодно с ответом ( он сохранён в max )
И, да, зачем вы переопределяете уже заданную размерность массива?)
newb_programmer
 Аватар для newb_programmer
237 / 237 / 19
Регистрация: 03.09.2011
Сообщений: 553
09.12.2013, 01:03     Найти норму матрицы #7
в условии написано что НОРМА это максимальная сумма, в программе вы корень из нее вычисляете...
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
#include <iostream>
#include <math.h>
#include <time.h>;
using namespace std;
int main()
{
    srand(time(0));
    int sum=0,max_sum=0,max_ind;
    double result;
    cout<<"razmer macciva 10x10"<<endl;
    const int n=10;
    int a[n][n];//задаем массив
    //int n,m; cout<<"Vvedite n<=10 i m<=10 (kol-vo elementov v maccive)"<<endl;;cin>>n>>m;
    /*for (int j=0; j<n; j++)
        for (int i=0; i<n; i++) {
            cout<<"a["<<i<<"]["<<j<<"]=";
            cin>>a[i][j];//заполняем массив
        }*/
    for (int i=0; i<n;i++) { //заполнение массива случайными числами -10...+10
        for (int j=0; j<n; j++) {
            a[i][j]=rand()%20-10;
            cout<<a[i][j]<<" ";
        }
        cout<<endl;
    }
    for (int i=0; i<n; i++) {
        sum=0;
        for (int j=0; j<n; j++) 
            sum+=abs(a[i][j]);
        
        if (max_sum<sum) {
            max_sum=sum;
            max_ind=i;
        }
    }
    result=sqrt((double)sum);//вычисляем квадртный корень из суммы
    cout<<"HOPMA matricy="<<result<<" Stroka #"<<max_ind<<endl;//выводим результат
    system("pause");
    return 0;
}
filimoncc
1 / 1 / 1
Регистрация: 02.12.2013
Сообщений: 101
09.12.2013, 01:17  [ТС]     Найти норму матрицы #8
StackOverflow, newb_programmer, а ещё вот в этой темке можете помочь? В чём ошибка?
filimoncc
1 / 1 / 1
Регистрация: 02.12.2013
Сообщений: 101
09.12.2013, 01:38  [ТС]     Найти норму матрицы #9
StackOverflow, добавил вашу строчку и ответ выдаёт программа неверный.
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
#include <iostream>
#include <cmath>
using namespace std;
int main()
{float result; float sum=0;
   cout<<"razmer macciva 10x10"<<endl;
   int b[100];
 int a[10][10];//задаем массив
 int n,m; cout<<"Vvedite n<=10 i m<=10 (kol-vo elementov v maccive)"<<endl;;cin>>n>>m;
  for (int i=0; i<n; i++)
 for (int j=0; j<m; j++)
 
 {cout<<"a["<<i<<"]["<<j<<"]=";cin>>a[i][j];}//заполняем массив
for (int i=0; i<n; i++)
for (int j=0; j<m; j++)
{{
        sum += abs( a[ i ][ j ] );
    } //вышли из вложенного цикла
    b[i] = sum; //здесь будем хранить наши суммы
    sum = 0; //обнуляем счётчик sum, чтобы начать подсчёт с новой строки
}
 
int max;
max=b[0];
for ( int k=1; k < n; k++ )
{
    if ( b[ k ] > max )
    {
        max = b[ k ];
    }
}
cout<<"HOPMA matricy="<<max<<endl;//выводим результат
    return 0;
}
Миниатюры
Найти норму матрицы  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.12.2013, 02:14     Найти норму матрицы
Еще ссылки по теме:

C++ В заданной матрицы А (6, 4) найти значение крупнейшего по модулю элемента матрицы
C++ Найти количество элементов матрицы, которые совпадают с элементами другой матрицы
ВЫчислить норму матрицы C++

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

Или воспользуйтесь поиском по форуму:
StackOverflow
All rights reserved.
91 / 81 / 5
Регистрация: 03.08.2013
Сообщений: 258
09.12.2013, 02:14     Найти норму матрицы #10
filimoncc, во первых, у вас массив 10х10 зарезервирован, вы об этом не забывайте.
Ну и разберитесь уже наконец с фигурными скобками. И оформляйте, пожалуйста, как следует. Существуют общие правила оформления, которых должны придерживаться программисты. Тяжело читать такой код.

Добавлено через 12 минут
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
#include <iostream>
#include <cmath>
 
using namespace std;
 
int main()
{
    
    float sum = 0;
 
    cout << "razmer macciva 10x10" << endl;
    float b[10];
    int a[10][10];//задаем массив
 
    for ( int i = 0; i < 10; i++ ) {
        for ( int j = 0; j < 10; j++) {
            cout << "a[" << i << "][" << j<< "]=";
            cin >> a[i][j];
        }//заполняем массив
    }
 
    for ( int i = 0; i < 10; i++) {
        for ( int j = 0; j < 10; j++)
        {
            sum += abs( a[ i ][ j ] );
        } //вышли из вложенного цикла
        b[i] = sum; //здесь будем хранить наши суммы
        sum = 0; //обнуляем счётчик sum, чтобы начать подсчёт с новой строки
    }
 
    int max;
    max=b[0];
 
    for ( int k=1; k < 10; k++ ) {
        if ( b[ k ] > max ) {
            max = b[ k ];
        }
    }
 
    cout << "HOPMA matricy=" << max << endl;//выводим результат
    return 0;
}
Yandex
Объявления
09.12.2013, 02:14     Найти норму матрицы
Ответ Создать тему
Опции темы

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