Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.12.2020, 15:27   #1
DanyloIvzhenko
 
Регистрация: 03.12.2020
Сообщений: 6
Радость Как переделать код?

Короче условие вот такое: Получить новую матрицу путем деления всех элементов данной матрицы на ее самый большой за модулем элемент. с++

Что не так в коде и почему он не делает это?а, еще не работает продолжить работу в консоли не выходя из нее (цикл)

#include <iostream>
#include <limits.h>
#include <windows.h>
#include <string>
#include <time.h>
#include <math.h>
#define COLUMNS 10

using namespace std;

void inputTwoDimensionalArray(short[][COLUMNS], int, int);
void outputTwoDimensionalArray(short[][COLUMNS], int, int);
void outputTwoDimensionalArray(int[][COLUMNS], int, int);
void calculateResultMatrix(short[][COLUMNS], int[][COLUMNS], int, int);
bool isInRangeOf(int, int, int);

int main() {

SetConsoleOutputCP(1251);

char answer = '1';
short arr[COLUMNS][COLUMNS];
int resMat[COLUMNS][COLUMNS];

int m, n;

while (answer == '1') {
srand((unsigned)time(NULL));

cout << "Введите число M" << endl;
cin >> m;

if (!isInRangeOf(m, COLUMNS, 0)) {
cout << "Ошибка, введите число 0 < М <= 10 " << endl;
continue;
}

cout << "Введите число N" << endl;
cin >> n;

if (!isInRangeOf(n, COLUMNS, 0)) {
cout << "Ошибка, введите число 0 < N <= 10 " << endl;
continue;
}

inputTwoDimensionalArray(arr, m, n);

cout << endl << "ВХОДНАЯ МАТРИЦА" << endl << endl;
outputTwoDimensionalArray(arr, m, n);

calculateResultMatrix(arr, resMat, m, n);
cout << endl << "ВЫХОДНАЯ МАТРИЦА" << endl << endl;
outputTwoDimensionalArray(resMat, m, n);

cout << "Желаете продолжить? 1 - да, другая клавиша - нет" << endl;
cin >> answer;
}


return 0;
}


void inputTwoDimensionalArray(short a[][COLUMNS], int m, int n) {
bool choose;
cout << "Для ввода данных вручную нажмите 1, для случайного - 0" << endl;
cin >> choose;

if (choose) {
cout << endl << "РУЧНОЙ ВВОД" << endl << endl;
int number;

for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {

cout << "Введите элемент " << i << " " << j << endl;
cin >> number;

if (!isInRangeOf(number, SHRT_MAX, SHRT_MIN)) {
cout << "Число не принадлжит диапазону short. Повторите ввод!" << endl;
j--;
continue;
}

a[i][j] = number;

}
}

}
else {
cout << endl << "СЛУЧАЙНЫЙ ВВОД" << endl << endl;

for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
cout << "Сгенерирован элемент " << i << " " << j << endl;
a[i][j] = (rand() % 100) * ((rand() % 2) ? 1 : -1);
cout << a[i][j] << endl;
}
}
}
}



void outputTwoDimensionalArray(int a[][COLUMNS], int m, int n) {

for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
cout << a[i][j] << '\t';
}
cout << endl;
}
}

void outputTwoDimensionalArray(short a[][COLUMNS], int m, int n) {

for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
cout << a[i][j] << '\t';
}
cout << endl;
}
}

void calculateResultMatrix(short inputMatrix[][COLUMNS], int resMatrix[][COLUMNS], int m, int n) {
// Ищем наименьший элемент
int min = 0;
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (abs(inputMatrix[i][j]) < abs(min)) {
min = inputMatrix[i][j];
}
}
}

// умножаем матрицу на ее минимальный элемент

for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
resMatrix[i][j] = inputMatrix[i][j] * min;
}
}

}

bool isInRangeOf(int number, int b1, int b2) {
if (number > b1 || number < b2)
return false;
return true;

}
DanyloIvzhenko вне форума Ответить с цитированием
Старый 27.12.2020, 17:58   #2
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,304
По умолчанию

1.
а) Отформатируй код.
б) Выдели его и вставь в окно ввода.
в) Выдели код в окне ввода и нажми кнопку, которая находится над формой ввода.
Копаться в таком коде лень.

2. Вместе с тем:
Цитата:
Получить новую матрицу путем деления всех элементов данной матрицы на ее самый большой за модулем элемент. с++
Видимо не "за модулем", а "по модулю".
Но в коде:
Код:
void calculateResultMatrix(short inputMatrix[][COLUMNS], int resMatrix[][COLUMNS], int m, int n) {
// Ищем наименьший элемент
   int min = 0;
   for (int i = 0; i < m; i++) {
      for (int j = 0; j < n; j++) {
         if (abs(inputMatrix[i][j]) < abs(min)) {
            min = inputMatrix[i][j];
         }
      }
   }

// умножаем матрицу на ее минимальный элемент

   for (int i = 0; i < m; i++) {
      for (int j = 0; j < n; j++) {
         resMatrix[i][j] = inputMatrix[i][j] * min;
      }
   }

}
Так что всё же надо? Или "срисовал" и не знаешь что с этим делать?
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 28.12.2020, 18:43   #3
DanyloIvzhenko
 
Регистрация: 03.12.2020
Сообщений: 6
По умолчанию

ViktorR,
не срисовывал, решил не свой варик, а что касается По Модулю, то да, За модулем
DanyloIvzhenko вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как переделать код PHP на VBA? Metrologik Microsoft Office Excel 3 31.07.2017 03:02
Как переделать код? - C (СИ) username12 Общие вопросы C/C++ 2 18.12.2015 17:07
Как переделать код Дмитрий_dz Общие вопросы Delphi 3 17.12.2012 01:50
как переделать код макроса омарат Microsoft Office Excel 1 25.05.2010 20:57
Как переделать код? P®o©omp@s Помощь студентам 2 26.10.2009 19:21