typedef struct Matrix //структура матрицы
{
int n;
int m;
float* elem;
} Matrix;
Пользователь вводит номер столбца в котором ищется максимальный элемент:
float searchMaxAnaliz(Matrix* matrix, int column)
{
int number_analiz;
cout << "Введите номер анализа для поиска максимального: ";
cin >> number_analiz;
float max = matrix->elem[0];
for(int i = 0; i < matrix->n; i++)
if(matrix->elem[i*column + number_analiz] > max) max = matrix->elem[i*column + number_analiz];
return max;
}
Как вывести на консоль элементы строки в которой есть найденный максимальный элемент введенного пользователем столбца?
Если Matrix::n это количество строк, а Matrix::m _ столбцов, то столбец выводить так:
for (int i = 0; i < n; ++i)
cout << matrix->elem[i * matrix->m + number_analiz] << endl;
И один совет, не имеющий отношение к вопросу: будет куда лучше и удобнее, если вы для вашей структуры определите конструктор, деструктор...
Чтобы выводить строку, нужно иметь обьект, который хранит индекс той строки, где находится максимальный элемент.
float searchMaxAnaliz(Matrix* matrix)
{
int column = matrix->m;
int number_analiz, index = 0;;
cout << "\n Введите номер анализа для поиска максимального: ";
cin >> number_analiz;
float max = matrix->elem[0];
for(int i = 0; i < matrix->n; i++)
if(matrix->elem[i*column + number_analiz - 1] > max) {
max = matrix->elem[i*column + number_analiz - 1];
index = i;
}
// выводим строку
for (int i = 0; i < column; ++i)
cout << matrix->elem[index * column + i] << endl;
return max;
}
Второй аргумент функции по моему не нужен, поэтому создал такую же в функции, чтоб все оставалось как есть, с немногими изменениями
/*Вывод результатов суточных анализов пациентов с максимальным
значением уровня глюкозы в анализе с указанным номером*/
#include<iostream>
#include<conio.h>
#include <iomanip>
using namespace std;
#pragma warning(disable:4996)
typedef struct Matrix //структура матрицы
{
int n;
int m;
float* elem;
} Matrix;
void PrintMaxAnaliz(Matrix* matrix, int column);
float searchMaxAnaliz(Matrix* matrix, int column);
void main()
{
srand(time(NULL));
setlocale(LC_ALL, "RUS");//Подключение русского языка
Matrix *tmp = (Matrix*)malloc(sizeof(Matrix));//Выделяем память под список
tmp->n = 10;//количество пациентов
tmp->m = 8;
tmp->elem = (float *)malloc(tmp->n*tmp->m*sizeof(float));
for (int i = 0; i < tmp->n; i++)
for (int j = 0; j < tmp->m; j++)
tmp->elem[i*tmp->m + j] = (float)rand() / (RAND_MAX + 1) * (2 - 0) - 0;//рандомное заполнение
for (int i = 0; i < tmp->n; i++){
for (int j = 0; j < tmp->m; j++)
cout << setprecision(2) << setw(5) << fixed << tmp->elem[i*tmp->m + j];//вывод на экран
cout << endl;
}
float maxAnaliz = searchMaxAnaliz(tmp, tmp->m);
cout << endl << maxAnaliz << endl;
getch();
}
float searchMaxAnaliz(Matrix* matrix, int column)
{
int number_analiz;
cout << "\n Введите номер анализа для поиска максимального: ";
cin >> number_analiz;
float max = matrix->elem[0];
for(int i = 0; i < matrix->n; i++)
if(matrix->elem[i*column + number_analiz - 1] > max) max = matrix->elem[i*column + number_analiz - 1];
for (int i = 0; i < matrix->n - 1; ++i)
cout << matrix->elem[i * matrix->m + column] << endl;
return max;
}
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Здравствуйте, скажите пожалуйста, как обращаться к элементу массива - матрице номер k размером m×n, например? к 3 элементу, 5 строки, 2 матрицы?...
В общем, создал заголовочный иcpp файлы
Вечер добрый! Есть двумерный массив, в котором содержится n-ое количество строкКаждая строка представляет собой последовательность нулей...