Форум программистов, компьютерный форум 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++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ReasonX7
 Аватар для ReasonX7
47 / 46 / 2
Регистрация: 11.12.2011
Сообщений: 146
24.03.2013, 13:45     В двумерном массиве определить первый отрицательный элемент на интервале [a,b] #21
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
#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];
            }
        }
    }
 
    for (int i = N - 1; i >= 0; i--)
    {
        for (int j = N - 1; j >= 0; 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 << '\n';
        cout << "Last negative element coordinates: " << " [" << 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:57  [ТС]     В двумерном массиве определить первый отрицательный элемент на интервале [a,b] #22
ReasonX7, не так маленько. Нужно последний отрицательный во всей матрице.
И первый отрицательный на интервале

Добавлено через 1 минуту
ReasonX7, Кстате я твой код вставляю у меня выдает что отрицательных нету.
ReasonX7
 Аватар для ReasonX7
47 / 46 / 2
Регистрация: 11.12.2011
Сообщений: 146
24.03.2013, 14:03     В двумерном массиве определить первый отрицательный элемент на интервале [a,b] #23
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
#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 last_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];
            }
        }
    }
 
    for (int i = N - 1; i >= 0; i--)
    {
        for (int j = N - 1; j >= 0; j--)
        {
            if (last_neg_el >= 0)
            {
                last_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 << '\n';
        cout << "Last negative element: " << last_neg_el << " [" << i_row << ", " << i_column << "]\n";
    }
    else 
        cout << "No negative element was found\n";
 
    system("pause");
}
Миниатюры
В двумерном массиве определить первый отрицательный элемент на интервале [a,b]  
Basill
 Аватар для Basill
40 / 40 / 13
Регистрация: 16.02.2013
Сообщений: 197
24.03.2013, 15:34  [ТС]     В двумерном массиве определить первый отрицательный элемент на интервале [a,b] #24
ReasonX7, почему ты брал интервал от -4 до 0. Ведь в моем случае это интервал среди введенных элементов. Т.е. например а=2(второй элемент массива) b=8(это 8 элемент массива)
ReasonX7
 Аватар для ReasonX7
47 / 46 / 2
Регистрация: 11.12.2011
Сообщений: 146
24.03.2013, 17:26     В двумерном массиве определить первый отрицательный элемент на интервале [a,b] #25
Basill, тогда в чем смысл этого условия?
C++
1
if(a<= M[i][j] && M[i][j]<=b)
Если бы ты сразу сравнивал индексы, было бы понятно, что имеется ввиду от такого-то эл. до такого-то. А так я решил, что имеется ввиду поиск числа, которое входит в такой-то диапазон.
Basill
 Аватар для Basill
40 / 40 / 13
Регистрация: 16.02.2013
Сообщений: 197
24.03.2013, 18:15  [ТС]     В двумерном массиве определить первый отрицательный элемент на интервале [a,b] #26
ReasonX7, И как мне сделать то? что вписать?
ReasonX7
 Аватар для ReasonX7
47 / 46 / 2
Регистрация: 11.12.2011
Сообщений: 146
24.03.2013, 18:25     В двумерном массиве определить первый отрицательный элемент на интервале [a,b] #27
Поменять
C++
1
matrix[i][j] >= a && matrix[i][j] <= b
на
C++
1
i + j >= a && i + j <= b
Добавлено через 44 секунды
Учти, нумерация начинается с нуля.
Basill
 Аватар для Basill
40 / 40 / 13
Регистрация: 16.02.2013
Сообщений: 197
24.03.2013, 18:57  [ТС]     В двумерном массиве определить первый отрицательный элемент на интервале [a,b] #28
ReasonX7, Не правильно работает.
Погляди код может я что то не так написал.
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
#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;
}
    //Первый отрицательный элемент в интервале
    int Z = 0;
    for (int i = 0; i < 3; i++)
    {
        for (int j = 0; j < 3; j++)
        {
           if (i + j >= a && i + j <= b && M[i][j] < 0 && Z >= 0)
           {
                Z = M[i][j];
           }
        }
    }
   //Последний отрицательный
     int X = 1;
     int P , G;
    for (int i = 3 - 1; i >= 0; i--)
    {
        for (int j = 3 - 1; j >= 0; j--)
        {
            if (X >= 0)
            {
                X = M[i][j];
                P = i; 
                G = j; 
            }
        }
    }
     if (X < 0)
     cout << "Последний отрицательный элемент: " << X << " [" << P << ", " << G << "]\n";
     else 
        cout << "Отрицательных элементов нет!!!! \n";  
 
     if (Z < 0)
     cout << "Первый отрицательный элемент в интервале [a,b] = " << Z << '\n';
          
      else 
        cout << "Отрицательных элементов на заданном интервале нет!!! \n";
 
    system("pause");
}
ReasonX7
 Аватар для ReasonX7
47 / 46 / 2
Регистрация: 11.12.2011
Сообщений: 146
24.03.2013, 19:02     В двумерном массиве определить первый отрицательный элемент на интервале [a,b] #29
Basill, в чем именно ошибка?
Миниатюры
В двумерном массиве определить первый отрицательный элемент на интервале [a,b]  
Basill
 Аватар для Basill
40 / 40 / 13
Регистрация: 16.02.2013
Сообщений: 197
24.03.2013, 19:10  [ТС]     В двумерном массиве определить первый отрицательный элемент на интервале [a,b] #30
Цитата Сообщение от ReasonX7 Посмотреть сообщение
Basill, в чем именно ошибка?
а ты введи те же самые числа массива и поставь интервал с 5 до 9 например
Basill
 Аватар для Basill
40 / 40 / 13
Регистрация: 16.02.2013
Сообщений: 197
24.03.2013, 19:17  [ТС]     В двумерном массиве определить первый отрицательный элемент на интервале [a,b] #31
вот что выходит а должен выдать -1
Миниатюры
В двумерном массиве определить первый отрицательный элемент на интервале [a,b]  
ReasonX7
 Аватар для ReasonX7
47 / 46 / 2
Регистрация: 11.12.2011
Сообщений: 146
24.03.2013, 19:27     В двумерном массиве определить первый отрицательный элемент на интервале [a,b] #32
Basill, точно, извини. Просто формулу расчета номера числа в матрице подзабыл. Будет не
C++
1
i + j >= a && i + j <= b
А должно быть так:
C++
1
i * количесво_строк_матрицы + j >= a && i * количесво_строк_матрицы + j <= b
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.03.2013, 19:33     В двумерном массиве определить первый отрицательный элемент на интервале [a,b]
Еще ссылки по теме:

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

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

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

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