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

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

Войти
Регистрация
Восстановить пароль
 
Masredis
Котэ
80 / 80 / 1
Регистрация: 04.09.2010
Сообщений: 547
#1

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

17.04.2011, 17:55. Просмотров 593. Ответов 11
Метки нет (Все метки)

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

Проверить, что диагональный элемент матрицы по модулю больше модуля суммы остальных элементов в строке - C++
Должно быть два цикла, один вложен в другой, проверка диагонально элемента квадратной матрицы (т.е. массива m). Если диагональный элемент...

Если самое верхнее число в этом столбце есть ноль, то меняют всю первую строку матрицы с другой строкой матрицы, где в этой колонке нет нуля. - C++
Помогите реализовать это условие задачи! #include &lt;cstdlib&gt; #include &lt;iostream&gt; using namespace std; int main(int argc, char...

Проверить есть ли в строке цифра - C++
ф-я принимает на вход строку возвращает истинную если в этой строке есть хотя бы одна цифра. Что я не так делаю? bool...

Массив: Построить массив из нулей и единиц, в которой bi = 1 тогда и только тогда, когда в i-ой строке матрицы есть хотя бы отрицательный элемент - C++
Даны натуральное число n, действительная квадратная матрица порядка n. Построить последовательность b1, b2, …, bn из нулей и единиц, в...

Проверить есть ли в строке гласная буква - C++
ф-я принимает на вход строку и находит последнюю гласную букву с конца строки если гласной буквы в строке нет, то возвращает &quot;#&quot; ...

Проверить, есть ли в строке заданная последовательность символов - C++
написать программу проверяющую есть ли в строке заданная последовательность символов

11
Ma3a
Эксперт С++
619 / 463 / 31
Регистрация: 28.01.2011
Сообщений: 605
17.04.2011, 17:58 #2
Цитата Сообщение от Masredis Посмотреть сообщение
if (mass[3][5] < 0)
Наверное здесь должно быть mass[jCounter][i], нет?
0
Masredis
Котэ
80 / 80 / 1
Регистрация: 04.09.2010
Сообщений: 547
17.04.2011, 18:14  [ТС] #3
Проверял , нет
0
Ma3a
Эксперт С++
619 / 463 / 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++;
}
1
Masredis
Котэ
80 / 80 / 1
Регистрация: 04.09.2010
Сообщений: 547
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. Кстати со строками так же ((
0
Ma3a
Эксперт С++
619 / 463 / 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++;
}
1
Masredis
Котэ
80 / 80 / 1
Регистрация: 04.09.2010
Сообщений: 547
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;
}
0
Ma3a
Эксперт С++
619 / 463 / 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, онлайн-компилятор, если нет возможности скомпилировать на машине.
1
Masredis
Котэ
80 / 80 / 1
Регистрация: 04.09.2010
Сообщений: 547
17.04.2011, 19:07  [ТС] #9
cout << "\n Stroka ne soderzasii ni odnogo otricatelnogo elementa " << jCounter+1;
решение ?)

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

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


для меня это очень далекая планета )
0
Ma3a
Эксперт С++
619 / 463 / 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;
 
        }
    }
0
17.04.2011, 20:07
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.04.2011, 20:07
Привет! Вот еще темы с ответами:

Проверить, есть ли в строке из символов целое число - C++
Как проверить, есть ли в строке из символов целое число?

В каждой строке матрицы найти и вывести минимальный элемент и его номер в строке - C++
/*Дана матрица А. В каждой строке матрицы найти и вывести минимальный элемент и его номер в строке. Вывести полученную матрицу.*/ ...

Поменять местами наибольший элемент в первой строке матрицы с наименьшим элементом в третьей строке - C++
В двумерном массив заменить местами наибольший элемент в первой строчке с наименьшим элементом в третьем

Массивы. Заменить 3ий элемент в 1ой строке матрицы А на max элемент - C++
Помогите пож Матрица А цифры любые заменить 3ий элемент в 1ой строке матрицы А на max элемент


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

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

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