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

Нахождение чисел в матрице. Очень сложно - C++

Восстановить пароль Регистрация
 
babobka
 Аватар для babobka
1 / 1 / 0
Регистрация: 20.10.2010
Сообщений: 166
Записей в блоге: 1
16.12.2010, 21:32     Нахождение чисел в матрице. Очень сложно #1
HTML5
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
#include "stdafx.h"
#include "iostream"
#include "conio.h"
#include "math.h"
#include "time.h"
using namespace std;
#define nmax 100
 
int _tmain(int argc, _TCHAR* argv[])
{ 
    int per=0;
        float a[nmax][nmax];
    float b[nmax][nmax];
    float c[nmax][nmax];
    float h[nmax][nmax];
    float m[nmax][nmax];
    int n,x,y,yA;
    cout << "Vvedite razmernost'" <<endl;
    cin >> n;
    cout << "Vvedite x" <<endl;
    cin >> x;
    cout << "Vvedite y" <<endl;
    cin >> y;
    for (int i=1;i<=n;i++)
        for (int j=1;j<=n;j++)
        {
            //cout << "Vvedite element A[" <<i<< "][" <<j<< "]" <<endl;
            a[i][j]=(( (float) rand() / (float) RAND_MAX) * 10 );
        }
    for (int i=1;i<=n;i++)
        for (int j=1;j<=n;j++)
        {
            //cout << "Vvedite element B[" <<i<< "][" <<j<< "]" <<endl;
            b[i][j]=(( (float) rand() / (float) RAND_MAX) * 10 );
        }
 
        for (int i=1;i<=n;i++)
        for (int j=1;j<=n;j++)
            cout<<a[i][j]<<" ";
        cout<<endl;
 
        for (int i=1;i<=n;i++)
        for (int j=1;j<=n;j++)
            cout<<b[i][j]<<" ";
        cout<<endl;
 
    for (int i=1;i<=n;i++)
        for (int j=1;j<=n;j++)
            c[i][j]=a[i][j]*b[i][j];        //A*B=C;
    for (int i=1;i<=n;i++)
        for (int j=1;j<=n;j++)
            a[i][j]=a[i][j]*y;              //A=y*A;
    for (int i=1;i<=n;i++)
        for (int j=1;j<=n;j++)
            h[i][j]=a[i][j]-c[i][j];        //H=A-C;
    for (int i=1;i<=n;i++)  
        for (int j=1;j<=n;j++)
            b[i][j]=(b[i][j]+x)*h[i][j];    //B=H(B+x);
    for (int i=1;i<=n;i++)
        for (int j=1;j<=n;j++)
            c[i][j]=a[i][j]-c[i][j];        //C=A-C;
    for (int i=1;i<=n;i++)
        for (int j=1;j<=n;j++)
        a[i][j]=a[i][j]*x;                  //A=A*x;
    for (int i=1;i<=n;i++)  
        for (int j=1;j<=n;j++)
            m[i][j]=b[i][j]-a[i][j];        //M=B-A;
    cout << endl;
    for (int i=1;i<=n;i++)
        {for (int j=1;j<=n;j++)
            cout << m[i][j]<<" ";                // всё уравнение имеет вид (y*A-A*B)(B+x) - A*y*x
        cout << endl;
        }                           //Ищет элементы 
     
int kolvo=0;  
for (int i=1;i<=n;i++)
                {for (int j=1;j<=n;j++)
                        if (fabs(m[i][j])<1) {cout<<endl<<m[i][j]<<endl;
                                         kolvo++;  
                                        }
                cout << endl;
                }
cout << "kol-vo elementov rovno "<<kolvo<<endl;
                
    getch();
    return 0;
}

Вот задача , которая решает какое-то уравнение, но это неважно. Последнее действие (а именно переменная kolvo) выводит на экран кол-во элементов в матрице по модулю меньших 1 , а как сделать так, чтобы выводилось кол-во строк , содержащих такие элементы?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
jambas92
 Аватар для jambas92
58 / 57 / 3
Регистрация: 18.11.2010
Сообщений: 315
16.12.2010, 21:36     Нахождение чисел в матрице. Очень сложно #2
ты бы лучше дал бы задание, что требуется конкретно, и премерный тест. так никто не хочет сидеть и разбиратся с чужим кодом
babobka
 Аватар для babobka
1 / 1 / 0
Регистрация: 20.10.2010
Сообщений: 166
Записей в блоге: 1
16.12.2010, 21:38  [ТС]     Нахождение чисел в матрице. Очень сложно #3
HTML5
1
2
3
4
5
6
7
8
for (int i=1;i<=n;i++)
                {for (int j=1;j<=n;j++)
                        if (fabs(m[i][j])<1) {cout<<endl<<m[i][j]<<endl;
                                         kolvo++;  
                                        }
                cout << endl;
                }
cout << "kol-vo elementov rovno "<<kolvo<<endl;
вот эта часть ищет и выводит кол-во элементов по модулю меньше 1.
m - матрица, в которой надо их искать.
Нужно найти кол-во строк в матрице m , где есть хотя бы один элемент по модулю меньше 1
jambas92
 Аватар для jambas92
58 / 57 / 3
Регистрация: 18.11.2010
Сообщений: 315
16.12.2010, 22:09     Нахождение чисел в матрице. Очень сложно #4
babobka, у меня твой код не компилируется так как я работаю на MS VS 2008, но вижу хот решения!!!
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
#include <iostream>
 
using namespace std;
 
int main()
{
    int a[100][100];
    int yaya=0, count=0;
    int m;
 
    cin >> m;
 
    for (int i=0; i<m; i++)
    {
        for (int j=0; j<m; j++)
        {
            cin >> a[i][j];
        }
    }
 
    for (int i=0; i<m; i++)
    {
        for (int j=0; j<m; j++)
        {
            if (a[i][j]<1)
            {
                count++;
            }
        }
        if (count>0)
        {
            yaya++;
        }
    }
 
    cout << yaya;
    return 0;
}
сам не знаю почему, но в некоторых тестах он тупит...
babobka
 Аватар для babobka
1 / 1 / 0
Регистрация: 20.10.2010
Сообщений: 166
Записей в блоге: 1
16.12.2010, 22:15  [ТС]     Нахождение чисел в матрице. Очень сложно #5
НЕЕЕЕЕТ. не надо писать заново прогу. Просто представьте, что есть матрица размера nxn , в ней рандомные вещественные числа. Вот среди них надо найти строки , которые содержат хотя бы один элемент по модулю меньше 1.
HTML5
1
2
3
4
5
6
7
8
for (int i=1;i<=n;i++)
                {for (int j=1;j<=n;j++)
                        if (fabs(m[i][j])<1) {cout<<endl<<m[i][j]<<endl;
                                         kolvo++;  
                                        }
                cout << endl;
                }
cout << "kol-vo elementov rovno "<<kolvo<<endl;
Нужно изменить вот этот кусок так, чтобы он выводил кол-во этих строк.

Добавлено через 25 секунд
Это с++ , я просто не в те тэги вбил)
caliper
 Аватар для caliper
10 / 10 / 0
Регистрация: 07.12.2010
Сообщений: 131
16.12.2010, 22:21     Нахождение чисел в матрице. Очень сложно #6
Цитата Сообщение от jambas92 Посмотреть сообщение
babobka,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    for (int i=0; i<m; i++)
    {
        for (int j=0; j<m; j++)
        {
            if (a[i][j]<1)
            {
                count++;
            }
        }
        if (count>0)
        {
            yaya++;
        }
    }
Переменную count не обнуляете и условие меньше 1 по модулю не проверяется.
C++
1
2
3
4
5
6
7
8
9
    for (int i=0; i<m; i++)
        for (int j=0; j<m; j++)
        {
            if (fabs(m[i][j])]<1)
            {
                yaya++;
                                break;
            }
        }
babobka
 Аватар для babobka
1 / 1 / 0
Регистрация: 20.10.2010
Сообщений: 166
Записей в блоге: 1
16.12.2010, 22:28  [ТС]     Нахождение чисел в матрице. Очень сложно #7
Цитата Сообщение от caliper Посмотреть сообщение
Переменную count не обнуляете и условие меньше 1 по модулю не проверяется.
C++
1
2
3
4
5
6
7
8
9
    for (int i=0; i<m; i++)
        for (int j=0; j<m; j++)
        {
            if (fabs(m[i][j])]<1)
            {
                yaya++;
                                break;
            }
        }
не то. я ж написал что мне именно нужно от задачи. Я написал кусок, который мне нужно изменить, чтобы программа работала корректно. Буквально сообщение назад я более подробно описал задачу. Помогите уж)
Xorboo
7 / 7 / 0
Регистрация: 16.12.2010
Сообщений: 23
16.12.2010, 22:37     Нахождение чисел в матрице. Очень сложно #8
Дык помогли же уже. Буквально немного поменять осталось
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int kolvo, strok = 0;
for (int i=1;i<=n;i++)
{
    for (int j=1;j<=n;j++)
    {
        kolvo = 0;
        if (fabs(m[i][j])<1) 
        {
            cout<<endl<<m[i][j]<<endl;
            kolvo++;  
        }
        if (kolvo > 0)
            strok++;
    }
}
cout << "kol-vo strok rovno "<<strok<<endl;
Как-то так.
babobka
 Аватар для babobka
1 / 1 / 0
Регистрация: 20.10.2010
Сообщений: 166
Записей в блоге: 1
16.12.2010, 22:38  [ТС]     Нахождение чисел в матрице. Очень сложно #9
проверю ща)
besstiaa
 Аватар для besstiaa
93 / 93 / 7
Регистрация: 04.06.2010
Сообщений: 223
16.12.2010, 22:39     Нахождение чисел в матрице. Очень сложно #10
babobka,после kolvo++; написать break;
babobka
 Аватар для babobka
1 / 1 / 0
Регистрация: 20.10.2010
Сообщений: 166
Записей в блоге: 1
16.12.2010, 22:46  [ТС]     Нахождение чисел в матрице. Очень сложно #11
не работает. он выводит ровно то, что у меня было и до этого. Просто сами элементы и их количество не более. входные данные размерность 4 x 5 y 6
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
91
92
93
94
#include "stdafx.h"
#include "iostream"
#include "conio.h"
#include "math.h"
#include "time.h"
using namespace std;
#define nmax 100
 
int _tmain(int argc, _TCHAR* argv[])
{ 
    int per=0;
        float a[nmax][nmax];
    float b[nmax][nmax];
    float c[nmax][nmax];
    float h[nmax][nmax];
    float m[nmax][nmax];
    int n,x,y,yA;
    cout << "Vvedite razmernost'" <<endl;
    cin >> n;
    cout << "Vvedite x" <<endl;
    cin >> x;
    cout << "Vvedite y" <<endl;
    cin >> y;
    for (int i=1;i<=n;i++)
        for (int j=1;j<=n;j++)
        {
            //cout << "Vvedite element A[" <<i<< "][" <<j<< "]" <<endl;
            a[i][j]=(( (float) rand() / (float) RAND_MAX) * 10 );
        }
    for (int i=1;i<=n;i++)
        for (int j=1;j<=n;j++)
        {
            //cout << "Vvedite element B[" <<i<< "][" <<j<< "]" <<endl;
            b[i][j]=(( (float) rand() / (float) RAND_MAX) * 10 );
        }
 
        for (int i=1;i<=n;i++)
        for (int j=1;j<=n;j++)
            cout<<a[i][j]<<" ";
        cout<<endl;
 
        for (int i=1;i<=n;i++)
        for (int j=1;j<=n;j++)
            cout<<b[i][j]<<" ";
        cout<<endl;
 
    for (int i=1;i<=n;i++)
        for (int j=1;j<=n;j++)
            c[i][j]=a[i][j]*b[i][j];        //A*B=C;
    for (int i=1;i<=n;i++)
        for (int j=1;j<=n;j++)
            a[i][j]=a[i][j]*y;              //A=y*A;
    for (int i=1;i<=n;i++)
        for (int j=1;j<=n;j++)
            h[i][j]=a[i][j]-c[i][j];        //H=A-C;
    for (int i=1;i<=n;i++)  
        for (int j=1;j<=n;j++)
            b[i][j]=(b[i][j]+x)*h[i][j];    //B=H(B+x);
    for (int i=1;i<=n;i++)
        for (int j=1;j<=n;j++)
            c[i][j]=a[i][j]-c[i][j];        //C=A-C;
    for (int i=1;i<=n;i++)
        for (int j=1;j<=n;j++)
        a[i][j]=a[i][j]*x;                  //A=A*x;
    for (int i=1;i<=n;i++)  
        for (int j=1;j<=n;j++)
            m[i][j]=b[i][j]-a[i][j];        //M=B-A;
    cout << endl;
    for (int i=1;i<=n;i++)
        {for (int j=1;j<=n;j++)
            cout << m[i][j]<<" ";                // всё уравнение имеет вид (y*A-A*B)(B+x) - A*y*x
        cout << endl;
        }                           //Ищет элементы 
     
int kolvo, strok = 0;
for (int i=1;i<=n;i++)
{
        for (int j=1;j<=n;j++)
        {
                kolvo = 0;
                if (fabs(m[i][j])<1) 
                {
                        cout<<endl<<m[i][j]<<endl;
                        kolvo++;  
                }
                if (kolvo > 0)
                        strok++;
        }
}
cout << "kol-vo strok rovno "<<strok<<endl;
                
    getch();
    return 0;
}
Вот как я состряпал

Добавлено через 2 минуты
МНЕ НУЖНО ВЫВЕСТИ НА ЭКРАН КОЛ-ВО СТРОК, СОДЕРЖАЩИХ ХОТЯ БЫ ОДИН ЭЛЕМЕНТ ПО МОДУЛЮ МЕНЬШЕ 1! вы не учли, что , если на одной строке будет 2 таких элемента или более. Если такой элемент на строке 1, то хорошо, но если два, то фейл

Добавлено через 1 минуту
вот матрица допустим
0.5 1 2
0.7 0.1 2
0.1 0 2
Должно вывести 3. А по этому алгоритму будет просто 5

Добавлено через 14 секунд
у меня основная проблема в этом
besstiaa
 Аватар для besstiaa
93 / 93 / 7
Регистрация: 04.06.2010
Сообщений: 223
16.12.2010, 22:46     Нахождение чисел в матрице. Очень сложно #12
babobka,в вашем первоначальном варианте поставьте после строчки kolvo++; строчку с оператором break;
babobka
 Аватар для babobka
1 / 1 / 0
Регистрация: 20.10.2010
Сообщений: 166
Записей в блоге: 1
16.12.2010, 22:48  [ТС]     Нахождение чисел в матрице. Очень сложно #13
СПАСИБО! ПАЦАНЫ!!!!! УУУУУУИИИИХААААА! +1 ВСЕМ!!!!
caliper
 Аватар для caliper
10 / 10 / 0
Регистрация: 07.12.2010
Сообщений: 131
16.12.2010, 22:49     Нахождение чисел в матрице. Очень сложно #14

C++
1
2
3
4
5
6
7
8
9
10
11
int strok = 0;
for (int i=1;i<=n;i++)
        for (int j=1;j<=n;j++)
        {
                if (fabs(m[i][j])<1) 
                {
                        strok++;
                        break;  
                }
        }
cout << "kol-vo strok rovno "<<strok<<endl;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.12.2010, 22:51     Нахождение чисел в матрице. Очень сложно
Еще ссылки по теме:

C++ Нахождение k в квадратной матрице
Нахождение матрицы в матрице C++
Нахождение количества простых чисел в матрице C++

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

Или воспользуйтесь поиском по форуму:
babobka
 Аватар для babobka
1 / 1 / 0
Регистрация: 20.10.2010
Сообщений: 166
Записей в блоге: 1
16.12.2010, 22:51  [ТС]     Нахождение чисел в матрице. Очень сложно #15
да понял я
Yandex
Объявления
16.12.2010, 22:51     Нахождение чисел в матрице. Очень сложно
Ответ Создать тему
Опции темы

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