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

В двумерном массиве определить первый отрицательный элемент на интервале [a,b] - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.75
Basill
 Аватар для Basill
40 / 40 / 13
Регистрация: 16.02.2013
Сообщений: 197
24.03.2013, 12:07     В двумерном массиве определить первый отрицательный элемент на интервале [a,b] #1
Подскажите пожалуйста что мне нужно про писать в 5 строке чтобы определить первый отрицательный элемент массива
не используя break

C++
1
2
3
4
5
6
7
for (i=1; i<3; i++)
    for (j=1; j<3; j++)
    
    if(a<= M[i][j] && M[i][j]<=b)
       
       
    cout <<"Первый отрицательный элемент массива в интервале [a,b] ="<<z<<endl;
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.03.2013, 12:07     В двумерном массиве определить первый отрицательный элемент на интервале [a,b]
Посмотрите здесь:

C++ Переставить в 1-м массиве первый отрицательный и последний положительный элемент местами
Определить наибольший элемент в двумерном массиве C++
Поменять местами минимальный элемент и первый отрицательный элемент массива целых чисел C++
Для каждого позитивного элемента определить, есть ли в массиве отрицательный элемент с противоположным значениям C++
В двумерном массиве L (M, N) первый элемент поменять с последним и найти сумму отрицательных элементов C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
tratata171
0 / 0 / 0
Регистрация: 24.03.2013
Сообщений: 4
24.03.2013, 12:17     В двумерном массиве определить первый отрицательный элемент на интервале [a,b] #2
можно создать дополнительную переменную типа bool, и в условие добавить проверку на ее истинность


C++
1
2
3
4
5
6
7
8
9
bool q=true;
for (i=1; i<3; i++)
    for (j=1; j<3; j++)
    
    if(a<= M[i][j] && M[i][j]<=b&&q)
       {
           cout <<"Первый отрицательный элемент массива в интервале [a,b] ="<<z<<endl;
           q=false;
       }
Basill
 Аватар для Basill
40 / 40 / 13
Регистрация: 16.02.2013
Сообщений: 197
24.03.2013, 12:22  [ТС]     В двумерном массиве определить первый отрицательный элемент на интервале [a,b] #3
Цитата Сообщение от tratata171 Посмотреть сообщение
C++
1
           cout <<"Первый отрицательный элемент массива в интервале [a,b] ="<<z<<endl;
А выводим мы z или другую букву?
tratata171
0 / 0 / 0
Регистрация: 24.03.2013
Сообщений: 4
24.03.2013, 12:27     В двумерном массиве определить первый отрицательный элемент на интервале [a,b] #4
перед cout добавляем строчку
C++
1
z=M[i][j];
предварительно объявив переменную z, и выводим тогда z

Добавлено через 2 минуты
а почему вообще, в поиске отрицательного элемента ты сравниваешь текущий элемент с a и b? вместо того чтоб проверять не меньше ли он 0
Basill
 Аватар для Basill
40 / 40 / 13
Регистрация: 16.02.2013
Сообщений: 197
24.03.2013, 12:31  [ТС]     В двумерном массиве определить первый отрицательный элемент на интервале [a,b] #5
Программа мне выдает что первый отрицательный элемент на интервале [a,b] = 5
Даже если я меняю все элементы массива

Добавлено через 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
#include <iostream>
#include <conio.h>
#include <clocale>
using namespace std;
 
int main()
{   setlocale (LC_ALL, "Russian");
 
int j,i,a,b,M[3][3],z;
//вводим массив
cout<<"Введите элементы массива: \n";
    for (i=0; i<3; i++)
    for (j=0; j<3; j++)
    {
        cout <<"mas["<<(i)<<"]";
        cout <<"["<<(j)<<"]->";
        cin >> M[i][j];
    }
    // вводим интервал
{
        cout<<"Введите a:=";
        cin>>a;
        cout<<"Введите b:=";
        cin>>b;
}
 
// вывести массив построчно
for (int i = 0; i < 3; i++)
{
for (j=0; j < 3; j++)
{
cout << M [i] [j] << " ";
}
cout << endl;
}
 //первый отрицательный
bool q=true;
for (i=1; i<3; i++)
    for (j=1; j<3; j++)
    
    if(a<= M[i][j] && M[i][j]<=b&&q)
       {
           z=M[i][j];
           cout <<"Первый отрицательный элемент массива в интервале [a,b] ="<<z<<endl;
           q=false;
       }
 
_getch();
return 0;
}
tratata171
0 / 0 / 0
Регистрация: 24.03.2013
Сообщений: 4
24.03.2013, 12:33     В двумерном массиве определить первый отрицательный элемент на интервале [a,b] #6
a и b у тебя какие? если они оба положительные то и элемент будет положительным. вообще это условие для поиска первого элемента, входящего в диапазон от а до b, но никак не для поиска отрицательного

если тебе нужен элемент в данном диапазоне и отрицательный, то условие должно быть следующим:

C++
1
if(a<= M[i][j] && M[i][j]<=b && q && M[i][j]<0)
Basill
 Аватар для Basill
40 / 40 / 13
Регистрация: 16.02.2013
Сообщений: 197
24.03.2013, 12:37  [ТС]     В двумерном массиве определить первый отрицательный элемент на интервале [a,b] #7
Не работает, нужно чтобы в этом интервале нашел 1 отрицательный элемент
ReasonX7
 Аватар для ReasonX7
47 / 46 / 2
Регистрация: 11.12.2011
Сообщений: 146
24.03.2013, 12:45     В двумерном массиве определить первый отрицательный элемент на интервале [a,b] #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
#include <iostream>
 
void main()
{
    const int N = 3;
    int matrix[N][N] = { 3, -4, 5,
                         5, 6, -3,
                         10, 9, 4 };
    int a, b;
        // Ввод интервала проверки.
    std::cout << "a >> ";
    std::cin >> a;
    std::cout << "b >> ";
    std::cin >> b;
 
    int first_neg_el = 1;    // Сюда запишем наш первый отрицательный элемент, если найдем.
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < N; j++)
        {
            if (matrix[i][j] >= a && matrix[i][j] <= b && matrix[i][j] < 0)  // Если эл. матр. входит в интервал и он
                                                                                                         // отрицательний, то
            {
                first_neg_el = matrix[i][j];                    // в first_neg_el записать этот эл.
                break;                                         // Прервать внутренний цикл.
            }
        }
 
        if (first_neg_el < 0)          // Если отрицательный эл. найден, то
            break;                    // прервать внишний цикл.
    }
 
        // Это конструкция, заменяющая if ([условие]) [код] else [код].
        // Делаем проверку на отрицательность first_neg_el. Если проверку прошли - вывели эл. Нет - вывели сообщение, что отрицательного эл. на заданном промежутке нет.
    first_neg_el < 0 ? std::cout << "First negative element = " << first_neg_el << std::endl : std::cout << "No negative element was found\n";
    system("pause");
}
Banddk
37 / 37 / 1
Регистрация: 08.12.2012
Сообщений: 157
Записей в блоге: 1
24.03.2013, 12:46     В двумерном массиве определить первый отрицательный элемент на интервале [a,b] #9
Цитата Сообщение от Basill Посмотреть сообщение
for (i=1; i<3; i++)
* * for (j=1; j<3; j++)
if(a<= M[i][j] && M[i][j]<=b&&q)
* * * *{
* * * * * *z=M[i][j];
* * * * * *cout <<"Первый отрицательный элемент массива в интервале [a,b] ="<<z<<endl;
* * * * * *q=false;
* * * *}
а вот как должно быть
C++
1
2
3
4
5
6
7
8
for (i=0; i<3; i++)
* * for (j=0; j<3; j++)
if((a<= M[i][j]) && (M[i][j]<=b)&&(M[i][j]<0)&&q)
* * * *{
* * * * * *z=M[i][j];
* * * * * *cout <<"Первый отрицательный элемент массива в интервале [a,b] ="<<z<<endl;
* * * * * *q=false;
* * * *}
цикл for с 0!
Basill
 Аватар для Basill
40 / 40 / 13
Регистрация: 16.02.2013
Сообщений: 197
24.03.2013, 12:53  [ТС]     В двумерном массиве определить первый отрицательный элемент на интервале [a,b] #10
Спасибо, но у нас препод старой закалки и не примет работу где есть
C++
1
std::cout << "a >> ";
или break
он хочет чтобы выглядело как в моем примере

Добавлено через 4 минуты
Цитата Сообщение от Banddk Посмотреть сообщение
а вот как должно быть
C++
1
2
3
4
5
6
7
8
for (i=0; i<3; i++)
* * for (j=0; j<3; j++)
if((a<= M[i][j]) && (M[i][j]<=b)&&(M[i][j]<0)&&q)
* * * *{
* * * * * *z=M[i][j];
* * * * * *cout <<"Первый отрицательный элемент массива в интервале [a,b] ="<<z<<endl;
* * * * * *q=false;
* * * *}
цикл for с 0!
не работает(
ReasonX7
 Аватар для ReasonX7
47 / 46 / 2
Регистрация: 11.12.2011
Сообщений: 146
24.03.2013, 13:00     В двумерном массиве определить первый отрицательный элемент на интервале [a,b] #11
Basill, тогда препод, мягко говоря не очень умный человек. Зачем сто раз проходить один и тот же цикл, если то, что нам нужно мы уже нашли и break-ом просто прервали этот цикл, что бы лишний раз не грузить процессор?
C++
1
std::cout >> ...
Тоже странно... В чем разница, что ты запишешь using namespace std и дельше будешь писать без std::, что так, как я делаю. Тем более, многие программисты не рекомендуют использовать using namespace в больших проектах.

Добавлено через 4 минуты
И еще одно: это условие
C++
1
if((a<= M[i][j]) && (M[i][j]<=b)
он сам его дал? Оно ведь бессмысленно. Если в промежутке [a, b], то панятно, что a < b. Соответственно если эл. меньше a и меньше b, то оно исполнится, но число же при этом не входит в заданный промежуток. Я бы его записал так:
C++
1
if((a>= M[i][j]) && (M[i][j]<=b)
Basill
 Аватар для Basill
40 / 40 / 13
Регистрация: 16.02.2013
Сообщений: 197
24.03.2013, 13:04  [ТС]     В двумерном массиве определить первый отрицательный элемент на интервале [a,b] #12
Цитата Сообщение от ReasonX7 Посмотреть сообщение
C++
1
if((a>= M[i][j]) && (M[i][j]<=b)
Вооооот теперь работает только я записал так

C++
1
2
3
4
5
6
7
8
9
10
 //первый отрицательный
          bool q=true;
          for (i=0; i<3; i++)
          for (j=0; j<3; j++)
          if((a>= M[i][j]) && (M[i][j]<=b)&&(M[i][j]<0)&&q)
          {
          z=M[i][j];
          cout <<"Первый отрицательный элемент массива в интервале [a,b] ="<<z<<endl;
          q=false;
           }
ReasonX7
 Аватар для ReasonX7
47 / 46 / 2
Регистрация: 11.12.2011
Сообщений: 146
24.03.2013, 13:06     В двумерном массиве определить первый отрицательный элемент на интервале [a,b] #13
Ладно, сдавать-то тебе, так что вот поправленный код:
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
#include <iostream>
 
using namespace std;
 
void main()
{
    const int N = 3;
    int matrix[N][N] = { 3, -4, 5,
                         5, 6, -3,
                         10, 9, 4 };
    int a, b;
    cout << "a >> ";
    cin >> a;
    cout << "b >> ";
    cin >> b;
 
    int first_neg_el = 1;
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < N; j++)
        {
            if (matrix[i][j] >= a && matrix[i][j] <= b && matrix[i][j] < 0 && first_neg_el >= 0)
            {
                first_neg_el = matrix[i][j];
                break;
            }
        }
    }
 
    if (first_neg_el < 0)
        cout << "First negative element = " << first_neg_el << '\n';
    else 
        cout << "No negative element was found\n";
 
    system("pause");
}
Basill
 Аватар для Basill
40 / 40 / 13
Регистрация: 16.02.2013
Сообщений: 197
24.03.2013, 13:08  [ТС]     В двумерном массиве определить первый отрицательный элемент на интервале [a,b] #14
Это была первая часть задания. вторая заключается в том, что нужно вывести на экран номер строки и номер столбца первого отрицательного элемента всей этой матрицы, без интервала.
ReasonX7
 Аватар для ReasonX7
47 / 46 / 2
Регистрация: 11.12.2011
Сообщений: 146
24.03.2013, 13:16     В двумерном массиве определить первый отрицательный элемент на интервале [a,b] #15
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
#include <iostream>
 
using namespace std;
 
void main()
{
    const int N = 3;
    int matrix[N][N] = { 3, -4, 5,
                         5, 6, -3,
                         10, 9, 4 };
    int a, b;
    cout << "a >> ";
    cin >> a;
    cout << "b >> ";
    cin >> b;
 
    int first_neg_el = 1;
    int i_row, i_column;   // Номер строки и столбца соответственно.
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < N; j++)
        {
            if (matrix[i][j] >= a && matrix[i][j] <= b && matrix[i][j] < 0 && first_neg_el >= 0)
            {
                first_neg_el = matrix[i][j];
                i_row = i;   // Записали номер строки и
                i_column = j; // столбца.
                break;
            }
        }
    }
 
    if (first_neg_el < 0)
    {
        cout << "First negative element = " << first_neg_el << " [" << i_row << ", " << i_column << ']' << '\n';
    }
    else 
        cout << "No negative element was found\n";
 
    system("pause");
}
Basill
 Аватар для Basill
40 / 40 / 13
Регистрация: 16.02.2013
Сообщений: 197
24.03.2013, 13:27  [ТС]     В двумерном массиве определить первый отрицательный элемент на интервале [a,b] #16
ReasonX7, что то в условие не то, щас проверял разные комбинации и он выдовал 1 отрицат. во всей матрице, и не учитывал интервал [a,b]
ReasonX7
 Аватар для ReasonX7
47 / 46 / 2
Регистрация: 11.12.2011
Сообщений: 146
24.03.2013, 13:37     В двумерном массиве определить первый отрицательный элемент на интервале [a,b] #17
Basill, так нужно было вывести индексы ВСЕХ отрицательных элементов?

Добавлено через 1 минуту
Ааа, я понял.
Basill
 Аватар для Basill
40 / 40 / 13
Регистрация: 16.02.2013
Сообщений: 197
24.03.2013, 13:37  [ТС]     В двумерном массиве определить первый отрицательный элемент на интервале [a,b] #18
ReasonX7,
Вот полное задание
В двумерном массиве определить номер строки и номер столбца, на пересечении которых находятся требуемые элементы массива:
1) Последний отрицательный элемент;
3) Первый отрицательный попавший в интервал [a,b]
ReasonX7
 Аватар для ReasonX7
47 / 46 / 2
Регистрация: 11.12.2011
Сообщений: 146
24.03.2013, 13:41     В двумерном массиве определить первый отрицательный элемент на интервале [a,b] #19
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
#include <iostream>
 
using namespace std;
 
void main()
{
    const int N = 3;
    int matrix[N][N] = { 3, -4, 5,
                         5, 6, -3,
                         10, 9, 4 };
    int a, b;
    cout << "a >> ";
    cin >> a;
    cout << "b >> ";
    cin >> b;
 
    int first_neg_el = 1;
    int i_row = -1, i_column;
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < N; j++)
        {
            if (matrix[i][j] >= a && matrix[i][j] <= b && matrix[i][j] < 0 && first_neg_el >= 0)
            {
                first_neg_el = matrix[i][j];
            }
            if (i_row == -1 && matrix[i][j] < 0)
            {
                i_row = i;
                i_column = j;
            }
        }
    }
 
    if (first_neg_el < 0)
    {
        cout << "First negative element = " << first_neg_el << " [" << i_row << ", " << i_column << ']' << '\n';
    }
    else 
        cout << "No negative element was found\n";
 
    system("pause");
}
Добавлено через 2 минуты
Цитата Сообщение от Basill Посмотреть сообщение
Это была первая часть задания. вторая заключается в том, что нужно вывести на экран номер строки и номер столбца первого отрицательного элемента всей этой матрицы, без интервала.
Так первого или последнего элемента?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.03.2013, 13:42     В двумерном массиве определить первый отрицательный элемент на интервале [a,b]
Еще ссылки по теме:

Найти первый отрицательный элемент и его индекс в массиве C++
C++ Удалить из массива А (20) первый отрицательный элемент
C++ Найти максимальный элемент и заменить им первый элемент строки в двумерном массиве

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

Или воспользуйтесь поиском по форуму:
Basill
 Аватар для Basill
40 / 40 / 13
Регистрация: 16.02.2013
Сообщений: 197
24.03.2013, 13:42  [ТС]     В двумерном массиве определить первый отрицательный элемент на интервале [a,b] #20
ReasonX7, В интервале нужно найти первый отрицательный. А во всей матрице последний и все это вывести на экран
Yandex
Объявления
24.03.2013, 13:42     В двумерном массиве определить первый отрицательный элемент на интервале [a,b]
Ответ Создать тему
Опции темы

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