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

Определить номер первого из столбцов, содержащих хотя бы один нулевой элемент - C++

Восстановить пароль Регистрация
 
a16a
3 / 3 / 1
Регистрация: 16.02.2014
Сообщений: 116
27.03.2014, 18:18     Определить номер первого из столбцов, содержащих хотя бы один нулевой элемент #1
Помогите решить задачу


15. Дана целочисленная прямоугольная матрица:

а) определить номер первого из столбцов, содержащих хотя бы один нулевой элемент;

б) характеристикой строки целочисленной матрицы назовем сумму ее отрицательных четных элементов. Переставляя строки заданной матрицы, расположить их в соответствии с убыванием характеристик.

Добавлено через 2 минуты
Желательно на языке си, Спасибо!!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.03.2014, 18:18     Определить номер первого из столбцов, содержащих хотя бы один нулевой элемент
Посмотрите здесь:

C++ Определить номер первого из столбцов, содержащих хотя бы один нулевой элемент
Определить номер первого из столбцов, содержащих хотя бы один нулевой элемент C++
Определить номер первого из столбцов матрицы, содержащих хотя бы один нулевой элемент C++
C++ Определить: номер первого из столбцов, содержащих хотя бы один нулевой элемент
C++ Определить номер первого из столбцов, содержащих хотя бы 1 нулевой элемент
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ded_Vasilij
 Аватар для Ded_Vasilij
229 / 211 / 15
Регистрация: 01.09.2012
Сообщений: 2,103
27.03.2014, 18:24     Определить номер первого из столбцов, содержащих хотя бы один нулевой элемент #2
Это вторая, а вообще поиск есть
matrix.h
C++
1
2
3
4
5
6
7
8
#ifndef MATRIX_H
#define MATRIX_H
int ** new_matrix(int size);
void del_matrix(int** &matrix, int size);
void cin_matrix(int** matrix, int size);
void print_matrix(int** matrix, int size);
void bubble(int** matrix, int size);
#endif
matrix.cpp
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
#include "matrix.h"
#include <iostream>
using namespace std;
 
void del_matrix(int** &matrix, int size) //освобождение памяти выделенной под массив
{
    for (int i = 0; i < size; i++)
    {
        delete [] matrix[i];
    }
    delete [] matrix;
    matrix = 0;
}
 
int ** new_matrix(int size)  // выделение памяти под целочисленный массив n*n
{
    int** matrix = 0;
    int i = 0;
    try 
    {
        matrix = new int* [size];
        for (; i < size; i++)
        {
            matrix[i] = new int [size];     
        }
        return matrix;
    }
    catch(bad_alloc e)
    {
        cerr << e.what();
        del_matrix(matrix,i);
    }
}
 
void cin_matrix(int** matrix, int size)//ввод матрицы
    /*int** matrix - двумерный динамический массив
    int size - размер матрицы
    */
{
    for (int i = 0; i < size; i++)
        for (int j = 0; j < size; j++)
        {
            cin >> matrix[j][i];
        }
    cout << endl;
}
 
void print_matrix(int** matrix, int size) //вывод матрицы
{
    for (int i = 0; i < size; i++)
    {
        for (int j = 0; j < size; j++)
        {
            cout << matrix[j][i] << " ";
        }
        cout << endl;
    }
}
 
int charact(int** matrix, int size, int columnnum)
/*
вход: 
-квадратная матрица matrix, 
-ее размер - size, 
-номер столбца columnnum
выход: 
-key сумма   модулей  отрицательных нечетных элементов столбца
*/
{
    int key = 0; //сумма   модулей  отрицательных нечетных элементов столбца
    for (int i = 0; i < size; i++)
    {
        if ((matrix[columnnum][i] < 0) && (matrix[columnnum] [i] %2 != 0))
            key += abs(matrix[columnnum][i]);       
    }
    return key;
}
 
void Swap(int** matrix, int size,int m,int n)
    /*
    перестановка столбцов матрицы
    вход: матрица, ее размер, номера столбцов
    
    */
{
    int* temp2 = matrix[n];
    matrix[n] = matrix[m];
    matrix[m] = temp2;
 
    /*int temp = 0;
    for (int j = 0; j < size; j++)
    {
        temp = matrix[n][j];
        matrix[n][j] = matrix[m][j];
        matrix[m][j] = temp;
    }*/
}
 
/*
сортрировка пузырьком
*/
void bubble(int** matrix, int size)
{
for (int i=size-1;i>0;i--)
  {
    for (int j=0;j<i;j++)
      {
        if(charact(matrix,size,j) > charact(matrix,size,j+1))
          {
            Swap(matrix, size,j,j+1);
          }
     }
  }
}
read_file.h
C++
1
2
3
4
#ifndef READ_FILE_H
#define READ_FILE_H
int** read_file(char* file_name, int &size);
#endif
read_file.cpp
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
#include "read_file.h"
#include "matrix.h"
#include <fstream>
#include <iostream>
using namespace std;
int** read_file(char* file_name, int &size)/*чтение из файла. Вход: имя файла; выход квадратная матрица*/
{   
    ifstream f(file_name);
    if(!f) 
    { 
        cout << "file not found!";
        return 0;
    }
    f >> size;//считываем размер
    
    int elem = 0;
    if(!f || size <= 0) 
    { 
        cout << "read error"; 
        return 0;
    }
 
    int** matrix = new_matrix(size);
    if (!matrix)
    {
        cout << "error" << endl;
        return 0;
    }
    for (int i = 0; i < size; i++)
        for (int j = 0; j < size; j++)
        {
            f >> elem;
            if(!f) 
            {               
                cout << "read error" << endl; 
                del_matrix(matrix,size);
                return 0;
            }           
            matrix[j][i] = elem;
        }
    return matrix;
}
main.cpp
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
#include "matrix.h"
#include "read_file.h"
#include <iostream>
#include <fstream>
 
using namespace std;
 
int main(int argc, char** argv)
{
    
    int size = 0;
    int** matrix = 0;
 
    if(argc > 1)
    {
        cout << argv[1] << endl;
        matrix = read_file(argv[1],size);
        if (!matrix)
        {
            cout << "error!" << endl;
            return -1;
        }
    }
    else
    {
        cin >> size;
        if (size <= 0)
        {
            cout << "error" << endl;
            return -1;
        }
        matrix = new_matrix(size);
        if(!matrix) 
        {
            cout << "error" << endl;
            return -1;
        }
        cin_matrix(matrix, size);
    }   
    cout << "original matrix" << endl;
    print_matrix(matrix,size);
    cout << "sorting matrix" << endl;
    bubble(matrix,size);
    print_matrix(matrix,size);
    del_matrix(matrix,size);    
    system("pause");
    return 0;
}
a16a
3 / 3 / 1
Регистрация: 16.02.2014
Сообщений: 116
27.03.2014, 18:44  [ТС]     Определить номер первого из столбцов, содержащих хотя бы один нулевой элемент #3
Ded_Vasilij, я поиск юзал, но толком точный ответ или задание не нашел, а что здесь много кодов я опять не понимаю ((
Ded_Vasilij
 Аватар для Ded_Vasilij
229 / 211 / 15
Регистрация: 01.09.2012
Сообщений: 2,103
27.03.2014, 19:06     Определить номер первого из столбцов, содержащих хотя бы один нулевой элемент #4
a16a, вот, специально для Вас, все в один спихал
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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
#include <iostream>
#include <fstream>
 
using namespace std;
void del_matrix(int** &matrix, int size) //освобождение памяти выделенной под массив
{
    for (int i = 0; i < size; i++)
    {
        delete [] matrix[i];
    }
    delete [] matrix;
    matrix = 0;
}
 
int ** new_matrix(int size)  // выделение памяти под целочисленный массив n*n
{
    int** matrix = 0;
    int i = 0;
    try 
    {
        matrix = new int* [size];
        for (; i < size; i++)
        {
            matrix[i] = new int [size];     
        }
        return matrix;
    }
    catch(bad_alloc e)
    {
        cerr << e.what();
        del_matrix(matrix,i);
    }
}
 
void cin_matrix(int** matrix, int size)//ввод матрицы
    /*int** matrix - двумерный динамический массив
    int size - размер матрицы
    */
{
    for (int i = 0; i < size; i++)
        for (int j = 0; j < size; j++)
        {
            cin >> matrix[j][i];
        }
    cout << endl;
}
 
void print_matrix(int** matrix, int size) //вывод матрицы
{
    for (int i = 0; i < size; i++)
    {
        for (int j = 0; j < size; j++)
        {
            cout << matrix[j][i] << " ";
        }
        cout << endl;
    }
}
 
int charact(int** matrix, int size, int columnnum)
/*
вход: 
-квадратная матрица matrix, 
-ее размер - size, 
-номер столбца columnnum
выход: 
-key сумма   модулей  отрицательных нечетных элементов столбца
*/
{
    int key = 0; //сумма   модулей  отрицательных нечетных элементов столбца
    for (int i = 0; i < size; i++)
    {
        if ((matrix[columnnum][i] < 0) && (matrix[columnnum] [i] %2 != 0))
            key += abs(matrix[columnnum][i]);       
    }
    return key;
}
 
void Swap(int** matrix, int size,int m,int n)
    /*
    перестановка столбцов матрицы
    вход: матрица, ее размер, номера столбцов
    
    */
{
    int* temp2 = matrix[n];
    matrix[n] = matrix[m];
    matrix[m] = temp2;
}
 
/*
сортрировка пузырьком
*/
void bubble(int** matrix, int size)
{
for (int i=size-1;i>0;i--)
  {
    for (int j=0;j<i;j++)
      {
        if(charact(matrix,size,j) > charact(matrix,size,j+1))
          {
            Swap(matrix, size,j,j+1);
          }
     }
  }
}
int** read_file(char* file_name, int &size)/*чтение из файла. Вход: имя файла; выход квадратная матрица*/
{   
    ifstream f(file_name);
    if(!f) 
    { 
        cout << "file not found!";
        return 0;
    }
    f >> size;//считываем размер
    
    int elem = 0;
    if(!f || size <= 0) 
    { 
        cout << "read error"; 
        return 0;
    }
 
    int** matrix = new_matrix(size);
    if (!matrix)
    {
        cout << "error" << endl;
        return 0;
    }
    for (int i = 0; i < size; i++)
        for (int j = 0; j < size; j++)
        {
            f >> elem;
            if(!f) 
            {               
                cout << "read error" << endl; 
                del_matrix(matrix,size);
                return 0;
            }           
            matrix[j][i] = elem;
        }
    return matrix;
}
int main(int argc, char** argv)
{
    
    int size = 0;
    int** matrix = 0;
 
    if(argc > 1)
    {
        cout << argv[1] << endl;
        matrix = read_file(argv[1],size);
        if (!matrix)
        {
            cout << "error!" << endl;
            return -1;
        }
    }
    else
    {
        cin >> size;
        if (size <= 0)
        {
            cout << "error" << endl;
            return -1;
        }
        matrix = new_matrix(size);
        if(!matrix) 
        {
            cout << "error" << endl;
            return -1;
        }
        cin_matrix(matrix, size);
    }   
    cout << "original matrix" << endl;
    print_matrix(matrix,size);
    cout << "sorting matrix" << endl;
    bubble(matrix,size);
    print_matrix(matrix,size);
    del_matrix(matrix,size);    
    system("pause");
    return 0;
}
a16a
3 / 3 / 1
Регистрация: 16.02.2014
Сообщений: 116
27.03.2014, 19:19  [ТС]     Определить номер первого из столбцов, содержащих хотя бы один нулевой элемент #5
это очень сложно мы тока проходим язык си, и не проходили matrix, а тут ргр с матрицой (
Ded_Vasilij
 Аватар для Ded_Vasilij
229 / 211 / 15
Регистрация: 01.09.2012
Сообщений: 2,103
27.03.2014, 19:32     Определить номер первого из столбцов, содержащих хотя бы один нулевой элемент #6
a16a, я эту задачу на первом курсе писал. Чего тут сложного? Все прокомментировано. Классов нет. matrix - это матрица и есть, а как Вы себе ее представляете?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.03.2014, 19:37     Определить номер первого из столбцов, содержащих хотя бы один нулевой элемент
Еще ссылки по теме:

Двумерный массив. Определить номер первого из столбцов, содержащих хотя бы один нулевой элемент C++
Двумерный массив: номер первого из столбцов, содержащих хотя бы один нулевой элемент C++
C++ Определить номер первого из столбцов матрицы, содержащих хотя бы один нулевой элемент

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

Или воспользуйтесь поиском по форуму:
a16a
3 / 3 / 1
Регистрация: 16.02.2014
Сообщений: 116
27.03.2014, 19:37  [ТС]     Определить номер первого из столбцов, содержащих хотя бы один нулевой элемент #7
Ded_Vasilij, спасибо большое ! но мы максимум что проходили в биб <conio math stdlib stdio> и если честно я задание не понял толком =/
Yandex
Объявления
27.03.2014, 19:37     Определить номер первого из столбцов, содержащих хотя бы один нулевой элемент
Ответ Создать тему
Опции темы

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