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

Сравнение двумерных матриц - разобрать код - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
Ксения love
 Аватар для Ксения love
0 / 0 / 0
Регистрация: 23.12.2012
Сообщений: 21
19.08.2014, 19:21     Сравнение двумерных матриц - разобрать код #1
Разобрать суть кода, что в нем описанно, функций

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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
int** create_matrix(int n, int m,int tip)
{
    int**variable= NULL; //переменная
    variable = (int**)malloc(sizeof(int*)*n);
    for(int i=0;i<n;i++)
        variable[i]=(int*)malloc(sizeof(int)*m);
    printf("Matrix_successfully_created\n",n,m);//матрицу успешно созданно
    rand_value(variable,n,m); //рандомное значение
    return variable;
}
//----------------------------------------------------------------------------------
void free_memory(int*** matrix,int n)
{
    if((*matrix==NULL) || (matrix == NULL))
    {
        printf("memory_deleted");
    }else
    {
        for(int i=0;i < n;i++)
        {
            free(matrix[i]);
        }
        free(*matrix);
        *matrix=NULL;
    }
}
//----------------------------------------------------------------------------------
int** rand_value(int** matrix, int n, int m)
{
    srand(time(NULL));
    for(int i=0;i<n;i++)
        for(int j=0;j<m;j++)
            matrix[i][j]=rand()%20;
    check (matrix,n,m);
    return matrix;
}
//----------------------------------------------------------------------------------
int* find_max_min(int** matrix,int n,int m)
{
    if((matrix==NULL)||(n==0)||(m==0))
    {
        printf("First_create_a_matrix");// сначала создайте матрицу
        return NULL;
    } else
    {
        int max=matrix[0][0];
        int max_k_n=0,max_k_m=0;
        int min=matrix[0][0];
        int min_k_n=0,min_k_m=0;
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<m;j++)
            {
                if(matrix[i][j] > max)
                {
                    max = matrix[i][j];
                    max_k_n=i;
                    max_k_m=j;
                }
                if(matrix[i][j] < min)
                {
                    min = matrix[i][j];
                    min_k_n=i;
                    min_k_m=j;
                }
            }
        }
        int *return_matrix = (int*)malloc(sizeof(int)*4);
        return_matrix[0]=max_k_n;
        return_matrix[1]=max_k_m;
        return_matrix[2]=min_k_n;
        return_matrix[3]=min_k_m;
        return return_matrix;
    }
}
//----------------------------------------------------------------------------------
void find_value(int** matrix, int n, int m, int value)
{
    if((matrix==NULL)||(n==0)||(m==0))
    {
        printf("First_create_a_matrix");
    } else
    {
        int find=0;
        int index=0;
        int** variable;
        for(int i=0;i<n;i++)
            for(int j=0;j<m;j++)
                if(matrix[i][j] == value)
                    find++;
        variable = (int**)malloc(sizeof(int*)*find);
        for(int i=0;i<find;i++)
            variable[i]=(int*)malloc(sizeof(int)*2);
        for(int i=0;i<n;i++)
            for(int j=0;j<m;j++)
                if(matrix[i][j] == value)
                {
            variable[index][0]=i;
            variable[index][1]=j;
            index++;
        }
        for(int i=0;i<find;i++)
            printf("n=%d,m=%d\n",variable[i][0],variable[i][1]);
    }
}
//----------------------------------------------------------------------------------
int** compare(int** matrix,int** matrix2,int n,int m)
{
    if((matrix==NULL)||(n==0)||(m==0))
    {
        printf("First_create_a_matrix");
        return NULL;
    } else
    {
        int** matrix3 = create_matrix(n,m,1);
        printf("First_matrix:\n");//первая
        check(matrix,n,m);
        printf("second:\n");//вторая
        check(matrix2,n,m);
        for(int i=0;i<n;i++)
            for(int j=0;j<m;j++)
            {
            if(matrix[i][j] > matrix2[i][j])
            {
                matrix3[i][j]=matrix[i][j];
            }else
            {
                matrix3[i][j]=matrix3[i][j];
            }
        }
        printf("The_compare_is_successful\n"); //Сравнение прошло успешно.
        return matrix3;
    }
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.08.2014, 19:21     Сравнение двумерных матриц - разобрать код
Посмотрите здесь:

C++ Сравнение элементов двух двумерных массивов
Перегрузка сложения для двумерных матриц C++
C++ сравнение матриц
C++ Матрицы: сложения двух матриц (двумерных массивов)
Разобрать код с++ C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gru74ik
Модератор
 Аватар для gru74ik
2995 / 1308 / 163
Регистрация: 20.02.2013
Сообщений: 3,739
Записей в блоге: 15
25.08.2014, 12:44     Сравнение двумерных матриц - разобрать код #21
Цитата Сообщение от gru74ik Посмотреть сообщение
если третий аргумент вовсе избыточен, тогда область видимости variable - тело функции create_matrix(), а ведь функция его возращает
Дядя Стёпа предостерегает от таких ошибок:
Миниатюры
Сравнение двумерных матриц - разобрать код  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ксения love
 Аватар для Ксения love
0 / 0 / 0
Регистрация: 23.12.2012
Сообщений: 21
27.09.2014, 10:45  [ТС]     Сравнение двумерных матриц - разобрать код #22
Извините что долго не отвечала, хотела поблагодарить, спасибо огромное, спасибо что нашли для меня время, я очень благодарна что еще есть такие люди)
gru74ik
Модератор
 Аватар для gru74ik
2995 / 1308 / 163
Регистрация: 20.02.2013
Сообщений: 3,739
Записей в блоге: 15
27.09.2014, 13:51     Сравнение двумерных матриц - разобрать код #23
Цитата Сообщение от Ксения love Посмотреть сообщение
Извините что долго не отвечала, хотела поблагодарить, спасибо огромное, спасибо что нашли для меня время, я очень благодарна что еще есть такие люди)
Ух ты, а вот благодарность в наше время ещё более редкая вещь, чем (почти) бескорыстная помощь!
Ксения love
 Аватар для Ксения love
0 / 0 / 0
Регистрация: 23.12.2012
Сообщений: 21
06.10.2014, 20:34  [ТС]     Сравнение двумерных матриц - разобрать код #24
Можете еще помочь в этом же?))только в других функциях
gru74ik
Модератор
 Аватар для gru74ik
2995 / 1308 / 163
Регистрация: 20.02.2013
Сообщений: 3,739
Записей в блоге: 15
06.10.2014, 20:44     Сравнение двумерных матриц - разобрать код #25
Цитата Сообщение от Ксения love Посмотреть сообщение
Можете еще помочь в этом же?))только в других функциях
Да, только с одним условием. Поскольку раздел всё-таки плюсовый (и Си я знаю ещё меньше, чем С++), то давайте пользоваться плюсовым вводом-выводом, плюсовым выделением памяти и т.п.
Ксения love
 Аватар для Ксения love
0 / 0 / 0
Регистрация: 23.12.2012
Сообщений: 21
06.10.2014, 20:54  [ТС]     Сравнение двумерных матриц - разобрать код #26
я конечно мало поняла)
gru74ik
Модератор
 Аватар для gru74ik
2995 / 1308 / 163
Регистрация: 20.02.2013
Сообщений: 3,739
Записей в блоге: 15
07.10.2014, 16:39     Сравнение двумерных матриц - разобрать код #27
Цитата Сообщение от Ксения love Посмотреть сообщение
я конечно мало поняла)
Чтобы вывести сообщение на экран монитора, в языке Си используются функция форматированного вывода printf (подробнее см. раз, два, три), в то время как в C++ используется для подобных целей объект cout (подробнее раз, два, три, четыре).
Пример:
C
1
2
3
4
5
6
#include <stdio.h>
int main(void)
{
    printf("Hello, World!\n");
    return 0;
}
C++
1
2
3
4
5
6
#include <iostream>
int main()
{
    std::cout << "Hello, world!" << std::endl;
    return 0;
}
То же самое с вводом. В языке Си для ввода (например, чтобы пользователь мог ввести какие-то значения с клавиатуры) используется функция scanf (подробнее раз, два, три), в то время как в C++ для подобных целей используется объект cin (подробнее тут).

Цитата Сообщение от gru74ik Посмотреть сообщение
давайте пользоваться плюсовым выделением памяти
В языке программирования С++ для выделения памяти используется оператор new, для освобождения памяти - оператор delete (подробнее: раз и два).
В то время как в Си для подобных целей используются, соответственно, функции malloc() и free() (подробнее: "Динамическое выделение памяти в C").

Добавлено через 23 минуты
P.S. А вообще, чтобы нам хоть как-то понимать друг друга, я бы посоветовал найти одну из этих книг и почитать основы (как правило, это первые 300 страниц книги):
  • Стивен Прата - Язык программирования С++ (2012, 6-е изд.)
  • Стенли Б. Липпман, Жози Лажойе, Барбара Э. Му - Язык программирования C++. Базовый курс (2014, 5-е изд.)
  • Харви М. Дейтел, Пол Дж. Дейтел - Как программировать на C++ (2008, 5-е изд.)
Времени займёт часа два-три вдумчивого чтения (ну, может и немного дольше, не беда - посвятите этому пару вечеров), зато насколько повысится самооценка и самоуважение!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.10.2014, 17:24     Сравнение двумерных матриц - разобрать код
Еще ссылки по теме:

C++ Разобрать код на с++
Сравнение двух двумерных массивов C++
Разобрать код! C++

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

Или воспользуйтесь поиском по форуму:
Algoritmer
 Аватар для Algoritmer
155 / 95 / 13
Регистрация: 07.03.2013
Сообщений: 477
Записей в блоге: 1
16.10.2014, 17:24     Сравнение двумерных матриц - разобрать код #28
Цитата Сообщение от gru74ik Посмотреть сообщение
зато насколько повысится самооценка и самоуважение!
Yandex
Объявления
16.10.2014, 17:24     Сравнение двумерных матриц - разобрать код
Ответ Создать тему
Опции темы

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