С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
a16a
3 / 3 / 1
Регистрация: 16.02.2014
Сообщений: 132
#1

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

27.03.2014, 18:18. Просмотров 433. Ответов 6
Метки нет (Все метки)

Помогите решить задачу


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

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

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

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

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

Определить: номер первого из столбцов, содержащих хотя бы один нулевой элемент - C++
Составить функцию Run которая позволит выполнить следующие действия с двухмерными массивами (если задачу решить нельзя, то сообщит об...

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

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

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

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

6
Ded_Vasilij
231 / 213 / 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;
}
0
a16a
3 / 3 / 1
Регистрация: 16.02.2014
Сообщений: 132
27.03.2014, 18:44  [ТС] #3
Ded_Vasilij, я поиск юзал, но толком точный ответ или задание не нашел, а что здесь много кодов я опять не понимаю ((
0
Ded_Vasilij
231 / 213 / 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;
}
0
a16a
3 / 3 / 1
Регистрация: 16.02.2014
Сообщений: 132
27.03.2014, 19:19  [ТС] #5
это очень сложно мы тока проходим язык си, и не проходили matrix, а тут ргр с матрицой (
0
Ded_Vasilij
231 / 213 / 15
Регистрация: 01.09.2012
Сообщений: 2,103
27.03.2014, 19:32 #6
a16a, я эту задачу на первом курсе писал. Чего тут сложного? Все прокомментировано. Классов нет. matrix - это матрица и есть, а как Вы себе ее представляете?
0
a16a
3 / 3 / 1
Регистрация: 16.02.2014
Сообщений: 132
27.03.2014, 19:37  [ТС] #7
Ded_Vasilij, спасибо большое ! но мы максимум что проходили в биб <conio math stdlib stdio> и если честно я задание не понял толком =/
0
27.03.2014, 19:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.03.2014, 19:37
Привет! Вот еще темы с ответами:

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.