Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 1
Регистрация: 07.04.2013
Сообщений: 44
1

Матрица: определить количество строк, не содержащих ни одного нулевого элемента

05.05.2013, 11:54. Просмотров 1097. Ответов 18
Метки нет (Все метки)

для решения задач:
1) определить количество строк, не содержащих ни одного нулевого
элемента;
2) найти максимальное из чисел, встречающихся в заданном массиве
более одного раза.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "stdafx.h"
#include <conio.h> 
#include <stdio.h>
int main()
{
    int mas[5] [7];
    const int kolStr = 5, kolStb = 7; 
    int i, j,max, mas[kolStr][kolStb] = {0};
    max = mas[0][0];
for (i = 0; i < kolStr; i++)
for (j = 0; j < kolStb; j++)
if (mas[i][j] > max) max = mas[i][j];
}
getch();
return 0;
}
зпутался совсем....не могу дальше
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.05.2013, 11:54
Ответы с готовыми решениями:

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

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

Данная целочисленная прямоугольная матрица. Определить количество строк, не содержащих ни одного нулевого элемента
Эту же задачу я видел здесь https://www.cyberforum.ru/cpp-beginners/thread683947.html ,но там она...

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

18
243 / 244 / 38
Регистрация: 08.04.2013
Сообщений: 927
05.05.2013, 12:08 2
Цитата Сообщение от sergey 7 7 Посмотреть сообщение
int mas[5] [7];
* * const int kolStr = 5, kolStb = 7;
* * int i, j,max, mas[kolStr][kolStb] = {0};
Что ЭТО?

Добавлено через 41 секунду
Зачем два раза(да еще и второй раз неправильно) инициализируете массив?

Добавлено через 8 минут
А нет, второй раз тоже правильно. прошу прощения. Но зачем два раза?
0
0 / 0 / 1
Регистрация: 07.04.2013
Сообщений: 44
05.05.2013, 12:09  [ТС] 3
хотел совместить два цикла этих.....чтоб один делал 1 задание а другой искал 2....
0
243 / 244 / 38
Регистрация: 08.04.2013
Сообщений: 927
05.05.2013, 12:14 4
sergey 7 7, нет,вопрос не в том. Зачем инициализация два раз?
Первый раз Вы создали массив в этой строке
Цитата Сообщение от sergey 7 7 Посмотреть сообщение
int mas[5] [7];
а второй раз в этой
Цитата Сообщение от sergey 7 7 Посмотреть сообщение
int i, j,max, mas[kolStr][kolStb] = {0};
0
0 / 0 / 1
Регистрация: 07.04.2013
Сообщений: 44
05.05.2013, 12:20  [ТС] 5
то есть в 1 задании цикл должен работать с массивом где 7 строк.......искать кол-во этих строк где нет ноля.....а 2 должен найти максимальное значение которое встречается более двух раз....так хотел...
как тогда сделать правильно?допустим я уберу второй массив....но мне нужен именно 1 массив из 5 строк и 7 столбцов
0
243 / 244 / 38
Регистрация: 08.04.2013
Сообщений: 927
05.05.2013, 12:23 6
Цитата Сообщение от sergey 7 7 Посмотреть сообщение
int mas[5] [7];
Вот Ваш массив из 5 строк и 7 столбцов
0
0 / 0 / 1
Регистрация: 07.04.2013
Сообщений: 44
05.05.2013, 12:24  [ТС] 7
я понял...теперь надо выполнить эти задания...как сделать?
0
243 / 244 / 38
Регистрация: 08.04.2013
Сообщений: 927
05.05.2013, 12:30 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
#include <iostream>
using namespace std;
 
const int strsNum=5;
const int rowsNum=7;
 
int main()
{
    int number=0;
    int mas[strsNum][rowsNum];
    for (int i=0;i<strsNum;++i)
    {
        bool temp=true;
        for (int j=0;j<rowsNum;++j)
        {
            if (mas[i][j]==0) temp=false;
            break;
        }
        if (temp) ++number;
    }
    cout<<number<<endl;
    system ("pause");
    return 0;
}
0
0 / 0 / 1
Регистрация: 07.04.2013
Сообщений: 44
05.05.2013, 12:39  [ТС] 9
а 2 как?
0
243 / 244 / 38
Регистрация: 08.04.2013
Сообщений: 927
05.05.2013, 12:56 10
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
#include <algorithm>
#include <iterator>
#include <iostream>
using namespace std;
 
const int strsNum=5;
const int rowsNum=7;
 
int main()
{
    int number=0;
    int mas[strsNum][rowsNum];
    for (int i=0;i<strsNum;++i)
    {
        bool temp=true;
        for (int j=0;j<rowsNum;++j)
        {
            if (mas[i][j]==0) temp=false;
            break;
        }
        if (temp) ++number;
    }
    cout<<number<<endl;
    
    multiset<int, less<int>> MySet;
    for (int i=0;i<strsNum;++i)
        for (int j=0;j<rowsNum;++j)
            MySet.insert(mas[i][j]);
    multiset<int, less<int>>::const_iterator rez=MySet.cbegin();
    while((MySet.count(*rez)<=1)&&(rez!=MySet.cend()))
    {
        rez++;
    }
    if(rez!=MySet.cend())
        cout<<*rez<<endl;
    system ("pause");
    return 0;
}
Возможно немного сложновато получилось,но Вы спрашивайте, если не понятно
0
0 / 0 / 1
Регистрация: 07.04.2013
Сообщений: 44
05.05.2013, 13:02  [ТС] 11
Цитата Сообщение от metaluga145 Посмотреть сообщение
for (int i=0;i<strsNum;++i)
* * {
* * * * bool temp=true;
это значит что i меньше 5,то есть если это не так....не выполнится условие,если так то истина?

Цитата Сообщение от metaluga145 Посмотреть сообщение
multiset<int, less<int>> MySet;
* * for (int i=0;i<strsNum;++i)
* * * * for (int j=0;j<rowsNum;++j)
* * * * * * MySet.insert(mas[i][j]);
* * multiset<int, less<int>>::const_iterator rez=MySet.cbegin();
вот эту часть кода поподробней пожалуйста.....и что такое temp?

Цитата Сообщение от metaluga145 Посмотреть сообщение
while((MySet.count(*rez)<=1)&&(rez!=MySet.cend()))
* * {
* * * * rez++;
* * }
* * if(rez!=MySet.cend())
и здесь немного непонятно....
так это было 2 задание?
0
243 / 244 / 38
Регистрация: 08.04.2013
Сообщений: 927
05.05.2013, 13:07 12
sergey 7 7, там вся программа вместе. и первое и второе задание.
почитайте про multiset. Вам сразу станет ясно
1
0 / 0 / 1
Регистрация: 07.04.2013
Сообщений: 44
05.05.2013, 13:10  [ТС] 13
спасибо)если что обращусь к вам
0
243 / 244 / 38
Регистрация: 08.04.2013
Сообщений: 927
05.05.2013, 13:13 14
sergey 7 7, Сейчас, я немного налажал в коде. Сейчас поправлю
0
0 / 0 / 1
Регистрация: 07.04.2013
Сообщений: 44
05.05.2013, 13:15  [ТС] 15
хорошонадо будет только всё понять в нём
0
243 / 244 / 38
Регистрация: 08.04.2013
Сообщений: 927
05.05.2013, 13:21 16
Вот правильный и точно работающий код(два задания сразу, но без заполнения массива)
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 "stdafx.h"
#include <set>
#include <algorithm>
#include <iterator>
#include <iostream>
using namespace std;
 
const int strsNum=5;
const int rowsNum=7;
 
int main()
{
    int number=0;
    int mas[strsNum][rowsNum];
    for (int i=0;i<strsNum;++i)
    {
        bool temp=true;
        for (int j=0;j<rowsNum;++j)
        {
            if (mas[i][j]==0) temp=false;
            break;
        }
        if (temp) ++number;
    }
    cout<<number<<endl;
    
    multiset<int, less<int>> MySet;
    for (int i=0;i<strsNum;++i)
        for (int j=0;j<rowsNum;++j)
            MySet.insert(mas[i][j]);
    ostream_iterator<int> output(cout, " ");
    copy(MySet.begin(),MySet.end(), output);
    multiset<int, less<int>>::const_reverse_iterator rez=MySet.crbegin();
    while((MySet.count(*rez)<=1)&&(rez!=MySet.crend()))
    {
        rez++;
    }
    if(rez!=MySet.crend())
        cout<<endl<<*rez<<endl;
    system ("pause");
    return 0;
}
Добавлено через 2 минуты
Цитата Сообщение от sergey 7 7 Посмотреть сообщение
хорошонадо будет только всё понять в нём
да в принципе, ничего там сложного нету. немного почитайте) об этом очень хорошо написано у Дейтела, я оттуда часть кода писал.
0
0 / 0 / 1
Регистрация: 07.04.2013
Сообщений: 44
05.05.2013, 13:30  [ТС] 17
Цитата Сообщение от metaluga145 Посмотреть сообщение
multiset<int, less<int>> MySet;
* * for (int i=0;i<strsNum;++i)
* * * * for (int j=0;j<rowsNum;++j)
* * * * * * MySet.insert(mas[i][j]);
* * ostream_iterator<int> output(cout, " ");
* * copy(MySet.begin(),MySet.end(), output);
* * multiset<int, less<int>>::const_reverse_iterator rez=MySet.crbegin();
объясните эту часть кода?и автора точнее пожалуйста....
0
243 / 244 / 38
Регистрация: 08.04.2013
Сообщений: 927
05.05.2013, 13:47 18
Создаем структуру multiset, в которой будут хранится значения типа int и они должны быть упорядочены по возрастанию ( less<int>-это часть отвечает за порядок)
C++
1
multiset<int, less<int>> MySet;
Вводим элементы массива в наш multiset
C++
1
2
3
    for (int i=0;i<strsNum;++i)
        for (int j=0;j<rowsNum;++j)
            MySet.insert(mas[i][j]);
Инициализировали итератор вывода в поток cout, а потом вывели значения всех элементов нашего multiset
C++
1
2
ostream_iterator<int> output(cout, " ");
copy(MySet.begin(),MySet.end(), output);
Инициализировали константный итератор rez, с помощью которого будем идти задом на перед(потому что наибольшие элементы лежат в конце multiset.
C++
1
multiset<int, less<int>>::const_reverse_iterator rez=MySet.crbegin();
Добавлено через 1 минуту
Книга Харви М. Дейтел, Пол Дж. Дейтел "Как программировать на с++"
1
0 / 0 / 1
Регистрация: 07.04.2013
Сообщений: 44
05.05.2013, 13:49  [ТС] 19
ещё почитаю литературу....стало попонятней...огромное спасибо
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.05.2013, 13:49

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Дана целочисленная прямоугольная матрица. Вывести ее на экран и определить количество строк, не содержащих ни одного нулевого элемента.
Дана целочисленная прямоугольная матрица. Вывести ее на экран и определить количество строк, не...

Матрица (Объяснить, как запись считает количество строк не содержащих ни одного нулевого элемента)
Объясните пожалуйста ,как вот эта запись считает количество строк не содержащих ни одного нулевого...

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

Определить количество строк, не содержащих ни одного нулевого элемента
#include &lt;iostream&gt; using namespace std; void main() { setlocale(LC_ALL, &quot;Russian&quot;); int...


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

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

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