Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Basill
40 / 40 / 13
Регистрация: 16.02.2013
Сообщений: 197
#1

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

27.03.2013, 23:42. Просмотров 448. Ответов 13
Метки нет (Все метки)

Помогите найти ошибку. Нужно найти первый положительный элемент в двумерном массиве вот код.
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;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.03.2013, 23:42
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка в поиске первого положительного элемента (C++):

Определить значение первого положительного элемента динамического массива - C++
С указателями недавно знаком, помогите решить. Код нужен на С. Дан динамический целочисленный массив y1,y2,....,yn и динамическая ...

Найти порядковый номер первого положительного элемента массива - C++
Необходимо найти порядковый номер первого положительного элемента одномерного массива с помощью 3 разных циклов.

Сумма элементов массива, расположенных после первого положительного элемента - C++
Помогите доделать последний пункт задачи, пожалуйста! Работаю в Visual Studio 2005, так уж заставили.. В интернете искал, но что-то...

Сумма элементов массива, расположенных после первого положительного элемента - C++
Задание: В одномерном массиве, состоящем из n действительных элементов, найдите: 1) номер максимального по модулю элемента массива; ...

Сумма элементов массива, расположенных после первого положительного элемента - C++
Прошу, помогите с задачей... В одномерном массиве, состоящем из n вводимых с клавиатуры целых элементов, вычислить сумму элементов...

Найти сумму элементов массива, расположенных после первого положительного элемента - C++
помогите с задачкой просто я несилен в C++ если можно то с объяснениями. Вот собственно и она: В одномерном массиве, состоящем из n...

13
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;    
       }
      }
 }
попробуй так
1
Vourhey
Почетный модератор
6486 / 2260 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
27.03.2013, 23:52 #3
break выходит только из вложенного цикла, а нужно завершать все.
0
UnsKneD
алкокодер
154 / 150 / 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;
}
0
Vourhey
Почетный модератор
6486 / 2260 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
27.03.2013, 23:55 #5
Цитата Сообщение от UnsKneD Посмотреть сообщение
код правильный
Код не правильный.
0
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 первый положительный из всего массива
0
Vourhey
Почетный модератор
6486 / 2260 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
28.03.2013, 00:06 #7
Неа. Если в матрице будет несколько положительных элементов, то код будет писать сообщение несколько раз. Это тоже неправильно.

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

Добавлено через 1 минуту
И переменная для хранения результата, в общем-то, не нужна. Когда циклы завершатся, индексы уже будут иметь нужные значения.
0
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;
}
0
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, Можешь подправить как надо?
0
UnsKneD
алкокодер
154 / 150 / 11
Регистрация: 27.12.2012
Сообщений: 548
28.03.2013, 00:16 #10
Vourhey, ага, я уже понял что накосячил когда одно положительное значение в матрице ввел.
0
Friday
ну и долго меня небыло...
61 / 57 / 8
Регистрация: 24.03.2013
Сообщений: 173
28.03.2013, 00:17 #11
ой) как-то не заметил, просто протестил, посмотрел что 1 число выводит и всё)
0
Basill
40 / 40 / 13
Регистрация: 16.02.2013
Сообщений: 197
28.03.2013, 00:20  [ТС] #12
Friday, ))))))
0
Vourhey
Почетный модератор
6486 / 2260 / 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;
1
alsav22
5426 / 4821 / 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;
}
0
28.03.2013, 04:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.03.2013, 04:47
Привет! Вот еще темы с ответами:

Найти сумму элементов массива, расположенных после первого положительного элемента - C++
В одномерном массиве, состоящем из n вещественных элементов, вычислить: сумму элементов массива, расположенных после первого...

Найти сумму элементов массива, расположенных после первого положительного элемента - C++
В общем есть задание: Найти сумму элементов массива, расположенных после первого положительного элемента. По моему код написан...

Вывести на печать индексы первого положительного элемента, кратного заданному числу K. - C++
В заданной целочисленной матрице A(N,M) вывести на начать индексы первого положительного элемента, кратного заданному числу K. Если таких...

Найти сумму элементов массива, расположенных после первого положительного элемента - C++
Здравствуйте, помогите пожалуйста решить задачу на С++ Задание (непрерывные последовательности данных. Одномерные массивы). На языке...


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

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

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