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

Если в матрице есть нули, то заменить их суммой max и min последнего столбца - C++

Восстановить пароль Регистрация
 
Benzin102
0 / 0 / 0
Регистрация: 14.06.2014
Сообщений: 8
15.06.2014, 07:27     Если в матрице есть нули, то заменить их суммой max и min последнего столбца #1
Дана матрица порядка n. Найти в последнем столбце max и min. Если в матрице есть нули, то заменить их суммой max и min последнего столбца
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.06.2014, 07:27     Если в матрице есть нули, то заменить их суммой max и min последнего столбца
Посмотрите здесь:

C++ Max и min в матрице
C++ Нахождение max и min в матрице . и поменять их местами
Поменять столбцы матрицы с min и max элементами C++
Занулить элементы в матрице между min и max C++
В матрице 3 х 3 найти max и min значения C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Max Dark
В поиске работы
 Аватар для Max Dark
1546 / 1399 / 501
Регистрация: 09.10.2013
Сообщений: 3,185
Записей в блоге: 8
Завершенные тесты: 2
15.06.2014, 11:18     Если в матрице есть нули, то заменить их суммой max и min последнего столбца #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
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
#include <stdio.h>
#include <limits.h>
#include <stdlib.h>
#include <stdbool.h>
 
typedef struct matrix {
    int  **data;
    size_t size;
}matrix;
 
bool matrix_create(matrix* self, size_t size) {
    int **data;
    data = (int**)calloc(size, sizeof(int*));
    if(NULL != data) {
        int** row_iter;
        for(row_iter = data;
            row_iter != (data+size);
            ++row_iter) {
            (*row_iter) = (int*)calloc(size, sizeof(int));
            if(NULL == *row_iter)
                break;
        }
        if(row_iter != (data+size)) {
            while(data != row_iter--) {
                free(*row_iter);
            }
            free(data);
            data = NULL;
        }
    }
    self->size = size;
    self->data = data;
    return self->data != NULL;
}
void matrix_destroy(matrix* self) {
    int **row_iter;
    for(row_iter = self->data;
        row_iter != (self->data + self->size);
        ++row_iter) {
        free(*row_iter);
    }
    free(self->data);
}
int main(int argc, char **argv) {
    matrix m = { NULL, 0 };
    if(matrix_create(&m, 42)) {
        int vmin, vmax, sum;
        vmin = INT_MAX;
        vmax = INT_MIN;
        int **row_iter;
        int  *item_iter;
        for(row_iter = m.data;
            row_iter != (m.data + m.size);
            ++row_iter) {
            if(vmin > *((*row_iter)+m.size))
                vmin = *((*row_iter)+m.size);
            if(vmax < *((*row_iter)+m.size))
                vmax = *((*row_iter)+m.size);
        }
        sum = vmin + vmax;
        for(row_iter = m.data;
            row_iter != (m.data + m.size);
            ++row_iter) {
            for(item_iter = *row_iter;
                item_iter != ((*row_iter)+m.size-1);
                ++item_iter) {
                    if(0 == *item_iter)
                        *item_iter = sum;
            }
        }
        matrix_destroy(&m);
    }
    return 0;
}
ввод-вывод сделайте сами

Добавлено через 13 минут
в main ошибка, дожнобыть как то так
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
nt main(int argc, char **argv) {
    matrix m = { NULL, 0 };
    if(matrix_create(&m, 42)) {
        int vmin, vmax, sum;
        vmin = INT_MAX;
        vmax = INT_MIN;
        int **row_iter;
        int  *item_iter;
        for(row_iter = m.data;
            row_iter != (m.data + m.size);
            ++row_iter) {
            if(vmin > *((*row_iter)+m.size-1))
                vmin = *((*row_iter)+m.size-1);
            if(vmax < *((*row_iter)+m.size-1))
                vmax = *((*row_iter)+m.size-1);
        }
        sum = vmin + vmax;
        for(row_iter = m.data;
            row_iter != (m.data + m.size);
            ++row_iter) {
            for(item_iter = *row_iter;
                item_iter != ((*row_iter)+m.size);
                ++item_iter) {
                    if(0 == *item_iter)
                        *item_iter = sum;
            }
        }
        matrix_destroy(&m);
    }
    return 0;
}
Benzin102
0 / 0 / 0
Регистрация: 14.06.2014
Сообщений: 8
15.06.2014, 11:50  [ТС]     Если в матрице есть нули, то заменить их суммой max и min последнего столбца #3
нужно в С++
nmcf
4306 / 3727 / 1256
Регистрация: 14.04.2014
Сообщений: 14,599
15.06.2014, 12:28     Если в матрице есть нули, то заменить их суммой max и min последнего столбца #4
Это он и есть.
Yandex
Объявления
15.06.2014, 12:28     Если в матрице есть нули, то заменить их суммой max и min последнего столбца
Ответ Создать тему
Опции темы

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