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

Количество нулевых, или положительных, или отрицательных элементов в двумерном массиве - C++

Восстановить пароль Регистрация
 
Милаше
0 / 0 / 0
Регистрация: 13.04.2012
Сообщений: 71
10.04.2014, 17:18     Количество нулевых, или положительных, или отрицательных элементов в двумерном массиве #1
Здравствуйте.
Мне нужно составить программу, которая подсчитывает или количество нулевых, или количество положительных, или количество отрицательных элементов в двумерном массиве.
Вроде программа и работает, но выводит какие-то неверные значения количества элементов.
Помогите, пожалуйста, найти ошибку.

C++ (Qt)
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
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
 
//функция выводит массив на экран
void printArray(int array[3][7], const int row, const int column)
{
 cout << "Poluchennyj massiv\n";
 for(int i = 0; i < row; i++)
 {
  for(int j = 0; j < column; j++)
  cout << setw(4) << array[i][j];
  cout << endl;
 }
}
 
//функция читает массив из файла
void fileArray(int array [3][7], const int row, const int column)
{
    ifstream f("array.txt");//создаем объект класса ifstream и сразу указываем файл, с которого будем читать
    if (!f) //проверка открытия файла для чтения
        cout << "Error!" << endl;
    else
    //читаем файл и прочитанное запоминаем в массив
    for(int i = 0; i < row; i++)
    for(int j = 0; j < column; j++)
    f >> array[i][j];
    printArray(array, row, column);//печатаем полученный заполненный массив
}
 
//функция заполнения с клавиатуры
void keyArray(int array [3][7], const int row, const int column)
{
    for(int i = 0; i < row; i++)   //строки массива
    {
        cout << "Vvodim " << i + 1 << " stroku\n"; //подсказка
        for(int j = 0; j < column; j++)   //столбцы массива
        {
            cout << "Vvedite celoe chislo: ";  //выводим подсказку
            cin >> array[i][j];                //запоминаем введенное значение
        }
    }
    printArray(array, row, column);   //печатаем полученный массив
}
 
//void podschet(int array [3][7], const int row, const int column)
int rot (int nul,int pol,int otr)
{
    //int nul, pol, otr;
    const int row = 3, column = 7; //размеры массива
    int array[row][column]; //двумерный массив
nul==0;
pol==0;
otr==0;
for(int i = 0; i < row; i++)
    for(int j = 0; j < column; j++)
        if (array[i][j]>0) pol==pol+1;
            else
            if (array[i][j]<0) otr==otr+1;
            else
            nul==nul+1;
            cout <<"Polozitelnie " << pol << " Otrichatelnie "<< otr << " Nulevie "<< nul;
}
int main()
{
    int nul, pol, otr;
    int k; //счётчик, определяющий как вводить массив
    const int row = 3, column = 7; //размеры массива
    int array[row][column]; //двумерный массив
    cout << "Vvedite '1' dlia chtenia iz faila ili '2' dlia vvoda s klaviaturi"<< endl;
    cin >> k;
    if (k==1)
        fileArray(array, row, column);
    else
        keyArray(array, row, column);
        rot (nul,pol,otr);
    //podschet(int array [3][7], const int row, const int column);
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.04.2014, 17:18     Количество нулевых, или положительных, или отрицательных элементов в двумерном массиве
Посмотрите здесь:

C++ Посчитать количество нулевых элементов в двумерном массиве
C++ Сколько в массиве отрицательных, положительных и нулевых элементов
C++ В двумерном массиве нужно найти количество положительных и отрицательных чисел
C++ Определите в двумерном числовом массиве суммы положительных и отрицательных элементов
Определить количество положительных, отрицательных и нулевых элементов массива. C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
newb_programmer
 Аватар для newb_programmer
237 / 237 / 19
Регистрация: 03.09.2011
Сообщений: 553
10.04.2014, 17:24     Количество нулевых, или положительных, или отрицательных элементов в двумерном массиве #2
Цитата Сообщение от Милаше Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
nul==0;
pol==0;
otr==0;
for(int i = 0; i < row; i++)
* * for(int j = 0; j < column; j++)
* * * * if (array[i][j]>0) pol==pol+1;
* * * * * * else
* * * * * * if (array[i][j]<0) otr==otr+1;
* * * * * * else
* * * * * * nul==nul+1;
wtf?
== не присваивает, а сравнивает

пс: условие можно вот так записать
C++
1
array[i][j]>0?pol++:(array[i][j]<0?otr++:nul++);
да не очень понятно, но короче
Милаше
0 / 0 / 0
Регистрация: 13.04.2012
Сообщений: 71
10.04.2014, 17:27  [ТС]     Количество нулевых, или положительных, или отрицательных элементов в двумерном массиве #3
Это я исправил - всё равно не помогает
C++ (Qt)
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
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
 
//функция выводит массив на экран
void printArray(int array[3][7], const int row, const int column)
{
 cout << "Poluchennyj massiv\n";
 for(int i = 0; i < row; i++)
 {
  for(int j = 0; j < column; j++)
  cout << setw(4) << array[i][j];
  cout << endl;
 }
}
 
//функция читает массив из файла
void fileArray(int array [3][7], const int row, const int column)
{
    ifstream f("array.txt");//создаем объект класса ifstream и сразу указываем файл, с которого будем читать
    if (!f) //проверка открытия файла для чтения
        cout << "Error!" << endl;
    else
    //читаем файл и прочитанное запоминаем в массив
    for(int i = 0; i < row; i++)
    for(int j = 0; j < column; j++)
    f >> array[i][j];
    printArray(array, row, column);//печатаем полученный заполненный массив
}
 
//функция заполнения с клавиатуры
void keyArray(int array [3][7], const int row, const int column)
{
    for(int i = 0; i < row; i++)   //строки массива
    {
        cout << "Vvodim " << i + 1 << " stroku\n"; //подсказка
        for(int j = 0; j < column; j++)   //столбцы массива
        {
            cout << "Vvedite celoe chislo: ";  //выводим подсказку
            cin >> array[i][j];                //запоминаем введенное значение
        }
    }
    printArray(array, row, column);   //печатаем полученный массив
}
 
//void podschet(int array [3][7], const int row, const int column)
int rot (int nul,int pol,int otr)
{
    //int nul, pol, otr;
    const int row = 3, column = 7; //размеры массива
    int array[row][column]; //двумерный массив
nul==0;
pol==0;
otr==0;
for(int i = 0; i < row; i++)
    for(int j = 0; j < column; j++)
        if (array[i][j]>0) pol=pol++;
            else
            if (array[i][j]<0) otr=otr++;
            else
            nul=nul++;
            cout <<"Polozitelnie " << pol << " Otrichatelnie "<< otr << " Nulevie "<< nul;
}
int main()
{
    int nul, pol, otr;
    int k; //счётчик, определяющий как вводить массив
    const int row = 3, column = 7; //размеры массива
    int array[row][column]; //двумерный массив
    cout << "Vvedite '1' dlia chtenia iz faila ili '2' dlia vvoda s klaviaturi"<< endl;
    cin >> k;
    if (k==1)
        fileArray(array, row, column);
    else
        keyArray(array, row, column);
        rot (nul,pol,otr);
    //podschet(int array [3][7], const int row, const int column);
return 0;
}
newb_programmer
 Аватар для newb_programmer
237 / 237 / 19
Регистрация: 03.09.2011
Сообщений: 553
10.04.2014, 17:43     Количество нулевых, или положительных, или отрицательных элементов в двумерном массиве #4
Милаше, вот то что заработало у меня...
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
const int row = 2, column = 3; //размеры массива
int array[row][column]; //двумерный массив
//функция выводит массив на экран
 
void printArray(int array[2][3], const int row, const int column)
{
 cout << "Poluchennyj massiv\n";
 for(int i = 0; i < row; i++)
 {
  for(int j = 0; j < column; j++)
  cout << setw(4) << array[i][j];
  cout << endl;
 }
}
 
//функция заполнения с клавиатуры
void keyArray(int array [2][3], const int row, const int column)
{
    for(int i = 0; i < row; i++)   //строки массива
    {
        cout << "Vvodim " << i + 1 << " stroku\n"; //подсказка
        for(int j = 0; j < column; j++)   //столбцы массива
        {
            cout << "Vvedite celoe chislo: ";  //выводим подсказку
            cin >> array[i][j];                //запоминаем введенное значение
        }
    }
    printArray(array, row, column);   //печатаем полученный массив
}
 
void rot ()
{
    int nul, pol, otr;
    const int row = 2, column = 3; //размеры массива
 nul=0;
 pol=0;
 otr=0;
for(int i = 0; i < row; i++)
    for(int j = 0; j < column; j++)
        if (array[i][j]>0) pol++;
         else if (array[i][j]<0) otr++;
            else
            nul++;
            cout <<"Polozitelnie " << pol << " Otrichatelnie "<< otr << " Nulevie "<< nul;
}
 
int main()
{
    keyArray(array, row, column);
    rot ();
    system("pause");
    return 0;
}

влом все там перебирать... самая основная ошибка в функции rot вы объявляете локальный массив array в котором потом чтото ищете, что какбы нелогично)

вывод:
Кликните здесь для просмотра всего текста
Vvodim 1 stroku
Vvedite celoe chislo: 1
Vvedite celoe chislo: 2
Vvedite celoe chislo: 3
Vvodim 2 stroku
Vvedite celoe chislo: 0
Vvedite celoe chislo: -9
Vvedite celoe chislo: 0
Poluchennyj massiv
1 2 3
0 -9 0
Polozitelnie 3 Otrichatelnie 1 Nulevie 2Для продолжения нажмите любую клавишу .
. .
Милаше
0 / 0 / 0
Регистрация: 13.04.2012
Сообщений: 71
10.04.2014, 18:22  [ТС]     Количество нулевых, или положительных, или отрицательных элементов в двумерном массиве #5
Спасибо Вам большое. Теперь всё работает, как надо.
А вот как можно изменить эту функцию так, чтобы она выводила многократно, в зависимости от запроса, или количество отрицательных, или количество положительных, или количество нулевых элементов?

C++ (Qt)
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
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
const int row = 3, column = 7; //размеры массива
int array[row][column]; //двумерный массив
 
//функция выводит массив на экран
void printArray(int array[3][7], const int row, const int column)
{
 cout << "Poluchennyj massiv\n";
 for(int i = 0; i < row; i++)
 {
  for(int j = 0; j < column; j++)
  cout << setw(4) << array[i][j];
  cout << endl;
 }
}
 
//функция читает массив из файла
void fileArray(int array [3][7], const int row, const int column)
{
    ifstream f("array.txt");//создаем объект класса ifstream и сразу указываем файл, с которого будем читать
    if (!f) //проверка открытия файла для чтения
        cout << "Error!" << endl;
    else
    //читаем файл и прочитанное запоминаем в массив
    for(int i = 0; i < row; i++)
    for(int j = 0; j < column; j++)
    f >> array[i][j];
    printArray(array, row, column);//печатаем полученный заполненный массив
}
 
//функция заполнения с клавиатуры
void keyArray(int array [3][7], const int row, const int column)
{
    for(int i = 0; i < row; i++)   //строки массива
    {
        cout << "Vvodim " << i + 1 << " stroku\n"; //подсказка
        for(int j = 0; j < column; j++)   //столбцы массива
        {
            cout << "Vvedite celoe chislo: ";  //выводим подсказку
            cin >> array[i][j];                //запоминаем введенное значение
        }
    }
    printArray(array, row, column);   //печатаем полученный массив
}
//функция подсчёта элементов
void rot ()
{
    int nul, pol, otr;
nul=0;
pol=0;
otr=0;
for(int i = 0; i < row; i++)
    for(int j = 0; j < column; j++)
        if (array[i][j]>0) pol++;
            else
            if (array[i][j]<0) otr++;
            else
            nul++;
            cout <<"Polozitelnie " << pol << " Otrichatelnie "<< otr << " Nulevie "<< nul;
}
int main()
{
    int nul, pol, otr;
    int k; //счётчик, определяющий как вводить массив
    cout << "Vvedite '1' dlia chtenia iz faila ili '2' dlia vvoda s klaviaturi"<< endl;
    cin >> k;
    if (k==1)
        fileArray(array, row, column);
    else
        keyArray(array, row, column);
        rot ();
return 0;
}
newb_programmer
 Аватар для newb_programmer
237 / 237 / 19
Регистрация: 03.09.2011
Сообщений: 553
10.04.2014, 18:33     Количество нулевых, или положительных, или отрицательных элементов в двумерном массиве #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
void rot (int x)
{
    int f=0;
    switch(x){
    case 1: {
                for(int i = 0; i < row; i++)
                    for(int j = 0; j < column; j++)
                        if (array[i][j]>0) f++;
                            cout <<"Polozitelnie " <<f;
            }
    break;
    case 2: {
                for(int i = 0; i < row; i++)
                    for(int j = 0; j < column; j++)
                        if (array[i][j]<0) f++;
                            cout <<"Otrichatelnie " <<f;
            }
    break;
    case 3: {
                for(int i = 0; i < row; i++)
                    for(int j = 0; j < column; j++)
                        if (!array[i][j]) f++;
                            cout <<"Nulevie " <<f;
            }
    default:
        cout<<"error";
    }
}
или так
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
void rot (int x)
{
    int nul, pol, otr;
    nul=0;
    pol=0;
    otr=0;
    for(int i = 0; i < row; i++)
        for(int j = 0; j < column; j++)
            if (array[i][j]>0) pol++;
                else
                if (array[i][j]<0) otr++;
                else
                nul++;
    switch(x) {
    case 1:
        cout <<"Polozitelnie " << pol;
        break;
    case 2:
        cout <<" Otrichatelnie "<< otr;
        break;
    case 3:
        cout <<" Nulevie "<< nul;
        break;
    default:
        cout<<"error";
    }
}
1-положительные, 2-отрицательные, 3-нулевые
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.04.2014, 18:42     Количество нулевых, или положительных, или отрицательных элементов в двумерном массиве
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
Милаше
0 / 0 / 0
Регистрация: 13.04.2012
Сообщений: 71
10.04.2014, 18:42  [ТС]     Количество нулевых, или положительных, или отрицательных элементов в двумерном массиве #7
newb_programmer, спасибо Вам огромное
Yandex
Объявления
10.04.2014, 18:42     Количество нулевых, или положительных, или отрицательных элементов в двумерном массиве
Ответ Создать тему
Опции темы

Текущее время: 12:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru