• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Матрица 4х2

  • Автор темы нини
  • Дата начала
Н

нини

помогите пож-та разобраться.
поставлена задача: Задана вещественная матрицаN[4][2]. Переставить вторую и третью строку и найти максимальный элемент в каждой строке из этих строк.
необходимы два варианта решения, первый с помощью указателей. вот есть такой вариант решения, если можно покритикуйте, если что не так B) буду благодарна :blink:

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
void main()
{
int i, j;
float m[4][2];
for (i = 0; i < 4; i++)
{
for (j = 0; j < 2; j++)
{
printf("string - %d, column - %d \n", i+1, j+1);
scanf("%f",&m[j]);
}
}
int s=2; //номер строки
float tmp[2]={m[s-1][0],m[s-1][1]}; //сохраняем 2-ю строку;
s-1 - т.к. считается с 0
m[s-1][0]=m[0];m[s-1][1]=m[1]; //во 2-ю строку записываем 3-ю строку
m[0]=tmp[0];m[1]=tmp[1]; //в 3-ю строку записываем сохраненную 2-ю
float max;
for (i = 0; i < 4; i++)
{
max = m[0]; // инициализируем переменную max первым
числом из строки массива
for (j = 0; j < 2; j++)
{
if(max < m[j])
{
max = m[j];
}
}
// вывод максимально числа
printf("\n в строке %d max = %10.2f \n", i+1, max);
}
getch(); //ожидаем нажатия клавиши
}

а далее необходимо решить эту же задачу с использованием двух функций. В главной функции(main()) с помощью датчика случайных чисел задать два массива, соответствующие варианту, передать каждый из массивов во вторую функцию(для каждого массива свой вызов функции). Алгоритм второй функции соответствует вычислениям, проводимым с массивами. Результаты передаются в главную функцию, где он и выводятся на экран монитора.
подскажите, как и с чего начинать?
 
R

rrrFer

начни с заполнения массивов случайными числами
гугл -> CPP rand (одной из ссылок будет cplusplus.com и там есть пример)
 
T

toptolik77

был на компе пример, сейчас поищу
 
M

Monarh

Максимум можно находить, поскольку в каждой строке всего по 2 элемента, сразу сравнивая элементы строки:
C++:
float max;
for (i = 0; i < 4; i++) {
max = m[i][0] > m[i][1] ? m[i][0] : m[i][1]; // читается так: если m[i][0] > m[i][1], то max = m[i][0], иначе max = m[i][1]
...
}
А с указателями, если Я правильно понял суть задачи, это выделение через new и тогда перестановка строк это просто поменять указатели на 2 и 3 строки местами:
C++:
float* mp[4];
for (i = 0; i < 4; i++)
mp[i] = new float[2];
перестановка 2 и 3 строки
C++:
float* mp_tmp = mp[1];
mp[1] = mp[2];
mp[2] = mp_tmp;
или если можно использовать С++, а не чистый Си, то можно сделать так:
C++:
// Подключаем библиотеку 
#include <algorithm>
// а в коде main'а
std::swap( mp[1], mp[2]); // это для указателей
// И для статической матрицы тоже можно использовать swap
std::swap( mp[1][0], mp[2][0]); // переставляем первые элементы 2 и 3 строк
std::swap( mp[1][1], mp[2][1]); // переставляем вторые элементы 2 и 3 строк
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!