Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.80/40: Рейтинг темы: голосов - 40, средняя оценка - 4.80
40 / 40 / 34
Регистрация: 16.02.2013
Сообщений: 197
1

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

24.03.2013, 12:07. Показов 7313. Ответов 32
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Подскажите пожалуйста что мне нужно про писать в 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;
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.03.2013, 12:07
Ответы с готовыми решениями:

В двумерном массиве поменять местами в каждой строке первый отрицательный и последний положительный элемент.
Помогите пожалуйста решить задачку!Что-то аналогичной нигде найти не могу!В двумерном массиве...

В двумерном массиве найти отрицательный элемент
Дан двумерный массив. Значения заполняются вручную.Нужно найти максимальный отрицательный элемент

Найти максимальный элемент и заменить им первый элемент строки в двумерном массиве
В матрице X(4,5) в каждой строке найти максимальный элемент и заменить им первый элемент строки....

Найти первый отрицательный элемент в массиве
помогиете пожалуйста.....не понимаю как это сделать....посмотрите файл

32
47 / 46 / 18
Регистрация: 11.12.2011
Сообщений: 147
24.03.2013, 13:45 21
Author24 — интернет-сервис помощи студентам
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");
}
0
40 / 40 / 34
Регистрация: 16.02.2013
Сообщений: 197
24.03.2013, 13:57  [ТС] 22
ReasonX7, не так маленько. Нужно последний отрицательный во всей матрице.
И первый отрицательный на интервале

Добавлено через 1 минуту
ReasonX7, Кстате я твой код вставляю у меня выдает что отрицательных нету.
0
47 / 46 / 18
Регистрация: 11.12.2011
Сообщений: 147
24.03.2013, 14:03 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]  
1
40 / 40 / 34
Регистрация: 16.02.2013
Сообщений: 197
24.03.2013, 15:34  [ТС] 24
ReasonX7, почему ты брал интервал от -4 до 0. Ведь в моем случае это интервал среди введенных элементов. Т.е. например а=2(второй элемент массива) b=8(это 8 элемент массива)
0
47 / 46 / 18
Регистрация: 11.12.2011
Сообщений: 147
24.03.2013, 17:26 25
Basill, тогда в чем смысл этого условия?
C++
1
if(a<= M[i][j] && M[i][j]<=b)
Если бы ты сразу сравнивал индексы, было бы понятно, что имеется ввиду от такого-то эл. до такого-то. А так я решил, что имеется ввиду поиск числа, которое входит в такой-то диапазон.
0
40 / 40 / 34
Регистрация: 16.02.2013
Сообщений: 197
24.03.2013, 18:15  [ТС] 26
ReasonX7, И как мне сделать то? что вписать?
0
47 / 46 / 18
Регистрация: 11.12.2011
Сообщений: 147
24.03.2013, 18:25 27
Поменять
C++
1
matrix[i][j] >= a && matrix[i][j] <= b
на
C++
1
i + j >= a && i + j <= b
Добавлено через 44 секунды
Учти, нумерация начинается с нуля.
0
40 / 40 / 34
Регистрация: 16.02.2013
Сообщений: 197
24.03.2013, 18:57  [ТС] 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");
}
0
47 / 46 / 18
Регистрация: 11.12.2011
Сообщений: 147
24.03.2013, 19:02 29
Basill, в чем именно ошибка?
Миниатюры
В двумерном массиве определить первый отрицательный элемент на интервале [a,b]  
0
40 / 40 / 34
Регистрация: 16.02.2013
Сообщений: 197
24.03.2013, 19:10  [ТС] 30
Цитата Сообщение от ReasonX7 Посмотреть сообщение
Basill, в чем именно ошибка?
а ты введи те же самые числа массива и поставь интервал с 5 до 9 например
0
40 / 40 / 34
Регистрация: 16.02.2013
Сообщений: 197
24.03.2013, 19:17  [ТС] 31
вот что выходит а должен выдать -1
Миниатюры
В двумерном массиве определить первый отрицательный элемент на интервале [a,b]  
0
47 / 46 / 18
Регистрация: 11.12.2011
Сообщений: 147
24.03.2013, 19:27 32
Basill, точно, извини. Просто формулу расчета номера числа в матрице подзабыл. Будет не
C++
1
i + j >= a && i + j <= b
А должно быть так:
C++
1
i * количесво_строк_матрицы + j >= a && i * количесво_строк_матрицы + j <= b
1
40 / 40 / 34
Регистрация: 16.02.2013
Сообщений: 197
24.03.2013, 19:33  [ТС] 33
ReasonX7, Спасибо большое !!!!!! теперь работает
0
24.03.2013, 19:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.03.2013, 19:33
Помогаю со студенческими работами здесь

Как найти первый отрицательный элемент в массиве
Здравствуйте, помогите составить код чтобы найти первый(второй и т.д.)отрицательный элемент в...

Найти первый и второй отрицательный элемент в массиве
for (int i = 0; i &lt; n; i++) { if (mas &lt; 0) firstot = mas; } for (int i = firstot; i &lt; n; i++){...

в двумерном массиве вычислить количество столбцов, содержащих хотя бы один отрицательный элемент.
Определить, как в двумерном массиве вычислить количество столбцов, содержащих хотя бы один...

Удалить все строки, в которых есть отрицательный элемент, в двумерном массиве StringGrid
Дан двумерный массив, сформированный случайным образом (заполнен числами от -100 до 100). Нужно...


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

Или воспользуйтесь поиском по форуму:
33
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru