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

Проверить есть ли в строке матрицы элемент, меньший нуля - C++

Восстановить пароль Регистрация
 
Masredis
Котэ
 Аватар для Masredis
80 / 80 / 1
Регистрация: 04.09.2010
Сообщений: 541
17.04.2011, 17:55     Проверить есть ли в строке матрицы элемент, меньший нуля #1
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>
#include <math.h>
#include <stdio.h>
 
using namespace std;
 
int main(int argc, char* argv[])
{
    int n=0;
    int mass[3][5] = {5,55,47,0,45,          
                 -50,-40,2,-33,-41,         
                   15,15,0,5,47};         
                                          
    int i,j;                             
for (j=0;j<3;j++){                          
       for(i=0;i<5;i++)                             
                           cout << mass[j][i]<<"\t"; 
                                                     
                           cout<<endl;
 
}
 
 
int founded = -1;
int jCounter = 0;
while (jCounter<3 && founded==-1){
bool correct = true;   
               
       for(i=0;i<5;i++){
                        
       if (mass[3][5] < 0){ correct = false;
                          }}    
                           if (correct == true){ founded = jCounter+1;
                           jCounter++;
            cout << "\n Stolbec ne soderzasii ni odnogo otricatelnogo elementa " << jCounter; 
            }
            }
            
       
 
getchar();
return 0;
}

Суть в том что бы в столбцах подсчитать строки и проверить есть ли в строке элемент с <0 , если да то всё - неправда.
Если же нету в строке элемента <0 то вывести на экран Stolbec ne soderzasii ni odnogo otricatelnogo elementa )

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int founded = -1;
int jCounter = 0;
while (jCounter<3 && founded==-1){
bool correct = true;   
               
       for(i=0;i<5;i++){
                        
       if (mass[3][5] < 0){ correct = false;
                          }}    
                           if (correct == true){ founded = jCounter+1;
                           jCounter++;
            cout << "\n Stolbec ne soderzasii ni odnogo otricatelnogo elementa " << jCounter; 
            }
            }
Позаимствован с этого форума, но ошибся где то ) Подскажите ошибку
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.04.2011, 17:55     Проверить есть ли в строке матрицы элемент, меньший нуля
Посмотрите здесь:

Если самое верхнее число в этом столбце есть ноль, то меняют всю первую строку матрицы с другой строкой матрицы, где в этой колонке нет нуля. C++
Массив: Построить массив из нулей и единиц, в которой bi = 1 тогда и только тогда, когда в i-ой строке матрицы есть хотя бы отрицательный элемент C++
Массивы. Заменить 3ий элемент в 1ой строке матрицы А на max элемент C++
C++ Проверить есть ли в символьном массиве нужный элемент?
C++ Поменять местами наибольший элемент в первой строке матрицы с наименьшим элементом в третьей строке
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ma3a
Эксперт C++
612 / 456 / 31
Регистрация: 28.01.2011
Сообщений: 605
17.04.2011, 17:58     Проверить есть ли в строке матрицы элемент, меньший нуля #2
Цитата Сообщение от Masredis Посмотреть сообщение
if (mass[3][5] < 0)
Наверное здесь должно быть mass[jCounter][i], нет?
Masredis
Котэ
 Аватар для Masredis
80 / 80 / 1
Регистрация: 04.09.2010
Сообщений: 541
17.04.2011, 18:14  [ТС]     Проверить есть ли в строке матрицы элемент, меньший нуля #3
Проверял , нет
Ma3a
Эксперт C++
612 / 456 / 31
Регистрация: 28.01.2011
Сообщений: 605
17.04.2011, 18:25     Проверить есть ли в строке матрицы элемент, меньший нуля #4
Цитата Сообщение от Masredis Посмотреть сообщение
Суть в том что бы в столбцах подсчитать строки и проверить есть ли в строке элемент с <0 , если да то всё - неправда.
Если же нету в строке элемента <0 то вывести на экран Stolbec ne soderzasii ni odnogo otricatelnogo elementa )
Вы, кстати, определитесь с тем, строку или столбец вам нужно.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int founded = -1;
int jCounter = 0;
while (jCounter<3 && founded==-1){
bool correct = true; 
 
for(i=0;i<5;i++){
 
if (mass[jCounter][i] < 0){ correct = false;
}} 
if (correct == true){ founded = jCounter+1;
cout << "\n Stolbec ne soderzasii ni odnogo otricatelnogo elementa " << jCounter; 
}
jCounter++;
}
так будет искать неотрицательные строки. Для того, чтобы искать столбцы, придется немного изменить код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int founded = -1;
int jCounter = 0;
while (jCounter<5 && founded==-1){
bool correct = true; 
 
for(i=0;i<3;i++){
 
if (mass[i][jCounter] < 0){ correct = false;
}} 
if (correct == true){ founded = jCounter+1;
cout << "\n Stolbec ne soderzasii ni odnogo otricatelnogo elementa " << jCounter; 
}
jCounter++;
}
Masredis
Котэ
 Аватар для Masredis
80 / 80 / 1
Регистрация: 04.09.2010
Сообщений: 541
17.04.2011, 18:47  [ТС]     Проверить есть ли в строке матрицы элемент, меньший нуля #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int founded = -1;
int jCounter = 0;
while (jCounter<5 && founded==-1){
bool correct = true; 
 
for(i=0;i<3;i++){
 
if (mass[i][jCounter] < 0){ correct = false;
}} 
if (correct == true){ founded = jCounter+1;
cout << "\n Stolbec ne soderzasii ni odnogo otricatelnogo elementa " << jCounter; 
}
jCounter++;
}
Например если вставить Ваш в код с матрицей
C++
1
2
3
int mass[3][5] = {5,55,-47,0,45,         
                        50,40,2,1,41,       // <- Stolbec ne soderzasii ni odnogo otricatelnogo elementa : 2
                        15,15,1,-5,47};
К сожалению, Ваш код тоже не отображает этого Ответ он выдаёт - 0. Кстати со строками так же ((
Ma3a
Эксперт C++
612 / 456 / 31
Регистрация: 28.01.2011
Сообщений: 605
17.04.2011, 18:51     Проверить есть ли в строке матрицы элемент, меньший нуля #6
А вы читали, что я написал? Вы использовали второй код, который ищет первый неотрицательный столбец в матрице.Судя по всему, вам все-таки строку надо. Вот этот код попробуйте:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int founded = -1;
int jCounter = 0;
while (jCounter<3 && founded==-1){
bool correct = true; 
 
for(i=0;i<5;i++){
 
if (mass[jCounter][i] < 0){ correct = false;
}} 
if (correct == true){ founded = jCounter+1;
cout << "\n Stolbec ne soderzasii ni odnogo otricatelnogo elementa " << founded; 
}
jCounter++;
}
Masredis
Котэ
 Аватар для Masredis
80 / 80 / 1
Регистрация: 04.09.2010
Сообщений: 541
17.04.2011, 18:56  [ТС]     Проверить есть ли в строке матрицы элемент, меньший нуля #7
Если Вас не затруднит проверьте в компиляторе код

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>
#include <math.h>
#include <stdio.h>
 
using namespace std;
 
int main(int argc, char* argv[])
{
    int n=0;
    int mass[3][5] = {5,55,47,8,45,       
                 -50,-40,2,-1,41,       
                   -15,15,1,-5,47};     
                                            
    int i,j;                               
for (j=0;j<3;j++){                         
       for(i=0;i<5;i++)                             
                           cout << mass[j][i]<<"\t"; 
                                                    
                           cout<<endl;
 
}
 
 
int founded = -1;
int jCounter = 0;
while (jCounter<3 && founded==-1){
bool correct = true; 
 
for(i=0;i<5;i++){
 
if (mass[jCounter][i] < 0){ correct = false;
}} 
if (correct == true){ founded = jCounter+1;
cout << "\n Stroka ne soderzasii ni odnogo otricatelnogo elementa " << jCounter; 
}
jCounter++;
}
 
   
   
       
/*
int arr[5][5];
int* begin = &(arr[0][0]);
int* end = &(arr[5][5]);
std::sort(begin, end);
*/
 
getchar();
return 0;
}
Ma3a
Эксперт C++
612 / 456 / 31
Регистрация: 28.01.2011
Сообщений: 605
17.04.2011, 19:00     Проверить есть ли в строке матрицы элемент, меньший нуля #8
Вывод:
Код
5	55	47	8	45	
-50	-40	2	-1	41	
-15	15	1	-5	47	

 Stroka ne soderzasii ni odnogo otricatelnogo elementa 0
Если не устраивает то, что нумерация от нуля, то в строчке "cout << "\n Stroka ne soderzasii ni odnogo otricatelnogo elementa " << jCounter;" jCounter замените на founded.
Есть такая замечательная вещь, как CodePad, онлайн-компилятор, если нет возможности скомпилировать на машине.
Masredis
Котэ
 Аватар для Masredis
80 / 80 / 1
Регистрация: 04.09.2010
Сообщений: 541
17.04.2011, 19:07  [ТС]     Проверить есть ли в строке матрицы элемент, меньший нуля #9
cout << "\n Stroka ne soderzasii ni odnogo otricatelnogo elementa " << jCounter+1;
решение ?)

Добавлено через 7 минут
Спасибо Вам Если не затруднит, можно еще спросить, а как можно эту матрицу отсортировать и расположить их в соответствии с убыванием ?
Ma3a
Эксперт C++
612 / 456 / 31
Регистрация: 28.01.2011
Сообщений: 605
17.04.2011, 19:26     Проверить есть ли в строке матрицы элемент, меньший нуля #10
В соответствии с убыванием строк? По какому критерию? А то сравнивать между собой строки можно по разным характеристикам.
Masredis
Котэ
 Аватар для Masredis
80 / 80 / 1
Регистрация: 04.09.2010
Сообщений: 541
17.04.2011, 19:30  [ТС]     Проверить есть ли в строке матрицы элемент, меньший нуля #11
1)Переставляя строки заданной матрицы, расположить их в соответствии с убыванием характеристик.

2)Упорядочить строки целочисленной прямоугольной матрицы по возрастанию количества одинаковых элементов в каждой строке.


для меня это очень далекая планета )
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.04.2011, 20:07     Проверить есть ли в строке матрицы элемент, меньший нуля
Еще ссылки по теме:

Проверить, есть ли в матрице хотя бы одна строка, содержащая отрицательный элемент C++
C++ Если минимальный элемент матрицы стоит в первой строке, то элементы, стоящие в строке за ним, заменить нулями
C++ Проверить, есть ли в строке из символов целое число

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

Или воспользуйтесь поиском по форуму:
Ma3a
Эксперт C++
612 / 456 / 31
Регистрация: 28.01.2011
Сообщений: 605
17.04.2011, 20:07     Проверить есть ли в строке матрицы элемент, меньший нуля #12
Сообщение было отмечено автором темы, экспертом или модератором как ответ
В общем, скомбинировал ваши два пункта и решил написать набросочек для сортировки матрицы по убыванию количества одинаковых элементов в каждой строке. Думать было лень, так что всё довольно топорно(брал максимальное количество одинаковых элементов в строке, если что)
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#include <iostream>
#include <algorithm>
 
int CountEl(int* arr, int size)
    {
        int count, max_count = 0, j;
        for(int i = 0; i < size - 1; ++i)
        {
                count = 0;
                j = i;
                while(arr[i] == arr[j])
                {
                        ++count;
                        ++j;
            }
                if(count > max_count)
            {
                        max_count = count;
            }
        }
        return max_count;
    }
 
using namespace std;
 
int main()
    {
    int n=0;
    int mass[3][5] = {1,2,33,45,32,       
        -12,-12,45,7,3,       
        -15,-15,-15,-15,47};     
 
    int i,j;                               
    for (j=0;j<3;j++)
        {                         
        for(i=0;i<5;i++)                             
            cout << mass[j][i]<<"\t"; 
 
        cout<< endl;
 
        }
 
 
    int founded = -1;
    int jCounter = 0;
    while (jCounter<3 && founded==-1)
        {
        bool correct = true; 
 
        for(i=0;i<5;i++)
            {
 
            if (mass[jCounter][i] < 0)
                {
                correct = false;
                }
            } 
        if (correct == true)
            {
            founded = jCounter+1;
            cout << "\n Stroka ne soderzasii ni odnogo otricatelnogo elementa " << founded; 
            }
        jCounter++;
        }
 
    for( i=0; i < 3; i++) 
        {
        for( j = 2; j > i; j-- )
            {
            if ( CountEl(mass[j-1],5) < CountEl(mass[j],5))
                {
                int * templine = new int[5];
                copy(mass[j-1],mass[j-1]+5,templine);
                copy(mass[j],mass[j]+5,mass[j-1]);
                copy(templine,templine+5,mass[j]);
                delete [] templine;
                }
            }
        }
 
    cout << endl << "Otsortirovannaya po ubivaniu matrica:" << endl;
    for (j=0;j<3;j++)
        {                         
        for(i=0;i<5;i++)                             
            cout << mass[j][i]<<"\t"; 
 
        cout<< endl;
 
        }
    }
Yandex
Объявления
17.04.2011, 20:07     Проверить есть ли в строке матрицы элемент, меньший нуля
Ответ Создать тему
Опции темы

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