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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
bujlka
0 / 0 / 0
Регистрация: 06.11.2012
Сообщений: 18
#1

Дана целочисленная прямоугольная матрица - C++

22.11.2012, 19:37. Просмотров 1115. Ответов 7
Метки нет (Все метки)

Вообщем сделал 2\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
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
#include "stdafx.h"
#include "iostream"
#include "conio.h"
#include "iomanip"
#include "ctime"
using namespace std;
void rand(int **arr, int n, int m)
{
    srand(time(NULL));
    for(int i = 0; i < n; i++)
    {
        for(int j = 0; j < m; j++)
            *(*(arr + i) + j) = rand() % 50;
    }
}
void print(int **arr, int n, int m)
{
    for(int i = 0; i < n; i++)
    {
        for(int j = 0; j < m; j++)
            cout << setw(3) << *(*(arr + i) + j);
        cout << "\n\n";
    }
}
int max_count(int *arr, int n)
{
    int max = arr[0];
    for(int i = 1; i < n; i++)
    {
        if(arr[i] > max)
            max = arr[i];
    }
    return max;
}
void count_kop(int *arr, int n)
{
    int *res = new int[n];
    int k = 0;
    for(int i = 0; i < n; i++)
    {
        int t = arr[i];
        int count = 0;
        for(int j = 0; j < n; j++)
        {
            if(t == arr[j])
                count++;
        }
        if(count != 1)
            res[k++] = arr[i];
    }
    cout << "\n\nМаксимальное из чисел, встречающихся в заданной матрице более одного раза: ";
    cout << max_count(res,k);
    delete []res;
}
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(0,"");
    int n, m, **arr, *res, k;
    cout << "Введите размер строк: ";
    cin >> n;
    cout << "\n\nВведите размер столбцов: ";
    cin >> m;
    arr = new int*[n];
    for(int i = 0; i < n; i++)
        *(arr + i) = new int[m];
    cout << "\n\nМатрица имеет вид: \n\n";
    rand(arr,n,m);
    print(arr,n,m);
    int count = 0;
    for(int i = 0; i < n; i++)
    {
        bool b = false;
        for(int j = 0; j < m; j++)
        {
            if(arr[i][j] == 0)
                b = true;
        }
        if(!b)
            count++;
    }
    cout << "\n\nКоличество строк, не содержащих нулевых элементов: " << count;
    k = 0;
    res = new int[n * m];
    for(int i = 0; i < n; i++)
    {
        for(int j = 0; j < m; j++)
            res[k++] = arr[i][j];
    }
    count_kop(res,k);
    delete []res;
    for(int i = 0; i < n; i++)
        delete[] arr[i];
    delete []arr;
    _getch();
    return 0;
}
а вот собственно задание
Дана целочисленная прямоугольная матрица . Написать программу, определяющую величины:
1) количество строк, не содержащих ни одного нулевого элемента;
2) максимальное значение из чисел, встречающихся в заданной матрице более одного раза;
3) суммы элементов строк и столбцов матрицы
Прошу помочь с 3 пунктом Кто откликнется заранее огромное спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.11.2012, 19:37     Дана целочисленная прямоугольная матрица
Посмотрите здесь:

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

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

Дана целочисленная прямоугольная матрица - C++
Доброго времени суток. Люди, от вас зависит идти мне в армию или нет. 4 месяца лежал в больнице, когда вернулся на учёбу ничего не знал....

Дана целочисленная прямоугольная матрица - C++
Здравствуйте уважаемые программисты. Помогите пожалуйста с заданием. Дана целочисленная прямоугольная матрица. Определить: 1)...

Дана целочисленная прямоугольная матрица - C++
Дана целочисленная прямоугольная матрица. 1) Найдите наименьший элемент среди четных строк этой матрицы. 2) Переставьте местами строки...

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

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
NeonLost
Пес войны
74 / 85 / 3
Регистрация: 23.02.2012
Сообщений: 653
22.11.2012, 20:17     Дана целочисленная прямоугольная матрица #2
чет я не понял, если всех строк и всех столбцов, то сумма будет равна...или каждого по отдельности?..)
bujlka
0 / 0 / 0
Регистрация: 06.11.2012
Сообщений: 18
22.11.2012, 20:50  [ТС]     Дана целочисленная прямоугольная матрица #3
Походу вообще всех , и всех элементов столбцов и всех элементов строк хД Просто такая супер огромная сумма получается
NeonLost
Пес войны
74 / 85 / 3
Регистрация: 23.02.2012
Сообщений: 653
22.11.2012, 21:07     Дана целочисленная прямоугольная матрица #4
если мы так посчитаем сумму элементов строк, зачем нам считать сумму элементов столбцов?..)
bujlka
0 / 0 / 0
Регистрация: 06.11.2012
Сообщений: 18
22.11.2012, 22:11  [ТС]     Дана целочисленная прямоугольная матрица #5
Какой проныра а я и не подумал что это одно и тоже наверно я каким-то образом случайно удалил "четных"
так что скорее всего задание выглядит так

суммы элементов четных строк и столбцов матрицы

скорее всего
NeonLost
Пес войны
74 / 85 / 3
Регистрация: 23.02.2012
Сообщений: 653
22.11.2012, 22:54     Дана целочисленная прямоугольная матрица #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
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
#include "stdafx.h"
#include "iostream"
#include "conio.h"
#include "iomanip"
#include "ctime"
using namespace std;
int Sum (int** arr, int N, int i)
{
    int sum = 0;
    for (int j=0; j<N; j++) 
    {
        sum += arr[j][i];
    }
    return sum;
}
int Sumstr (int** arr, int N, int i)
{
    int sum = 0;
    for (int j=0; j<N; j++) 
    {
        if(j%2!=0)sum += arr[j][i];
    }
    return sum;
}
void rand(int **arr, int n, int m)
{
    srand(time(NULL));
    for(int i = 0; i < n; i++)
    {
        for(int j = 0; j < m; j++)
            *(*(arr + i) + j) = rand() % 50;
    }
}
void print(int **arr, int n, int m)
{
    for(int i = 0; i < n; i++)
    {
        for(int j = 0; j < m; j++)
            cout << setw(3) << *(*(arr + i) + j);
        cout << "\n\n";
    }
}
int max_count(int *arr, int n)
{
    int max = arr[0];
    for(int i = 1; i < n; i++)
    {
        if(arr[i] > max)
            max = arr[i];
    }
    return max;
}
void count_kop(int *arr, int n)
{
    int *res = new int[n];
    int k = 0;
    for(int i = 0; i < n; i++)
    {
        int t = arr[i];
        int count = 0;
        for(int j = 0; j < n; j++)
        {
            if(t == arr[j])
                count++;
        }
        if(count != 1)
            res[k++] = arr[i];
    }
    cout << "\n\nМаксимальное из чисел, встречающихся в заданной матрице более одного раза: ";
    cout << max_count(res,k);
    delete []res;
}
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(0,"");
    int n, m, **arr, *res, k,sum=0,sumstr=0;
    cout << "Введите размер строк: ";
    cin >> n;
    cout << "\n\nВведите размер столбцов: ";
    cin >> m;
    arr = new int*[n];
    for(int i = 0; i < n; i++)
        *(arr + i) = new int[m];
    cout << "\n\nМатрица имеет вид: \n\n";
    rand(arr,n,m);
    print(arr,n,m);
    int count = 0;
    for(int i = 0; i < n; i++)
    {
        bool b = false;
        for(int j = 0; j < m; j++)
        {
            if(arr[i][j] == 0)
                b = true;
        }
        if(!b)
            count++;
    }
    cout << "\n\nКоличество строк, не содержащих нулевых элементов: " << count<<endl;
    k = 0;
    res = new int[n * m];
    for(int i = 0; i < n; i++)
    {
        for(int j = 0; j < m; j++)
            res[k++] = arr[i][j];
    }
    count_kop(res,k);
    for (int i=0; i<n; i++) //по столбцам
    {
        if(i%2!=0)  sum =sum+ Sum (arr, m, i);
    }
    for (int j=0; j<m; j++) //по строкам
    {
        sumstr += Sumstr (arr, n, j);
    }
    cout <<endl<<endl<< "Sum of the column "<<" = "<< sum << endl;
    cout <<endl<<endl<< "Sum of the strok "<<" = "<< sumstr << endl;
    delete []res;
    for(int i = 0; i < n; i++)
        delete[] arr[i];
    delete []arr;
    _getch();
    return 0;
}
bujlka
0 / 0 / 0
Регистрация: 06.11.2012
Сообщений: 18
23.11.2012, 05:46  [ТС]     Дана целочисленная прямоугольная матрица #7
что-то не так код нормально считает матрицы 5х5 6х6 3х3 а 8х10 которая заданна мне по программе выдает ошибку ( крит эрор) и всё конец останавливается (
Первый этап обработки исключения в "0x0084157e" в "kaaba namba 10 qwe.exe": 0xC0000005: Нарушение прав доступа при чтении "0xfdfdfe01". Вот это пишет когда ввожу матрицу х-у а не х-х
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.11.2012, 11:18     Дана целочисленная прямоугольная матрица
Еще ссылки по теме:

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

Дана целочисленная прямоугольная матрица - C++
)Дана целочисленная прямоугольная матрица. определить: 1) Количество отрицательных элементов в тех строках которые содержат хотябы один...

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

дана целочисленная прямоугольная матрица - C++
дана целочисленная прямоугольная матрица 1)определить количество строк,не содержавших не одного нулевого элемента? 2 )максимальное их...

дана целочисленная прямоугольная матрица - C++
определить: максимальное из чисел встречающихся в заданной матрице более одного раза Добавлено через 18 секунд помогите пожалуйста(


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

Или воспользуйтесь поиском по форуму:
LVV
57 / 57 / 4
Регистрация: 15.02.2010
Сообщений: 248
23.11.2012, 11:18     Дана целочисленная прямоугольная матрица #8
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
#include "iostream"
#include "iomanip"
#include "ctime"
using namespace std;
 
//глобальные переменные и константы 
int m,n,**arr,h,z,*pov;
 
//прототипы функций
void Arr();
void Print();
void StrNoK(int);
void Pov();
void Max(int);
void SumChStlb();
void SumChStr();
 
int main()
{
    setlocale(0,"");
   
    cout << "Введите количество строк: m=";
    cin >> m;
    cout << "Введите количество столбцов: n=";
    cin >> n;
//определение динамического двумерного массива
    arr = new int*[m];
    for(int i = 0; i < m; i++)
        arr[i] = new int[n];
        
    
    cout << "Введите минимальное значение элемента мавссива (oт 0 до 32768) ";
    cin >> h;
 
    cout << "Введите максимальное значение элемента мавссива (oт "<<h<<" до 32768) ";
    cin >> z;
 
    Arr();
    
    cout << "\n\nМатрица имеет вид: \n\n";
    Print();
 
    int k=0;
    cout << "\n\nЧисло строк, не содержащих " << k << ", равно: ";
    StrNoK(k);
    
    cout << "\n\nЧастота повторений элементов матрицы:\n";
    pov = new int [z+1];
    Pov();
 
    k=1;
    cout << "\n\nMаксмальное значение из чисел,\n"
        <<"встречающихся в заданной матрице более " << k << " раз(a), равно: ";
    Max(k);
 
    cout << "\n\nСуммы элементов четных строк (с четными индексами 0,2,4 и т.д.):\n";
        SumChStr();
 
    cout << "\n\nСуммы элементов четных столбцов (с четными индексами 0,2,4 и т.д.):\n";
        SumChStlb();
    
    cout << endl;
        
        for(int i = 0; i < m; i++)
        delete[] arr[i];
    delete []arr;
    
    system ("pause");
    return 0;
}
 
 
//заполнение (инициалазация) массива значениями
// от h до z включительно
void Arr()
{
    srand(time(NULL));
      for(int i=0; i<m; i++)
        for(int j=0; j<n; j++)
        {
           arr[i][j] = h + rand()%(z-h+1);
        }
}
 
//вывод исходного массива
void Print()
{
    for(int i=0; i<m; i++)
    {
        for(int j = 0; j < n; j++)
            cout << setw(6) << arr[i][j];
        cout << endl;
     }
}
 
//число строк без элементов имеющих значение k 
void StrNoK (int k)
{
    int yes=0;
    for(int i=0; i<m; i++)
    {
        for(int j=0; j<n; j++)
            if (arr[i][j]==k)
            {
                yes++;
                break;
            }
    }
cout << m-yes << endl;
}
 
//учет и вывод количества повторений чисел
void Pov()
{
    for(int i=h; i<=z; i++) pov[i]=0;
    cout << endl;
    for(int i=0; i<m; i++)
        for(int j=0; j<n; j++)
            pov[arr[i][j]]++;
    for(int i=h; i<=z; i++)
        cout<<"\""<<i<<"\""<<"-"<<pov[i]<<" раз(a), "; 
}
 
//определение максимального из элементов
//встречающтхся более k раз
void Max(int k)
{
    int max=-1;
    for(int i=0; i<m; i++)
        for(int j=0; j<n; j++)
            if (pov[arr[i][j]]>k)
            {
                max=arr[i][j];
                break;
            }
if (max!=-1)
{
    for(int i=0; i<m; i++)
        for(int j=0; j<n; j++)
            if (arr[i][j]>max && pov[arr[i][j]]>k)
                max = arr[i][j];
                cout << max << endl;
 
}
else 
                cout << "(таких элементов нет)" << endl;
}
 
// суммы четных строк
void SumChStr()
{
    int s;
        for(int i=0; i<m; i+=2)
        {
            s=0;
                for(int j=0; j<n; j++)
                    s+=arr[i][j];
            cout << s << "  ";
        }    
}
 
// суммы четных столбцов
void SumChStlb()
{
    int s;
        for(int j=0; j<n; j+=2)
        {
            s=0;
                for(int i=0; i<m; i++)
                    s+=arr[i][j];
            cout << s << "  ";
        }    
}
Yandex
Объявления
23.11.2012, 11:18     Дана целочисленная прямоугольная матрица
Ответ Создать тему
Опции темы

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