0 / 0 / 0
Регистрация: 27.11.2019
Сообщений: 13
1

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

27.11.2019, 01:20. Показов 1023. Ответов 9
Метки нет (Все метки)

Вот условие:
Для двовимірного масиву з M*N чисел отримати новий одновимірний масив з номерів стовпців, усі елементи яких нулі.
Получить одномерный массив из номеров столбцов, все элементы которых ноли.

Код работает не правильно
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
int main()
{
setlocale(LC_ALL, "ru");
srand(time(NULL));
int m, n, z, k ;
cout << "Ведите розмерность матрици : " << endl;
cin >> m;
cin >> n;
double**a =new double*[m];
double* B = new double[m];
 
for ( int i = 0;i < m;i++)
a[i] = new double[n];
 
for (int i = 0; i < m; i++){
for (int j = 0; j < n; j++) {
a[i][j] = (-1 + rand() % 3); cout << setw(5) << a[i][j];}
cout << endl;cout << endl;cout << endl;}
 
z = 0;
for (int j = 0; j <= n; j++){
k = false;
for (int i = 0; i <= m; i++) {
 
if (a[i][j] != 0) {
k = true;
}
}
if (k!=true) {
B[z] = j; z++;
}
else{
cout << "Не все ноли в "<< j+1 << " столбике";
cout << endl;
}
 
}
for (int i = 0; i < z; i++){
cout << B[i] << endl;
}
 
 
for (int i = 0; i < m; i++)
delete a[i];
delete[]a;
system("pause");
return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.11.2019, 01:20
Ответы с готовыми решениями:

Составить одномерный массив В из номеров столбцов, все элементы которых отрицательны
Помогите написать программу. Дана матрица А(m,n). Составить одномерный массив В, в котором В(j)...

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

Сформировать одномерный массив из номеров столбцов, элементы которых образуют возрастающую последовательность
Дана вещественная матрица D размером 8х12. Сформировать одномерный массив, состоящий из номеров...

Вывести массив номеров строк и массив номеров столбцов, все элементы которых равны только 1 или только 0
Задан размер квадратной матрицы и значения ее элементов (0 или 1). Сформировать и вывести массив...

9
Just Do It!
3374 / 1838 / 618
Регистрация: 23.09.2014
Сообщений: 5,829
27.11.2019, 01:59 2
не тестил.
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
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <iomanip>
 
int main()
{   setlocale(0,"");
    srand(time(NULL));
    int m, n, z, k ;
    std::cout << "Ведите розмерность матрици : \n";
    std::cin >> m;
    std::cin >> n;
    double**a =new double*[m];
    for ( int i = 0; i < m; i++)
        a[i] = new double[n];
        
    double* B = new double[m];
 
    for (int i = 0; i < m; i++)
    {   for (int j = 0; j < n; j++)
        {   a[i][j] = (-1 + rand() % 3);
            std::cout << std::setw(5) << a[i][j];
        }
        std::cout << std::endl;
        std::cout << std::endl;
        std::cout << std::endl;
    }
 
    z = 0;
    for (int j = 0; j < n; j++)
    {   k = false;
        for (int i = 0; i < m; i++)
        {
            if (a[i][j] != 0)
            {   k = true;
            }
        }
        if (k!=true)
        {   B[z] = j;
            z++;
        }
        else
        {   std::cout << "Не все ноли в "<< j+1 << " столбике";
            std::cout << std::endl;
        }
    }
    
    for (int i = 0; i < z; i++)
    {   std::cout << B[i] << std::endl;
    }
 
 
    for (int i = 0; i < m; i++)
        delete a[i];
    delete[]a;
    
    system("pause");
    return 0;
}
0
3653 / 2990 / 828
Регистрация: 25.03.2012
Сообщений: 11,025
Записей в блоге: 1
27.11.2019, 04:35 3
XLAT, что поменялось?
0
Just Do It!
3374 / 1838 / 618
Регистрация: 23.09.2014
Сообщений: 5,829
27.11.2019, 07:53 4
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
что поменялось?
избавил от аппкраша:
Получить одномерный массив из номеров столбцов, все элементы которых нули


но вы потестите, если чо не так, пишите, я обязательно поправлю.
0
Модератор
Эксперт С++
12083 / 9761 / 5903
Регистрация: 18.12.2011
Сообщений: 26,204
27.11.2019, 08:30 5
XLAT,
Цитата Сообщение от XLAT Посмотреть сообщение
if (k!=true)
C++
1
if(!k)
0
Just Do It!
3374 / 1838 / 618
Регистрация: 23.09.2014
Сообщений: 5,829
27.11.2019, 09:24 6
zss,
уже я ответил, что я исправил аппкраш.

дальше,
пусть афтор напишет, что означает:
Цитата Сообщение от Tomash_ Посмотреть сообщение
Код работает не правильно
я хочу услышать расшифровку этой фразы лично от него.

при чем требовать это от него можно явно, а можно и не явно.

Цитата Сообщение от zss Посмотреть сообщение
XLAT,
Цитата Сообщение от XLAT Посмотреть сообщение
if (k!=true)
C++
Выделить код
1
if(!k)
сорри, я не являюсь доверительным лицом и даже простым посредником между афтором и отвечающими.

лучше обращаться напрямую к афтору.
0
Модератор
Эксперт С++
12083 / 9761 / 5903
Регистрация: 18.12.2011
Сообщений: 26,204
27.11.2019, 10:02 7
XLAT, я просто хотел заметить, что не надо пропускать такое написание кода,
т.к. оно является следствием непонимания булевских выражений.
0
Just Do It!
3374 / 1838 / 618
Регистрация: 23.09.2014
Сообщений: 5,829
27.11.2019, 10:03 8
zss,
ок, вот проверяйте:
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
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <iomanip>
 
int main()
{   setlocale(0,"");
    srand(time(NULL));
 
    int m, n;
    std::cout << "Ведите розмерность матрици : \n";
    std::cin >> m;
    std::cin >> n;
    double**a =new double*[m];
    for ( int i = 0; i < m; i++)
        a[i] = new double[n];
        
    int* B = new int[m];
 
    for (int i = 0; i < m; i++)
    {   for (int j = 0; j < n; j++)
        {   a[i][j] = (-1 + rand() % 3);
            std::cout << std::setw(5) << a[i][j];
        }
        std::cout << "\n\n\n";
    }
 
    int b = 0;
    for (int i = 0; i < n; i++)
    {   bool k = false;
        B[b] = 0;
        for (int j = 0; j < m; j++)
        {   
            if (a[j][i] != 0)
            {   k = true;
            }
            else continue;
        }
        
        if (k) std::cout << "Не все ноли в " << i + 1 << " столбике\n";
        else   B[b++] = i+1;
    }
    
    if(B[0] == 0)
    {   std::cout << "Нет столбцов, в которых все нули!\n\n";
    }
    
    std::cout << "Перечень столбцов c нулями:\n";
    for (int i = 0; i < b; i++)
    {   std::cout << B[i] << ", ";
    }
 
    std::cout << "\n\nFINISH ...\n";
 
    for (int i = 0; i < m; i++)
        delete a[i];
    delete[]a;
    
    std::cin.get();
    return 0;
}
0
Модератор
Эксперт С++
12083 / 9761 / 5903
Регистрация: 18.12.2011
Сообщений: 26,204
27.11.2019, 10:34 9
Я бы этот кусочек написал так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int ib = 0; // Index in B array
    for (int i = 0; i < n; i++)
    {   
        bool IsZero = true; // Is Zero column
        //B[ib] = 0;
        for (int j = 0; j < m; j++)
        {   
            if (a[j][i] != 0)
            {   
               IsZero  = false;
                break; 
            }
        }
        if (IsZero )
            B[ib++] = i+1;
        else
            std::cout << "Не все ноли в " << i + 1 << " столбике\n";
    }
    if( ib == 0 )
       std::cout << "Нет столбцов, в которых все нули!\n\n";
Можно, кстати, обойтись вообще без переменной IsZero
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int ib = 0; 
    for (int i = 0; i < n; i++)
    {   
        int j = 0;
        for (; j < m; j++)
            if (a[j][i] != 0)
                break;
        if (j==m ) 
            B[ib++] = i+1;
        else
            std::cout << "Не все ноли в " << i + 1 << " столбике\n";
    }
    if( ib == 0 )
       std::cout << "Нет столбцов, в которых все нули!\n\n";
1
Just Do It!
3374 / 1838 / 618
Регистрация: 23.09.2014
Сообщений: 5,829
27.11.2019, 10:53 10
Цитата Сообщение от zss Посмотреть сообщение
break;
виноват не я, виноват рейт
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.11.2019, 10:53
Помогаю со студенческими работами здесь

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

Составить одномерный массив из номеров строк матрицы, в которых по главной диагонали стоят нули
Ввести с клавиатуры квадратную матрицу. Составить одномерный массив из номеров строк этой матрицы,...

Найти номера столбцов, все элементы которых - нули
Помогите. Дано квадратную матрицу А размера nxn целых чисел. Найти номера столбцов, все элементы...

Найти номера столбцов, все элементы которых - нули
Задача.Дано квадратную матрицу А размера nxn целых чисел. Найти номера столбцов, все элементы...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru