Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 15.12.2022
Сообщений: 19
1

В прямоугольной матрице определить местоположение максимального отрицательного элемента

18.12.2022, 22:03. Показов 462. Ответов 8

Author24 — интернет-сервис помощи студентам
В прямоугольной матрице определить местоположение максимального
отрицательного элемента, модуль которого не больше заданного
значения Р.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.12.2022, 22:03
Ответы с готовыми решениями:

Определить местоположение минимального отрицательного элемента в квадратной матрице
Всем здравствуйте. На форуме новенький. Заголовок другой написать не удалось . В общем нужна помощь...

В каждой матрице определить местоположение максимального элемента
Даны матрицы А(3,5), В(5,2), С(4,6). В каждой матрице определить местоположение максимального...

Определить номера строки и столбца максимального отрицательного элемента прямоугольной матрицы
Определить номера строки и столбца максимального отрицательного элемента прямоугольной матрицы...

Даны матрицы А(3,5), В(5,2), С(4,6). В каждой матрице определить местоположение максимального элемента
19. Даны матрицы А(3,5), В(5,2), С(4,6). В каждой матрице определить местоположение максимального...

8
2487 / 1145 / 707
Регистрация: 25.04.2016
Сообщений: 3,291
19.12.2022, 06:55 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
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
enum {ROWS = 3, COLS = 4};
 
void random_array (int [][COLS], int, int);
void printf_array (int [][COLS], int, int);
div_t maximum_arr (int [][COLS], int, int, int);
 
int main (void) {
    int a[ROWS][COLS];
    srand((unsigned) time(NULL) / 2);
    random_array(a, ROWS, COLS);
    printf_array(a, ROWS, COLS);
 
    int p = rand() %10;
    div_t position = maximum_arr(a, ROWS, COLS, p);
    if (position.quot >= 0)
        printf("maximum negative not exceeding %d: a[%d][%d] = %d\n",
            p, position.quot, position.rem, a[position.quot][position.rem]);
    else
        printf("hasn't negative elements not exceeding %d\n", p);
    return 0;
}
// -------------------------------------------------------------
void random_array (int a[][COLS], int rows, int columns) {
    for (int i = 0; i < rows; i++)
        for (int k = 0; k < columns; k++)
            a[i][k] = rand() %21 - 10;
}
// -------------------------------------------------------------
void printf_array (int a[][COLS], int rows, int columns) {
    for (int i = 0; i < rows; i++, puts(""))
        for (int k = 0; k < columns; k++)
            printf("% 4d", a[i][k]);
    puts("");
}
// -------------------------------------------------------------
div_t maximum_arr (int a[][COLS], int rows, int columns, int p) {
    div_t r = {-1, -1};
    for (int i = 0; i < rows; i++)
        for (int k = 0; k < columns; k++)
            if (a[i][k] < 0 && -a[i][k] <= p) {
                if (r.quot < 0 || a[i][k] > a[r.quot][r.rem])
                    r = (div_t){i, k};
            }
    return r;
}
// -------------------------------------------------------------
1
0 / 0 / 0
Регистрация: 15.12.2022
Сообщений: 19
19.12.2022, 19:43  [ТС] 3
Это было познавательно, а есть вариант более простого способа? Мне не понятно практически все, что происходит в программе.
0
2487 / 1145 / 707
Регистрация: 25.04.2016
Сообщений: 3,291
19.12.2022, 20:22 4
Смотря что считать более простым. Более простой для понимания? Есть, конечно.
0
0 / 0 / 0
Регистрация: 15.12.2022
Сообщений: 19
19.12.2022, 20:45  [ТС] 5
Да, верно, для понимания. Просто мои знания находятся на низком уровне, так как учить я только начал. А в вашем выше написанном коде я некоторый синтаксис впервые вижу. В идеале на максимально базовом уровне. Я действительно хочу разобраться в том, как решить задачу, но и прыгнуть выше головы не в состоянии.
0
2487 / 1145 / 707
Регистрация: 25.04.2016
Сообщений: 3,291
19.12.2022, 20:54 6
Лучший ответ Сообщение было отмечено Вилод как решение

Решение

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
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
 
// размеры массива (можно записать через enum):
#define ROWS 4
#define COLS 5
 
int main (void)
{
    int a[ROWS][COLS];
    srand((unsigned) time(NULL) / 2);       // новая точка отсчета случайных
 
    int p = rand() %10;             // случайное значение p
    int pos_i = -1, pos_k = -1;     // начальная позиция максимума ``
 
    // `` индексы массива не могут быть отрицательными, поэтому если после
    // поиска индексы так и останутся отрицательными, значит в массиве нет
    // ни одного числа, удовлетворяющего условию задачи
 
    for (int i = 0; i < ROWS; i++)
    {
        for (int k = 0; k < COLS; k++)
        {
            printf("%4d", a[i][k] = rand() %21 - 10);   // заполняем случайными и выводим на экран
            if (a[i][k] < 0 && -a[i][k] <= p)           // если встретилось отрицательное по модулю не более p
                if (pos_i < 0 || a[i][k] > a[pos_i][pos_k])     // если это в первый раз или нашли большее значение
                {
                    pos_i = i;
                    pos_k = k;
                }
        }
        puts("\n");     // printf("\n\n");
    }
 
    if (pos_i >= 0)
        printf("maximum negative not exceeding %d: a[%d][%d] = %d\n",
            p, pos_i, pos_k, a[pos_i][pos_k]
        );
    else
        printf("no negative elements not exceeding %d\n", p);
    return 0;
}
1
0 / 0 / 0
Регистрация: 15.12.2022
Сообщений: 19
19.12.2022, 21:09  [ТС] 7
Огромное спасибо, это именно то, что и надо.
0
0 / 0 / 0
Регистрация: 15.12.2022
Сообщений: 19
02.01.2023, 21:44  [ТС] 8
Можно еще просьбу. Требуется так же сделать ручной ввод P и самой матрицы.
0
2487 / 1145 / 707
Регистрация: 25.04.2016
Сообщений: 3,291
02.01.2023, 23:30 9
Вилод, scanf вам в помощь.
1
02.01.2023, 23:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.01.2023, 23:30
Помогаю со студенческими работами здесь

В матрице определить номер и значение максимального отрицательного элемента
В матрице определить номер и значение максимального отрицательного элемента. Определил значение...

определить местоположение максимального элемента
Даны матрицы А(3,5), В(5,2), С(4,6). В каждой матрице определить местоположение максимального...

Нахождение максимального отрицательного элемента, и минимального положительного в матрице
Скажите пожалуйста, каким образом найти минимальный из положительных элементов, и максимальный из...

В заданной матрице необходимо упорядочить по возрастанию элементы каждой строки и найти величину и местоположение максимального элемента матрицы
помогите написать программу! (В заданной матрице необходимо упорядочить по возрастанию элементы...

в прямоугольной матрице определить количество столбцов, содержащих только числа 1-го знака (положительного и отрицательного...
в прямоугольной матрице определить количество столбцов, содержащих только числа 1-го знака...

дана матрица. найти значение максимального элемента . если их несколько, то определить их количество и местоположение.
uses crt; var mas:array of real; max,kol,l,n,j,a,i:integer; begin clrscr; randomize; write...

Матрицы. Найти сумму элементов заштрихованной области. Определить значения и местоположение максимального элемента
Помогите пожалуйста с задачей на С. Дана целочисленная матрица 8x12. Найти сумму элементов...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru