Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Glaz97
0 / 0 / 1
Регистрация: 23.11.2014
Сообщений: 61
#1

Как вывести матрицу в которой наибольшее число строк, содержащих одни нули? - C++

19.04.2015, 16:15. Просмотров 348. Ответов 7
Метки нет (Все метки)

У меня есть 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
#include <iostream>
using namespace std;
int main(){
int m,n,i,j,k;
int **a, **b, **c;
setlocale(LC_ALL, "rus"); 
cout<<"Введите размер матриц"<<endl;
cin>>n;
a=new int*[n];
b=new int*[n];
c=new int*[n];
 
for (i=0;i<n;i++){
        a[i]=new int[n];
    b[i]=new int[n];
    c[i]=new int[n];}
cout<<"Введите 1-ую матрицу"<<endl;
for (i=0;i<n;i++){
                for (j=0; j<n; j++){
                        cin>>a[i][j];}}
cout<<"Введите 2-ую матрицу"<<endl;
for (i=0;i<n;i++){
                for (j=0; j<n; j++){
                        cin>>b[i][j];}}
cout<<"Введите 3-ую матрицу"<<endl;
for (i=0;i<n;i++){
                for (j=0; j<n; j++){
                        cin>>c[i][j];}}
cout<<"Вывод матриц:"<<endl;
        for (i=0;i<n;i++){
                for (j=0;j<n;j++){
                        cout<<a[i][j]<<" ";}
        cout<<endl;}
    cout<<endl;
    for (i=0;i<n;i++){
                for (j=0;j<n;j++){
                        cout<<b[i][j]<<" ";}
        cout<<endl;}
    cout<<endl;
    for (i=0;i<n;i++){
                for (j=0;j<n;j++){
                        cout<<c[i][j]<<" ";}
        cout<<endl;}
        
 system("pause");
return 0;
}
Добавлено через 49 минут
Дайте хоть идею как делать!

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

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

Упорядочить массив по убыванию и найти сумму элементов строк, содержащих нули
Дана целочисленная прямоугольная матрица размера M*N. • Упорядочить строки...

получить матрицу Б в которой отсутствуют все столбцы и строки, содержащие нули
Добрый день. Помогите пожалуйста с задачей по с++. Нужно из матрицы А (любой...

Создать матрицу количество строк которой равно количеству строк файла
Здравствуйте. Хочу из файла считать данные построчно. Считаю количество...

Функция генерирует одни нули для матрицы
Написал функцию, которая должна рандомно генерировать матрицу заданых размеров,...

Найти строку матрицы, в которой среднее арифметическое число отрицательных значений наибольшее
Двумерный целочисленный массив 6 строки на 3 столбцов. Заполнить его...

7
maks242
47 / 21 / 11
Регистрация: 01.11.2013
Сообщений: 255
Завершенные тесты: 6
19.04.2015, 16:34 #2
Glaz97,
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
#include <iostream>
using namespace std;
int main(){
    int m, n, i, j, k;
    int **a, **b, **c;
    setlocale(LC_ALL, "rus");
    cout << "Введите размер матриц" << endl;
    cin >> n;
    a = new int*[n];
    b = new int*[n];
    c = new int*[n];
    int *pCountOf0 = new int[3];
    int CountOf0 = 0;
    for (i = 0; i<n; i++){
        a[i] = new int[n];
        b[i] = new int[n];
        c[i] = new int[n];
    }
    cout << "Введите 1-ую матрицу" << endl;
    for (i = 0; i<n; i++){
        for (j = 0; j<n; j++){
            cin >> a[i][j];
            if (a[i][j] == 0)
            {
                CountOf0++;
            }
        }
    }
    pCountOf0[0] = CountOf0;
    CountOf0 = 0;
    cout << "Введите 2-ую матрицу" << endl;
    for (i = 0; i<n; i++){
        for (j = 0; j<n; j++){
            cin >> b[i][j];
            if (a[i][j] == 0)
            {
                CountOf0++;
            }
        }
    }
    pCountOf0[1] = CountOf0;
    CountOf0 = 0;
    cout << "Введите 3-ую матрицу" << endl;
    for (i = 0; i<n; i++){
        for (j = 0; j<n; j++){
            cin >> c[i][j];
            if (a[i][j] == 0)
            {
                CountOf0++;
            }
        }
    }
    pCountOf0[2] = CountOf0;
    CountOf0 = 0;
    cout << "Вывод матриц:" << endl;
    int MostBigMatrix = 0;
    int NumberOfBigMatrix;
    for (int i = 0; i < 3; i++)
    {
        if (MostBigMatrix < pCountOf0[i])
            MostBigMatrix = pCountOf0[i];
        NumberOfBigMatrix = i;
    }
    switch (NumberOfBigMatrix)
    {
    case 0:
        for (i = 0; i < n; i++){
            for (j = 0; j < n; j++){
                cout << a[i][j] << " ";
            }
            cout << endl;
        }
        break;
    case 1:
        for (i = 0; i < n; i++){
            for (j = 0; j < n; j++){
                cout << b[i][j] << " ";
            }
        }
        break;
    case 2:
        for (i = 0; i < n; i++){
            for (j = 0; j < n; j++){
                cout << c[i][j] << " ";
            }
            cout << endl;
        }
        break;
    }
    system("pause");
    return 0;
}
Старался не менять код
0
Glaz97
0 / 0 / 1
Регистрация: 23.11.2014
Сообщений: 61
19.04.2015, 16:58  [ТС] #3
У меня ваша программа выводит просто последнюю матрицу...А мне нужно ту, в которой больше строк с нулями.

Добавлено через 17 минут
Есть ли у кого еще идеи?
0
maks242
47 / 21 / 11
Регистрация: 01.11.2013
Сообщений: 255
Завершенные тесты: 6
19.04.2015, 17:02 #4
Я немного там ошибся
Вот это замените:
C++
1
2
3
if (MostBigMatrix < pCountOf0[i])
            MostBigMatrix = pCountOf0[i];
        NumberOfBigMatrix = i;
на это
C++
1
2
3
4
5
        if (MostBigMatrix < pCountOf0[i])
        {
            MostBigMatrix = pCountOf0[i];
            NumberOfBigMatrix = i;
        }
0
Glaz97
0 / 0 / 1
Регистрация: 23.11.2014
Сообщений: 61
19.04.2015, 17:06  [ТС] #5
А теперь выводит только матрицу 1-вую если в ней есть нули, а еще игнорирует другие матрицы, когда в них больше нулей.
0
Andryusha
0 / 0 / 0
Регистрация: 19.04.2015
Сообщений: 13
19.04.2015, 17:07 #6
тут есть http://www.cyberforum.ru/cpp-beginners/thread455855.html, только цикл последний не нужен, ищите сумму по рядках матриц, и сделайте счетчик. Если сумма строки = 0, то счетчик увеличивайте, потом сравните счетчики матриц, и выведите необходимую
0
Glaz97
0 / 0 / 1
Регистрация: 23.11.2014
Сообщений: 61
19.04.2015, 17:22  [ТС] #7
Например так?Но у меня в сумме строк выдает не число, а что-то вроде этого e3xxx232x как исправить?
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
#include <iostream>
using namespace std;
int main(){
int m,n,i,j,k;
int **a, **b, **c,**sum;
setlocale(LC_ALL, "rus"); 
cout<<"Введите размер матриц"<<endl;
cin>>n;
a=new int*[n];
b=new int*[n];
c=new int*[n];
sum=new int*[n];
for (i=0;i<n;i++){
        a[i]=new int[n];
    b[i]=new int[n];
    c[i]=new int[n];
    sum[i]=new int[n];}
cout<<"Введите 1-ую матрицу"<<endl;
for (i=0;i<n;i++){
                for (j=0; j<n; j++){
                        cin>>a[i][j];}}
                        
                        for(int i=0;i<n;i++){
                sum[i]=0;
                for(int j=0;j<m;j++){
        sum[i]+=a[i][j];
                }
        cout<<"stroka = "<<i<<". SUM = "<<sum[i]<<"."<<endl;
                }
0
Andryusha
0 / 0 / 0
Регистрация: 19.04.2015
Сообщений: 13
19.04.2015, 23:25 #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
#include <iostream>
using namespace std;
int main(){
    int m, n, i, j, k;
    int **a, **b, **c,sum=0,z=0;
    setlocale(LC_ALL, "rus");
    cout << "Введите размер матриц" << endl;
    cin >> n;
    a = new int*[n];
    b = new int*[n];
    c = new int*[n];
    for (i = 0; i < n; i++){
        a[i] = new int[n];
        b[i] = new int[n];
        c[i] = new int[n];
    }
    cout << "Введите 1-ую матрицу" << endl;
    for (i = 0; i < n; i++){
        for (j = 0; j < n; j++){
            cin >> a[i][j];
        }
    }
 
    for (int i = 0; i < n; i++){
        sum = 0;
        for (int j = 0; j < n; j++)
        {
            sum += a[i][j];
 
        }
        if (sum == 0)
        {
            z++;
        }
    }cout << "\n z = " << z << "." << endl;
}
Сделай еще 2 таких счетчика, и затем сравнивай только их))) и выводи нужную тебе матрицу
0
19.04.2015, 23:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.04.2015, 23:25
Привет! Вот еще темы с решениями:

Сформировать матрицу, найти наибольшее среди средних арифметических элементов ее строк
Сформировать матрицу размером MxN и найти наибольшее среди средних...

Сгенерировать матрицу, в которой элементы нечётных строк нулевые
помогите пожалуйста написать программу на С++,в которой :1) все элементы...

Считать матрицу из файла, найти количество строк, содержащих хотя бы один ноль (файловый ввод/вывод)
Собственно код прозрачный , но не работает. Должен открыть фаил с матрицей,...

Массив: вывести число, повторяющееся наибольшее число раз.
Господа, прошу помощи. Необходимо написать простенькую программу, а я к...


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

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

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