Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
Koc52
0 / 0 / 0
Регистрация: 28.11.2013
Сообщений: 36
1

Вывод нулевых элементов двумерного массива

17.11.2016, 21:45. Просмотров 903. Ответов 12
Метки нет (Все метки)

В общем, проблема такова, пытаюсь вывести на экран консоли 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
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
93
94
95
96
97
98
99
100
101
#include<iostream>
#include<math.h>
#include<stdlib.h>
#include<time.h>
using namespace std;
int main()
{
    setlocale(LC_CTYPE, "Russian");
    const int M = 4;
    const int N = 2;
    int A[M][N];
    int i, j;
    srand(time(NULL));
    for (i = 0; i < M; i++)
        for (j = 0; j < N; j++)
        {
        //A[i][j] = rand() % 10 - 5;
        cout<<"Введите значение массива A["<<i<<"]["<<j<<"]= "; cin>>A[i][j];
        }
    for (i = 0; i < M; i++)
    {
        cout << endl;
        for (j = 0; j < N; j++)
            cout << A[i][j] << "\t";
    }
    //Поиск номера минимального элемента
    int min = A[0][0];
    int i_min = 0;
    int j_min = 0;
    for (i = 0; i < M; i++)
        for (j = 0; j < N; j++)
        if (A[i][j] < min)
        {
            min = A[i][j];
            i_min = i;
            j_min = j;
        }
    cout << endl;
    cout << "Номер минимального элемента A["<<i_min<<"]["<<j_min<<"]=" <<min<<endl;
    //Вывод 2х нулевых элементов
    int null=-1;
    int i_null=0;
    int j_null=0;
    int null1=-1;
    int i_null1=0;
    int j_null1=0;
    //Ищем первый нулевой элемент
    for(i=0;i<M;i++)
    {
       for(j=0;j<N;j++)
       {
          if(A[i][j]==0)
          {         
               null=A[i][j];
               i_null=i;
               j_null=j;
               cout<<"Первый нулевой элемент A["<<i_null<<"]["<<j_null<<"]"<<null<<endl;break;
          }
          else continue;
       }
       if(null!=-1) break; 
    }
    //Ищем второй нулевой элемент
    for(i=i_null;i<M;i++)
    {
       for(j=0;j<N;j++)
       {
          if(A[i][j]==0)
          {         
               null1=A[i][j];
               i_null1=i;
               j_null1=j;
               cout<<"Второй нулевой элемент A["<<i_null1<<"]["<<j_null1<<"]"<<null1<<endl; break;
          }
          else continue;
       }
       if(null1!=-1)break;
    }
    cout<<"null="<<null<<endl;
    cout<<"null1="<<null1<<endl;   
    //Сортировка
    int t;
    for(i=0;i<M;i++)
    {           
      for(j=0;j<N;j++)
      {
        for(t=N-1;t>=j+1;t--)        
          if(abs(A[i][t-1])>abs(A[i][t])) {int k=A[i][t];A[i][t]=A[i][t-1];A[i][t-1]=k;}
      }
    }
    cout << "Сортировка"<<endl;
    for(i=0;i<M;i++)
    {
    cout<<endl;
    for(j=0;j<N;j++)
    cout << abs(A[i][j]) << "\t";
    }
    cout<<endl;
system("pause");
return 0;
}
Кликните здесь для просмотра всего текста
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.11.2016, 21:45
Ответы с готовыми решениями:

Вывод на экран количества нулевых элементов одномерного динамического массива и их порядковых номеров
Помогите решить задачу! Разработать метод для вывода на экран количества...

Многофункциональность. Ввод/вывод элементов двумерного массива и их индексов
Попросили сделать эту программу через многофункциональность. 1)Ввести массив А...

Вывод всех элементов двумерного массива, находящихся выше побочной диагонали
Дан двумерный массив размера N×N, заполненный цифрами. Требуется вывести все...

Функции двумерного массива. Транспонировать матрицу через ввод вывод функции двумерного массива.
Транспонировать матрицу через ввод вывод функции двумерного массива.Сначала...

в массиве . найти произведение нулевых элементов, количество элементов, превышающих значение среднего арифметического элементов массива
В массиве Х(N) найти произведение нулевых элементов, количество элементов,...

12
nmcf
6274 / 5577 / 2537
Регистрация: 14.04.2014
Сообщений: 23,468
17.11.2016, 21:52 2
break только внутренний цикл прерывает, а тебе надо оба. Используй флаг или goto.
0
Koc52
0 / 0 / 0
Регистрация: 28.11.2013
Сообщений: 36
17.11.2016, 21:58  [ТС] 3
nmcf, а в коде указать можете как сделать?
0
nmcf
6274 / 5577 / 2537
Регистрация: 14.04.2014
Сообщений: 23,468
17.11.2016, 22:18 4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    for(i=0;i<M;i++)
       for(j=0;j<N;j++)
          if(A[i][j]==0)
          {         
               null=A[i][j];
               i_null=i;
               j_null=j;
               cout<<"Первый нулевой элемент A["<<i_null<<"]["<<j_null<<"]"<<null<<endl;
               goto for2;
          }
 
    for2:
 
    //Ищем второй нулевой элемент
    for(i=i_null;i<M;i++)
    {
       for(j = (i == i_null ? j_null + 1 : 0); j<N;j++)
0
Koc52
0 / 0 / 0
Регистрация: 28.11.2013
Сообщений: 36
17.11.2016, 22:23  [ТС] 5
nmcf, и все равно второй нулевой элемент не отображает...
0
nmcf
6274 / 5577 / 2537
Регистрация: 14.04.2014
Сообщений: 23,468
17.11.2016, 22:27 6
Актуальный вариант покажи.
0
Koc52
0 / 0 / 0
Регистрация: 28.11.2013
Сообщений: 36
17.11.2016, 22:34  [ТС] 7
nmcf, с вашими наработками.
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
93
94
95
96
97
98
99
#include<iostream>
#include<math.h>
#include<stdlib.h>
#include<time.h>
using namespace std;
int main()
{
    setlocale(LC_CTYPE, "Russian");
    const int M = 4;
    const int N = 1;
    int A[M][N];
    int i, j;
    srand(time(NULL));
    for (i = 0; i <= M; i++)
        for (j = 0; j <= N; j++)
        {
        //A[i][j] = rand() % 10 - 5;
        cout<<"Введите значение массива A["<<i<<"]["<<j<<"]= "; cin>>A[i][j];
        }
    for (i = 0; i < M; i++)
    {
        cout << endl;
        for (j = 0; j < N; j++)
            cout << A[i][j] << "\t";
    }
    //Поиск номера минимального элемента
    int min = A[0][0];
    int i_min = 0;
    int j_min = 0;
    for (i = 0; i < M; i++)
        for (j = 0; j < N; j++)
        if (A[i][j] < min)
        {
            min = A[i][j];
            i_min = i;
            j_min = j;
        }
    cout << endl;
    cout << "Номер минимального элемента A["<<i_min<<"]["<<j_min<<"]=" <<min<<endl;
    // Произведение элементов массива между первым и вторым нулевыми элементами
    int null;
    int i_null;
    int j_null;
    int null1;
    int i_null1;
    int j_null1;
    //Ищем первй нулевой элемент
for(i=0;i<M;i++)
       for(j=0;j<N;j++)
          if(A[i][j]==0)
          {         
               null=A[i][j];
               i_null=i;
               j_null=j;
               cout<<"Первый нулевой элемент A["<<i_null<<"]["<<j_null<<"]"<<null<<endl;
               goto for2;
          }
 
    for2:
 
    //Ищем второй нулевой элемент
    for(i=i_null;i<M;i++)
    {
       for(j = (i == i_null ? j_null + 1 : 0); j<N;j++)
       {
          if(A[i][j]==0)
          {         
               null1=A[i][j];
               i_null1=i;
               j_null1=j;
               cout<<"Второй нулевой элемент A["<<i_null1<<"]["<<j_null1<<"]"<<null1<<endl; break;
          }
          else continue;
       }
       if(null1!=-1)break;
    }
    cout<<"null="<<null<<endl;
    cout<<"null1="<<null1<<endl;   
    //Упорядочить элементы массива по возрастанию модулей элементов в строке
    int t;
    for(i=0;i<M;i++)
    {           
      for(j=0;j<N;j++)
      {
        for(t=N-1;t>=j+1;t--)        
          if(abs(A[i][t-1])>abs(A[i][t])) {int k=A[i][t];A[i][t]=A[i][t-1];A[i][t-1]=k;}
      }
    }
    cout << "Сортировка"<<endl;
    for(i=0;i<M;i++)
    {
    cout<<endl;
    for(j=0;j<N;j++)
    cout << abs(A[i][j]) << "\t";
    }
    cout<<endl;
system("pause");
return 0;
}
0
nmcf
6274 / 5577 / 2537
Регистрация: 14.04.2014
Сообщений: 23,468
17.11.2016, 22:57 8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    for(i=i_null;i<M;i++)
    {
       for(j = (i == i_null ? j_null + 1 : 0); j<N;j++)
       {
          if(A[i][j]==0)
          {         
               null1=A[i][j];
               i_null1=i;
               j_null1=j;
               cout<<"Второй нулевой элемент A["<<i_null1<<"]["<<j_null1<<"]"<<null1<<endl;
               goto for2e;
          }
       }
    }
    
    for2e:
0
Koc52
0 / 0 / 0
Регистрация: 28.11.2013
Сообщений: 36
17.11.2016, 23:02  [ТС] 9
nmcf, все равно никак.
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
93
94
95
96
97
98
99
100
101
#include<iostream>
#include<math.h>
#include<stdlib.h>
#include<time.h>
using namespace std;
int main()
{
    setlocale(LC_CTYPE, "Russian");
    const int M = 4;
    const int N = 1;
    int A[M][N];
    int i, j;
    srand(time(NULL));
    for (i = 0; i <= M; i++)
        for (j = 0; j <= N; j++)
        {
        //A[i][j] = rand() % 10 - 5;
        cout<<"Введите значение массива A["<<i<<"]["<<j<<"]= "; cin>>A[i][j];
        }
    for (i = 0; i < M; i++)
    {
        cout << endl;
        for (j = 0; j < N; j++)
            cout << A[i][j] << "\t";
    }
    //Поиск номера минимального элемента
    int min = A[0][0];
    int i_min = 0;
    int j_min = 0;
    for (i = 0; i < M; i++)
        for (j = 0; j < N; j++)
        if (A[i][j] < min)
        {
            min = A[i][j];
            i_min = i;
            j_min = j;
        }
    cout << endl;
    cout << "Номер минимального элемента A["<<i_min<<"]["<<j_min<<"]=" <<min<<endl;
        // Произведение элементов массива между первым и вторым нулевыми элементами
    int null=-1;
    int i_null=0;
    int j_null=0;
    int null1=-1;
    int i_null1=0;
    int j_null1=0;
    //Ищем первй нулевой элемент
     for(i=0;i<M;i++)
       for(j=0;j<N;j++)
          if(A[i][j]==0)
          {         
               null=A[i][j];
               i_null=i;
               j_null=j;
               cout<<"Первый нулевой элемент A["<<i_null<<"]["<<j_null<<"]"<<null<<endl;
               goto for2;
          }
 
    for2:
 
    //Ищем второй нулевой элемент
    for(i=i_null;i<M;i++)
    {
       for(j = (i == i_null ? j_null + 1 : 0); j<N;j++)
       {
          if(A[i][j]==0)
          {         
               null1=A[i][j];
               i_null1=i;
               j_null1=j;
               cout<<"Второй нулевой элемент A["<<i_null1<<"]["<<j_null1<<"]"<<null1<<endl;
               goto vyvod;
          }
       }
    }
    
    vyvod:  
    
    cout<<"null="<<null<<endl;
    cout<<"null1="<<null1<<endl;   
    //Упорядочить элементы массива по возрастанию модулей элементов в строке
    int t;
    for(i=0;i<M;i++)
    {           
      for(j=0;j<N;j++)
      {
        for(t=N-1;t>=j+1;t--)        
          if(abs(A[i][t-1])>abs(A[i][t])) {int k=A[i][t];A[i][t]=A[i][t-1];A[i][t-1]=k;}
      }
    }
    cout << "Сортировка"<<endl;
    for(i=0;i<M;i++)
    {
    cout<<endl;
    for(j=0;j<N;j++)
    cout << abs(A[i][j]) << "\t";
    }
    cout<<endl;
system("pause");
return 0;
}
0
nmcf
6274 / 5577 / 2537
Регистрация: 14.04.2014
Сообщений: 23,468
17.11.2016, 23:12 10
У меня же работает. И в самых первых двух циклах сделай строгое условие.
0
Koc52
0 / 0 / 0
Регистрация: 28.11.2013
Сообщений: 36
17.11.2016, 23:44  [ТС] 11
nmcf, предоставьте тогда скриншот , пожалуйста.
0
nmcf
6274 / 5577 / 2537
Регистрация: 14.04.2014
Сообщений: 23,468
17.11.2016, 23:58 12
Лучший ответ Сообщение было отмечено Koc52 как решение

Решение

И что это даст? http://ideone.com/zLGKIv
0
Koc52
0 / 0 / 0
Регистрация: 28.11.2013
Сообщений: 36
18.11.2016, 00:20  [ТС] 13
nmcf, суть то в том, что у меня она не работает

Добавлено через 11 минут
nmcf, прошу прощения, все заработало. Проблема была в массиве. Сделал по вашему примеру и все заработало! Спасибо!
0
18.11.2016, 00:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.11.2016, 00:20

Вычислить сумму максимального элемента массива и количества нулевых элементов массива
Помогите пожалуйста. Дан линейный массив действительных чисел. Вычислить сумму...

Найти произведение ненулевых элементов массива и подсчитать число нулевых элементов
Дан массив чисел c1,c2,...,c20,среди которых есть нулевые элементы. Найти...

Удалить пять первых нечетных элементов массива. Добавить в конец массива три новых нулевых элемента
Удалить пять первых нечетных элементов массива. Добавить в конец массива три...


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

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

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