Форум программистов, компьютерный форум CyberForum.ru

Еще матрицы (все на С) - C++

Восстановить пароль Регистрация
 
axiev
0 / 0 / 0
Регистрация: 06.07.2010
Сообщений: 20
06.07.2010, 11:03     Еще матрицы (все на С) #1
Дана действительная матрица размера n*m все элементы которой различны. В каждой строке выбирается элемент с наименьшим значением, затем среди этих чисел выбирается наибольшее. Указать индексы элемента с найденным значением.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.07.2010, 11:03     Еще матрицы (все на С)
Посмотрите здесь:

Проверить, все ли столбцы матрицы упорядочены по возрастанию. Если да, то увеличить все элементы матрицы вдвое C++
C++ Массивы и матрицы(таких заданий еще не было)
Если след матрицы A[n][m] больше 50, то все эелементы матрицы увеличить на 2. C++
подскажите: как вывести на экран числа от 0 до 20.... и еще одна: вывести все четные числа от 0 до 20... C++
Упорядочить все элементы матрицы таким образом, чтобы при чтении матрицы по строкам ее элементы образовывали отсортированный по возрастанию массив C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
buugman
 Аватар для buugman
16 / 16 / 2
Регистрация: 04.07.2010
Сообщений: 51
06.07.2010, 19:23     Еще матрицы (все на С) #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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <cmath>
#define n 5
#define m 6
 
void search_max(double mat);
 
int main(void)
{
    
    int range_min=-20, range_max=20, rang_double=4;
time_t  srand(time(NULL));
    int i,j;
    double matrix[n][m];
    for (i=0;i<n;++i)
    {
        
        for (j=0;j<m;++j)
        {
            matrix[i][j] =((double)(rand()%100)/ (double)(rand()% 100)) * ((rand()% 2) ? 1 : -1);
        }
    }
 
    for (i=0;i<n;++i)
    {
        for (j=0;j<m;++j)
        {
            printf("%5f ",matrix[i][j]);
        }
        printf("\n");
    }
return 0;
 
}
Поиск максималного и индексов оформлю попожже )).
[Freeman]
34 / 34 / 6
Регистрация: 07.06.2010
Сообщений: 118
06.07.2010, 20:36     Еще матрицы (все на С) #3
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
#include <stdio.h>
#define n 3
#define m 4
int main()
{
    int matrix[n][m]={
    {1, 2,-1,6},
    {-3,9,12,11},
    {8, 1, 4,16} };
    int min,max,i_max,j_max;/* max - наибольший элемент из str_min */
    int str_min[n]; /*массив содержащий минимальные
                    элеметы каждой строки */
    for(int i=0;i<n;i++)
    {
        min=matrix[i][0];
        for(int j=0;j<m;j++)
            if(matrix[i][j]<min)
                min=matrix[i][j];
        str_min[i]=min;
    }
 
    max=str_min[0];
    for(int i=0;i<n;i++)
        if(str_min[i]>max)
            max=str_min[i];
 
    /* поиск индексов max */
    for(int i=0;i<n;i++)
        for(int j=0;j<m;j++)
            if (matrix[i][j]==max){
                i_max=i;
                j_max=j; }
 
            printf("i : %d\n",i_max); /* i - индекс строки */
            printf("j : %d\n",j_max); /* j - индекс столбца */
    return 0;
}
axiev
0 / 0 / 0
Регистрация: 06.07.2010
Сообщений: 20
08.07.2010, 17:24  [ТС]     Еще матрицы (все на С) #4
спасибо за помощь но ни одна из них не работает((
NightmareZ
 Аватар для NightmareZ
1336 / 559 / 37
Регистрация: 31.03.2009
Сообщений: 1,907
08.07.2010, 18:50     Еще матрицы (все на С) #5
Цитата Сообщение от axiev Посмотреть сообщение
спасибо за помощь но ни одна из них не работает((
Что значит "не работает"?
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
08.07.2010, 18:59     Еще матрицы (все на С) #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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
/*
*   Дана действительная матрица размера n*m все элементы которой различны.
*   В каждой строке выбирается элемент с наименьшим значением, затем среди этих чисел
*   выбирается наибольшее. Указать индексы элемента с найденным значением.
*/
 
int * max_element(int * arr, size_t cnt){
    int * pMax = arr;
    while ( --cnt )
        if ( *pMax < *(++arr) )
            pMax = arr;
    return pMax;
}
 
int * min_element(int * arr, size_t cnt){
    int * pMin = arr;
    while ( --cnt )
        if ( *pMin > *(++arr) )
            pMin = arr;
    return pMin;
}
 
int * find(const int * arr, size_t cnt, int val){
    while ( cnt-- ){
        if ( *arr == val )
            return (int*)arr;
        ++arr;
    }
    return NULL;
}
 
int main(void){
    int rows, columns, i, j, ** matr, * arr, * pMax;
 
    srand(time(NULL));
 
    printf("Rows: ");
    scanf("%d", &rows);
    printf("Columns: ");
    scanf("%d", &columns);
 
    if ( ( arr = (int*)calloc(rows, sizeof(int)) ) == NULL ){
        perror("calloc");
        exit(EXIT_FAILURE);
    }
 
    printf("\nMatrix:\n");
    if ( ( matr = (int**)calloc(rows, sizeof(int*)) ) == NULL ){
        perror("calloc");
        exit(EXIT_FAILURE);
    }
    for ( i = 0; i < rows; ++i ){
        if ( ( matr[i] = (int*)calloc(columns, sizeof(int)) ) == NULL ){
            perror("calloc");
            exit(EXIT_FAILURE);
        }
        for ( j = 0; j < columns; ++j )
            printf("%02d ", (matr[i][j] = rand() % 100));
        printf("MIN: %02d\n", (arr[i] = *min_element(matr[i], columns)));
    }
 
    printf("\nMaximum of min elements:\n");
    pMax = max_element(arr, rows);
    i = pMax - arr;
    j = find(matr[i], columns, *pMax) - matr[i];
    printf("MATR[%d][%d] = %d\n", i, j, matr[i][j]);
 
    for ( i = 0; i < rows; ++i )
        free(matr[i]);
    free(matr);
    free(arr);
 
    exit(EXIT_SUCCESS);
}
Еще матрицы (все на С)
nikkka
Мат в 32 хода
 Аватар для nikkka
235 / 170 / 8
Регистрация: 10.09.2009
Сообщений: 1,096
08.07.2010, 20:17     Еще матрицы (все на С) #7
easybudda, это консоль на Маке?
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
08.07.2010, 20:21     Еще матрицы (все на С) #8
nikkka, да
[Freeman]
34 / 34 / 6
Регистрация: 07.06.2010
Сообщений: 118
08.07.2010, 21:10     Еще матрицы (все на С) #9
Цитата Сообщение от axiev Посмотреть сообщение
спасибо за помощь но ни одна из них не работает((
В смысле не работает что конкретно не так? Я ее сам компилировал и запускал все работало...
axiev
0 / 0 / 0
Регистрация: 06.07.2010
Сообщений: 20
08.07.2010, 21:34  [ТС]     Еще матрицы (все на С) #10
Цитата Сообщение от [Freeman] Посмотреть сообщение
В смысле не работает что конкретно не так? Я ее сам компилировал и запускал все работало...
программа находит и выдает наибольшее из наименьших значений а не индекс этого значения
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.07.2010, 21:54     Еще матрицы (все на С)
Еще ссылки по теме:

Из существующей матрицы n*m записать в новую матрицу все элементы исходной матрицы, кроме максимального и минимального элемента из каждой строки C++
Определить, что все элементы строки первой матрицы больше соответствующих элементов строки второй матрицы C++
C++ Найти все такие значения k, что все элементы k-го столбца матрицы содержатся в ее k-ой строке

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

Или воспользуйтесь поиском по форуму:
[Freeman]
34 / 34 / 6
Регистрация: 07.06.2010
Сообщений: 118
08.07.2010, 21:54     Еще матрицы (все на С) #11
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
#include <stdio.h>
#define n 3
#define m 4
int main()
{
        int matrix[n][m]={
        {1, 17,-1,6},
        {3,9,12,11},
        {8, 2, 4,16} };
        int min,max,i_max,j_max;/* max - наибольший элемент из str_min */
        int str_min[n]; /*массив содержащий минимальные
                                        элеметы каждой строки */
        for(int i=0;i<n;i++)
        {
                min=matrix[i][0];
                for(int j=0;j<m;j++)
                        if(matrix[i][j]<min)
                                min=matrix[i][j];
                str_min[i]=min;
        }
 
        max=str_min[0];
        for(int i=0;i<n;i++)
                if(str_min[i]>max)
                        max=str_min[i];
 
        /* поиск индексов max */
        for(int i=0;i<n;i++)
                for(int j=0;j<m;j++)
                        if (matrix[i][j]==max){
                                i_max=i;
                                j_max=j; }
 
                        printf("i : %d\n",i_max); /* i - индекс строки */
                        printf("j : %d\n",j_max); /* j - индекс столбца */
                printf("Element : %d\n",matrix[i_max][j_max]);
        return 0;
}
-1, 3 и 2 минимальные элементы каждой строки,программа выводит 3 максимальный элемент из них,
и его индексы, все по условию.
Я только добавил строку
C
1
printf("Element : %d\n",matrix[i_max][j_max]);
Yandex
Объявления
08.07.2010, 21:54     Еще матрицы (все на С)
Ответ Создать тему
Опции темы

Текущее время: 12:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru