2 / 2 / 0
Регистрация: 06.04.2018
Сообщений: 157
1

Разделить все элементы матрицы на ее максимальный по абсолютной величине элемент

06.04.2018, 14:06. Показов 1259. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Если все элементы главной диагонали матрицы А отрицательны, разделить все элементы матрицы на максимальный по абсолютной величине элемент матрицы.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.04.2018, 14:06
Ответы с готовыми решениями:

Разделить все элементы матрицы на максимальный по абсолютной величине элемент матрицы
Добрый день! Помогите пожалуйста с задачей -- напишите код... Если все элементы главной диагонали...

Разделить все элементы матрицы на максимальный по абсолютной величине элемент
Если все элементы главной диагонали матрицы А отрицательны, разделить все элементы матрицы на...

Разделить все элементы матрицы на элемент, наименьший по абсолютной величине
дан двухмерный массив размером M*N.преобразовать его по правилу -разделить все элементы матрицы на ...

Разделить все элементы матрицы на элемент, наибольший по абсолютной величине.
написать в паскале прогу: дан двухмерный массив размером M*N. преобразовать его по правилу:...

8
391 / 261 / 193
Регистрация: 02.05.2017
Сообщений: 1,003
06.04.2018, 14:28 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
51
#include <iostream>
#include <ctime>
#include <iomanip>
#include <cmath>
 
using namespace std;
 
int main()
{
    srand(time(0));
    int size(0);
    cout << "Input size : ";
    cin >> size;
 
    double ** matrix = new double *[size];
    for(int i = 0;i<size;++i)matrix[i] = new double[size];
 
    for(int i = 0;i<size;++i){
        for(int j = 0;j<size;++j){
            matrix[i][j] = 5.0 - (0.1 * (rand() % 160));
            cout << setw(10) << matrix[i][j];
        }
        cout << "\n";
    }
    cout << "\n" << "\n" << "\n";
    double max(matrix[0][0]),counter(0);
    for(int i = 0;i<size;++i){
        for(int j = 0;j<size;++j){
            if(abs(matrix[i][j]) > abs(max))max = matrix[i][j];
            if(i==j && matrix[i][j] < 0)++counter;
        }
    }
    cout << "max : " << max << "\n" << "\n";
    if(counter == size){
        for(int i = 0;i<size;++i){
            for(int j = 0;j<size;++j){
                matrix[i][j] /= max;
                cout << setw(15) << matrix[i][j];
            }
            cout << "\n";
        }
    }
 
    for(int i = 0;i<size;++i){
        delete[]matrix[i];
        delete[]matrix;
    }
 
    cout << endl;
    return 0;
}
0
134 / 104 / 60
Регистрация: 26.10.2013
Сообщений: 312
06.04.2018, 14:41 3
Цитата Сообщение от LegionK Посмотреть сообщение
C++
1
2
3
4
5
for(int i = 0;i<size;++i)
{ 
delete[]matrix[i]; 
delete[]matrix; 
}
Ошибочка
0
2 / 2 / 0
Регистрация: 06.04.2018
Сообщений: 157
06.04.2018, 14:45  [ТС] 4
А где изменять вот это
C++
1
2
3
4
5
for(int i = 0;i<size;++i)
{ 
delete[]matrix[i]; 
delete[]matrix; 
}
0
134 / 104 / 60
Регистрация: 26.10.2013
Сообщений: 312
06.04.2018, 14:49 5
cyberlohh,
C++
1
2
3
4
for(int i = 0;i<size;++i) {
    delete[]matrix[i];
}
delete[]matrix;
0
2 / 2 / 0
Регистрация: 06.04.2018
Сообщений: 157
06.04.2018, 14:50  [ТС] 6
Там ошибка Необработанное исключение по адресу 0x01186471 в ConsoleApplication31.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0x00008127.
0
391 / 261 / 193
Регистрация: 02.05.2017
Сообщений: 1,003
06.04.2018, 14:51 7
stzer, а че здесь, объясните, пж
0
134 / 104 / 60
Регистрация: 26.10.2013
Сообщений: 312
06.04.2018, 14:59 8
LegionK, освобождать память нужно в обратном порядке выделения. Видимо там просто опечатка.
0
3819 / 2390 / 414
Регистрация: 09.09.2017
Сообщений: 10,365
06.04.2018, 15:18 9
Вариант с нормальным динамическим массивом:
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
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
int main(int argc, char **argv){
  float *mat = NULL;
  unsigned int size, i, j;
  char neg_flag=1;
  scanf("%u", &size);
  mat = (float*)malloc(sizeof(float)*size*size);
  for(i=0; i<size*size; i++)mat[i]=(rand()-RAND_MAX/2);
//если запустить с любым ключом делаем все диагональные элементы отрицательными
  if(argc < 2){
    printf("AAA\n");
    for(i=0; i<size*size; i+=size+1){
      if(mat[i]>=0)mat[i] = -1*(float)(i)-1;
    }
//в противном случае делаем нулевой элемент строго положительным
  }else{
    mat[0] = 1;
  }
//вывод матрицы
  for(j=0; j<size; j++){
    for(i=0; i<size; i++)printf("%f\t", mat[i+j*size]);
    putchar('\n');
  }
/*---------------------------------------------
 * вот тут начинается основной код
 *---------------------------------------------
 */
//проверяем диагональные элементы
  for(i=0; i<size*size; i+=size+1)if(mat[i]>=0){neg_flag=0; break;}
//если все элементы отрицательные
  if(neg_flag){
    float max=mat[0];
    for(i=1; i<size*size; i++)
      if(fabs(mat[i]) > fabs(max))max = mat[i];
    for(i=0; i<size*size; i++)
      mat[i] /= max;
  }
/*---------------------------------------------
 * вот тут основной код кончается
 *---------------------------------------------
 */
//вывод матрицы
  putchar('\n');
  for(j=0; j<size; j++){
    for(i=0; i<size; i++)printf("%f\t", mat[i+j*size]);
    putchar('\n');
  }
//не забываем освободить ресурсы
  free(mat);
}
0
06.04.2018, 15:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.04.2018, 15:18
Помогаю со студенческими работами здесь

Разделить все элементы матрицы на элемент, наименьший по абсолютной величине
Здравствуйте. Помогите , пожалуйста , переделать программу Дана программа Дан двухмерный...

Разделить элементы матрицы на элемент, наибольший по абсолютной величине
помогите, пожалуйста, решить задание. Задана матрица X(7,11). Образовать матрицу Y(7,11) путем...

Найти максимальный по абсолютной величине элемент и поменять его местами с последним элементом матрицы
&quot;Дан двумерный массив, который содержит не более 10 строк и не более 10 столбцов. Найти...

В каждой строке матрицы Z обнулить максимальный по абсолютной величине элемент, если его нет в массиве X
1. Даны целочисленная матрица Z и целочисленный массив X. В каждой строке матрицы Z обнулить...

Разделить все элементы матрицы на максимальный элемент первого столбца
В данном массиве А размерности m x n: 1) разделить все элементы на максимальный элемент первого...

В каждой строке матрицы все элементы разделить на максимальный элемент строки
Дана матрица C, сформированная из значений функции y=8.2cosx-0.9sin2x для x, изменяющегося на...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru