Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Conroex
35 / 34 / 9
Регистрация: 20.04.2010
Сообщений: 126
#1

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

23.04.2010, 09:20. Просмотров 1105. Ответов 16
Метки нет (Все метки)

Дана целочисленная прямоугольная матрица. Определить кол-во столбцов, содержащих хотя бы один нулевой элемент
http://www.cyberforum.ru/cpp-beginners/thread311068.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.04.2010, 09:20
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Определить количество столбцов матрицы, содержащих хотя бы один нулевой элемент (C++):

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

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

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

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

Найти количество столбцов матрицы, содержащих хотя бы один нулевой элемент
Как-то не могу сдружиться с С++,поэтому прошу помощи ( Условие Дана...

16
easybudda
Модератор
Эксперт CЭксперт С++
10021 / 5944 / 1483
Регистрация: 25.07.2009
Сообщений: 11,230
23.04.2010, 09:58 #2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
...
int matrix[ROWS][COLUMNS], cnt, i, j;
/* заполнить матрицу */
cnt = 0;
for ( j = 0; j < COLUMNS; ++j ){
  for ( i = 0; i < ROWS; ++i ){
    if ( !matrix[i][j] ){
      ++cnt;
      break;
    }
  }
}
/* значение cnt - количество столбцов с нулевыми значениями элементов */
...
1
PointsEqual
ниначмуроФ
838 / 522 / 110
Регистрация: 12.10.2009
Сообщений: 1,915
23.04.2010, 13:03 #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
#include <iostream>
#include <vector>
#include <iomanip>
 
int main(){
 
    int ROWS=0;
    int COLS=0;
    std::cout<<"vvedite kol-vo strok: ";
    std::cin>>ROWS;
    std::cout<<"vvedite kol-vo ctolbcov: ";
    std::cin>>COLS;
    std::vector< std::vector<int> > mas(ROWS, std::vector<int>(COLS));
 
    srand(time(NULL));
    int cnt=0;
 
    for (int i=0; i<ROWS; i++){
        for (int j=0; j<COLS; j++){
            mas[i][j]=0+rand()%10;
            std::cout<<std::setw(5)<<mas[i][j];
            if (!mas[i][j])
            cnt++;
        }
        std::cout<<std::endl<<std::endl;
    }
 
    std::cout<<std::endl<<"kol-vo stolbcov= "<<cnt;
 
    return 0;
}
0
easybudda
Модератор
Эксперт CЭксперт С++
10021 / 5944 / 1483
Регистрация: 25.07.2009
Сообщений: 11,230
23.04.2010, 14:55 #4
PointsEqual, так количество нулевых элементов в массиве посчитается, а нужно столбцы, в которых хотя бы один элемент нулевой...
1
PointsEqual
ниначмуроФ
838 / 522 / 110
Регистрация: 12.10.2009
Сообщений: 1,915
23.04.2010, 15:34 #5
Цитата Сообщение от easybudda Посмотреть сообщение
так количество нулевых элементов в массиве посчитается, а нужно столбцы, в которых хотя бы один элемент нулевой...
да, не то сделал
0
Conroex
35 / 34 / 9
Регистрация: 20.04.2010
Сообщений: 126
24.04.2010, 00:00  [ТС] #6
да да, вот в чём проблема(((
Спасибо за работы.. +
всё равно надо думать как столбцы найти с нулевыми элементами...
0
PointsEqual
ниначмуроФ
838 / 522 / 110
Регистрация: 12.10.2009
Сообщений: 1,915
24.04.2010, 00:04 #7
впихни код easybudda в мой код, и все будет находится
0
Conroex
35 / 34 / 9
Регистрация: 20.04.2010
Сообщений: 126
24.04.2010, 00:05  [ТС] #8
Мозгов не хватает...ещё не настолько много знаю..
и ещё вопрос.... я только недавно начал учить С++.... знаю только модули <iostream.h>,<math.h>,<conio.h> как с теми модулями что у тебя записанны, я ещё не знаком... реально сделать на тех что я знаю?
0
PointsEqual
ниначмуроФ
838 / 522 / 110
Регистрация: 12.10.2009
Сообщений: 1,915
24.04.2010, 00:23 #9
реально

Добавлено через 3 минуты
вот, матрица заполняется числами и подсчитывается количество столбцов с 0 элементами
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
#include <iostream>
#include <vector>
#include <iomanip>
 
int main(){
 
    int ROWS=0;
    int COLS=0;
    std::cout<<"vvedite kol-vo strok: ";
    std::cin>>ROWS;
    std::cout<<"vvedite kol-vo ctolbcov: ";
    std::cin>>COLS;
    std::vector< std::vector<int> > mas(ROWS, std::vector<int>(COLS));
 
    srand(time(NULL));
 
 
    for (int i=0; i<ROWS; i++){
        for (int j=0; j<COLS; j++){
            mas[i][j]=0+rand()%10;
            std::cout<<std::setw(5)<<mas[i][j];
        }
        std::cout<<std::endl<<std::endl;
    }
 
    int cnt=0;
    for ( int j = 0; j < COLS; ++j ){
        for ( int i = 0; i < ROWS; ++i ){
            if ( !mas[i][j] ){
            ++cnt;
            break;
        }
      }
    }
 
    std::cout<<std::endl<<"kol-vo stolbcov= "<<cnt;
 
    return 0;
}
0
Conroex
35 / 34 / 9
Регистрация: 20.04.2010
Сообщений: 126
24.04.2010, 00:25  [ТС] #10
Поможешь?
только ты объясняй где что-то......
0
easybudda
Модератор
Эксперт CЭксперт С++
10021 / 5944 / 1483
Регистрация: 25.07.2009
Сообщений: 11,230
24.04.2010, 00:33 #11
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

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
#include <iostream>
 
using namespace std;
 
int main(){
    const int ROWS = 3;
    const int COLUMNS = 4;
    int matrix[ROWS][COLUMNS];
    
    for ( int i = 0; i < ROWS; ++i ){
        for ( int j = 0; j < COLUMNS; ++j ){
            cout << "MATRIX[" << i << "][" << j << "] = ";
            cin >> matrix[i][j];
        }
    }
    
    cout << endl << "MATRIX:" << endl;
    for ( int i = 0; i < ROWS; ++i ){
        for ( int j = 0; j < COLUMNS; ++j )
            cout << matrix[i][j] << '\t';
        cout << endl;
    }
    
    int cnt = 0;
    for ( int j = 0; j < COLUMNS; ++j )
        for ( int i = 0; i < ROWS; ++i )
            if ( !matrix[i][j] && ++cnt )
                break;
    
    cout << endl << cnt << " columns with zero elements." << endl;
    
    return 0;
}
0
PointsEqual
ниначмуроФ
838 / 522 / 110
Регистрация: 12.10.2009
Сообщений: 1,915
24.04.2010, 00:52 #12
кстати, делать массивы через vector я стал из-за easybudda
0
easybudda
24.04.2010, 01:12
  #13

Не по теме:

Цитата Сообщение от PointsEqual Посмотреть сообщение
кстати, делать массивы через vector я стал из-за easybudda
Опять я во всём виноват!

0
Conroex
35 / 34 / 9
Регистрация: 20.04.2010
Сообщений: 126
01.05.2010, 00:42  [ТС] #14
Я вот так сделал)) и нормально бегает)) всё правильно)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include<iostream.h>
#include<conio.h>
#include<math.h>
void main ()
{const n=2,m=3;
int i,j,x;
int a[n][m];
for (i=0;i<n;i++)
for (j=0;j<m;j++)
{cout<<"BBOD MACUBA"<<endl;
cin>>a>>b;}
x=0;
for (j=0;j<m;j++)
for (i=0;i<n;i++)
if (a[j][i]==0)
x=x+1;
if (x==0)
cout<<"Takux elementov net"<<endl;
else
cout<<"x="<<x<<endl;
getch ();}
Добавлено через 19 минут
Ой, профтыкал....
там идёт
C++
1
cin>>a[i][j];}:)
0
easybudda
Модератор
Эксперт CЭксперт С++
10021 / 5944 / 1483
Регистрация: 25.07.2009
Сообщений: 11,230
01.05.2010, 00:59 #15
Conroex, та же ошибка - считается количество нулей в массиве.
0
Conroex
35 / 34 / 9
Регистрация: 20.04.2010
Сообщений: 126
02.05.2010, 00:54  [ТС] #16
Во блин(( точно...а что надо изменить чтоб работала правильно? только так чтоб мне понятно было))
0
easybudda
Модератор
Эксперт CЭксперт С++
10021 / 5944 / 1483
Регистрация: 25.07.2009
Сообщений: 11,230
02.05.2010, 03:04 #17
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Цитата Сообщение от Conroex Посмотреть сообщение
а что надо изменить чтоб работала правильно?
Надо разобраться с тем, что в 11 посте написано, и ничего не меняя скопировать...

PointsEqual, выпендрёжный вариант того же самого
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 <iostream>
#include <vector>
#include <set>
#include <algorithm>
#include <iterator>
#include <cstdlib>
#include <ctime>
 
int main(){
    const int ROWS = 4;
    const int COLS = 10;
    
    std::vector<std::vector<int> > matrix(ROWS, std::vector<int>(COLS));
    
    std::srand(std::time(NULL));
    for ( int i = 0; i < ROWS; ++i )
        for ( int j = 0; j < COLS; ++j )
            matrix[i][j] = std::rand() % 10;
    
    std::cout << std::endl << "Matrix:" << std::endl;
    for ( std::vector<std::vector<int> >::const_iterator i = matrix.begin(); i != matrix.end(); ++i ){
        std::copy((*i).begin(), (*i).end(), std::ostream_iterator<int>(std::cout, " "));
        std::cout << std::endl;
    }
    
    std::set<int> zeroCols;
    for ( std::vector<std::vector<int> >::const_iterator i = matrix.begin(); i != matrix.end(); ++i ){
        std::vector<int>::const_iterator f = (*i).begin();
        while ( ( f = std::find(f, (*i).end(), 0) ) != (*i).end() ){
            zeroCols.insert(std::distance((*i).begin(), f));
            ++f;
        }
    }
    
    std::cout << std::endl << zeroCols.size() << " column(s) with zero elements." << std::endl;
    
    return 0;
}
0
02.05.2010, 03:04
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.05.2010, 03:04
Привет! Вот еще темы с решениями:

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

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

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

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


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

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

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