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

Ошибка в поиске первого положительного элемента - C++

Восстановить пароль Регистрация
 
Basill
 Аватар для Basill
40 / 40 / 13
Регистрация: 16.02.2013
Сообщений: 197
27.03.2013, 23:42     Ошибка в поиске первого положительного элемента #1
Помогите найти ошибку. Нужно найти первый положительный элемент в двумерном массиве вот код.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
  
  int ib;
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
      {
       if (M[i][j] > 0)
       {
          ib=M[i][j];
            break;    
       }
      }
  }
  
  cout<<"1 положительный элемент="<<ib<<endl;
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.03.2013, 23:42     Ошибка в поиске первого положительного элемента
Посмотрите здесь:

C++ Найти сумму элементов массива, расположенных после первого положительного элемента
C++ Определить значение первого положительного элемента динамического массива
C++ Вывести на печать индексы первого положительного элемента, кратного заданному числу K.
Найти порядковый номер первого положительного элемента массива C++
Определить номер первого положительного элемента массива и произведение следующих элементов C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Friday
ну и долго меня небыло...
 Аватар для Friday
61 / 57 / 8
Регистрация: 24.03.2013
Сообщений: 173
27.03.2013, 23:52     Ошибка в поиске первого положительного элемента #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int ib;
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
      {
       if (M[i][j] > 0)
       {
          ib=M[i][j];
          cout << "1 положительный элемент=" << ib <<endl;
          break;    
       }
      }
 }
попробуй так
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
27.03.2013, 23:52     Ошибка в поиске первого положительного элемента #3
break выходит только из вложенного цикла, а нужно завершать все.
UnsKneD
алкокодер
 Аватар для UnsKneD
153 / 149 / 11
Регистрация: 27.12.2012
Сообщений: 548
27.03.2013, 23:53     Ошибка в поиске первого положительного элемента #4
Basill, код правильный и всё работает. Конечно если вы объявили все переменные и инициализировали массив.
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>
 
using std::cout;
using std::endl;
 
 
int main(){
 
    const int n = 3,m=4;
    int M[3][4] =
    {{-1,-2,0,-4},
     {-1,-2,4,-4},
     {-1,-2,0,-4},
    };
    int ib;
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
      {
       if (M[i][j] > 0)
       {
          ib=M[i][j];
            break;    
       }
      }
  }
  
  cout<<"1 положительный элемент="<<ib<<endl;
 
return 0;
}
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
27.03.2013, 23:55     Ошибка в поиске первого положительного элемента #5
Цитата Сообщение от UnsKneD Посмотреть сообщение
код правильный
Код не правильный.
Basill
 Аватар для Basill
40 / 40 / 13
Регистрация: 16.02.2013
Сообщений: 197
28.03.2013, 00:00  [ТС]     Ошибка в поиске первого положительного элемента #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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include <iostream>
#include <conio.h>
#include <clocale>
using namespace std;
int main()
{
  setlocale (LC_ALL, "Russian");
const int n  = 3, m = 3;
int j,i,M[n][n];
//вводим массив
cout<<"Введите элементы массива: \n";
for (i=0; i<n; i++)
for (j=0; j<m; j++)
{
cout <<"mas["<<( i )<<"]";
cout <<"["<<( j )<<"]->";
cin >> M[i][j];
}
// наибольший элемент массива
 int max=M[0][0];
for(i = 0; i < n; i++)
      for( j = 0; j < m; j++)
{
      if( M[i][j]>max)
      max = M[i][j];
   
}
 cout <<"Максимум: "<< max<<endl;
 
 // Ищем номер 1-го положительного
 
 
int ib;
   for (int i = 0; i < n; i++)
   {
       for (int j = 0; j < m; j++)
     {
      if (M[i][j] > 0)
      {
         ib=M[i][j];
         cout << "1 положительный элемент=" << ib <<endl;
         break;    
      }
     }
}
 
_getch();
   return 0;
}
выдает все первые положительные в каждом из столбцов или строк хрен знает, но не суть.
А вот мне интересно как сделать чтоб просто выдал 1 первый положительный из всего массива
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
28.03.2013, 00:06     Ошибка в поиске первого положительного элемента #7
Неа. Если в матрице будет несколько положительных элементов, то код будет писать сообщение несколько раз. Это тоже неправильно.

Добавлено через 45 секунд
Цитата Сообщение от Basill Посмотреть сообщение
выдает все первые положительные в каждом из столбцов
Да. А надо в матрице.
Цитата Сообщение от Basill Посмотреть сообщение
А вот мне интересно как сделать чтоб просто выдал 1 первый положительный из всего массива
Доходишь до первого положительного и завершаешь выполнение циклов. Все.

Добавлено через 1 минуту
И переменная для хранения результата, в общем-то, не нужна. Когда циклы завершатся, индексы уже будут иметь нужные значения.
Friday
ну и долго меня небыло...
 Аватар для Friday
61 / 57 / 8
Регистрация: 24.03.2013
Сообщений: 173
28.03.2013, 00:07     Ошибка в поиске первого положительного элемента #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
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
#include <iostream>
#include <conio.h>
#include <clocale>
using namespace std;
int main()
{
  setlocale (LC_ALL, "Russian");
const int n  = 1, m = 3;
int j,i,M[n][n];
//вводим массив
cout<<"Введите элементы массива: \n";
for (i=0; i<n; i++)
for (j=0; j<m; j++)
{
cout <<"mas["<<( i )<<"]";
cout <<"["<<( j )<<"]->";
cin >> M[i][j];
}
// наибольший элемент массива
 int max=M[0][0];
for(i = 0; i < n; i++)
      for( j = 0; j < m; j++)
{
      if( M[i][j]>max)
      max = M[i][j];
   
}
 cout <<"Максимум: "<< max<<endl;
 
 // Ищем номер 1-го положительного
 
 
int ib;
   for (int i = 0; i < n; i++)
   {
       for (int j = 0; j < m; j++)
     {
      if (M[i][j] > 0)
      {
         ib=M[i][j];
         cout << "1 положительный элемент=" << ib <<endl;
         break;    
      }
     }
}
 
_getch();
   return 0;
}
Basill
 Аватар для Basill
40 / 40 / 13
Регистрация: 16.02.2013
Сообщений: 197
28.03.2013, 00:12  [ТС]     Ошибка в поиске первого положительного элемента #9
Цитата Сообщение от Friday Посмотреть сообщение
возможно так?
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
#include <iostream>
#include <conio.h>
#include <clocale>
using namespace std;
int main()
{
  setlocale (LC_ALL, "Russian");
const int n  = 1, m = 3;
int j,i,M[n][n];
//вводим массив
cout<<"Введите элементы массива: \n";
for (i=0; i<n; i++)
for (j=0; j<m; j++)
{
cout <<"mas["<<( i )<<"]";
cout <<"["<<( j )<<"]->";
cin >> M[i][j];
}
// наибольший элемент массива
 int max=M[0][0];
for(i = 0; i < n; i++)
      for( j = 0; j < m; j++)
{
      if( M[i][j]>max)
      max = M[i][j];
   
}
 cout <<"Максимум: "<< max<<endl;
 
 // Ищем номер 1-го положительного
 
 
int ib;
   for (int i = 0; i < n; i++)
   {
       for (int j = 0; j < m; j++)
     {
      if (M[i][j] > 0)
      {
         ib=M[i][j];
         cout << "1 положительный элемент=" << ib <<endl;
         break;    
      }
     }
}
 
_getch();
   return 0;
}
И что это дает? то что 1 столбец и 3 строки))) надо из матрицы всей найти

Добавлено через 53 секунды
Vourhey, Можешь подправить как надо?
UnsKneD
алкокодер
 Аватар для UnsKneD
153 / 149 / 11
Регистрация: 27.12.2012
Сообщений: 548
28.03.2013, 00:16     Ошибка в поиске первого положительного элемента #10
Vourhey, ага, я уже понял что накосячил когда одно положительное значение в матрице ввел.
Friday
ну и долго меня небыло...
 Аватар для Friday
61 / 57 / 8
Регистрация: 24.03.2013
Сообщений: 173
28.03.2013, 00:17     Ошибка в поиске первого положительного элемента #11
ой) как-то не заметил, просто протестил, посмотрел что 1 число выводит и всё)
Basill
 Аватар для Basill
40 / 40 / 13
Регистрация: 16.02.2013
Сообщений: 197
28.03.2013, 00:20  [ТС]     Ошибка в поиске первого положительного элемента #12
Friday, ))))))
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
28.03.2013, 00:35     Ошибка в поиске первого положительного элемента #13
Что-нибудь вроде того...
C++
1
2
3
4
5
    bool found = false;
    for (i = 0; i < n && !found; ++i)
        for (j = 0; j < m && !found; ++j)
                found = (M[i][j]>0);
    if(found) cout<<"1 положительный элемент="<<M[i-1][j-1]<<endl;
Добавлено через 6 минут
Если сильно желать и хотеть без дополнительной переменной, то так, как один из кривых вариантов:
C++
1
2
3
4
    for (i = 0; i < n; ++i)
      for (j = 0; j < m; ++j)
        if(M[i][j]>0) i+=n,j+=m;
    if(i>=n) cout<<"1 положительный элемент="<<M[i-(n+1)][j-(m+1)]<<endl;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.03.2013, 04:47     Ошибка в поиске первого положительного элемента
Еще ссылки по теме:

Сумма элементов массива, расположенных после первого положительного элемента C++
Найти сумму элементов массива, расположенных после первого положительного элемента C++
Найти сумму элементов массива, расположенных после первого положительного элемента C++

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

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.03.2013, 04:47     Ошибка в поиске первого положительного элемента #14
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int ib = 0;
for (int i = 0; i < n; i++)
{
    for (int j = 0; j < m; j++)
    {
        if (M[i][j] > 0)
        {
            ib = M[i][j];
            cout << "1 положительный элемент=" << ib <<endl;
            break;    
        }
                  
     }
     if (ib != 0) break;
}
Yandex
Объявления
28.03.2013, 04:47     Ошибка в поиске первого положительного элемента
Ответ Создать тему
Опции темы

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