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

Матрицы. - C++

Восстановить пароль Регистрация
 
 
Прекрасная
2 / 2 / 0
Регистрация: 12.02.2010
Сообщений: 96
07.06.2010, 15:28     Матрицы. #1
Помогите с программой!
Найти в матрице первую строку, все элементы которой положительны
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.06.2010, 15:28     Матрицы.
Посмотрите здесь:

Алгоритм обработки матрицы: Нахождение максимального элемента матрицы и его номера. C++
Зеркально отразить элементы матрицы относительно горизонтальной оси симметрии матрицы C++
Матрицы. Найти и распечатать сумму элементов 5-го столбца матрицы А и сумму элементов последней строки матрицы В C++
Матрицы. Программа, которая удаляет столбец матрицы, содержащий максимальный ее элемент C++
C++ Найти количество элементов матрицы, которые совпадают с элементами другой матрицы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,694
07.06.2010, 15:36     Матрицы. #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int pos_el (int x)
{
    return (x>0);
}
 
// Row-количество строк, Column-количетство столбцов.
    
    int count;
    for (int i=0; i<Row; i++) {
        count=0;
        count=std::count_if (MAS[i], MAS[i]+Column, pos_el);
        if (!(count)) std::cout << i << "row.\n";
        break; }
Прекрасная
2 / 2 / 0
Регистрация: 12.02.2010
Сообщений: 96
07.06.2010, 17:06  [ТС]     Матрицы. #3
А что означает count? И можно ли заменить :: на стандартный вариант, мне так будет понятнее?))
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,694
07.06.2010, 17:13     Матрицы. #4
Ну считайте в строчке кол-во отрицательных элементов.
Если оно равно нулю, все, нашли.
Прекрасная
2 / 2 / 0
Регистрация: 12.02.2010
Сообщений: 96
07.06.2010, 17:23  [ТС]     Матрицы. #5
А вот эту строку count=std::count_if (MAS[i], MAS[i]+Column, pos_el); можно написать более понятно и просто? Например, заменить :: и что значит count_if ?
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,694
07.06.2010, 17:24     Матрицы. #6
Да, можно.
Я же сказал, считайте в ручную кол-во отрицательных элементов в строке.
Прекрасная
2 / 2 / 0
Регистрация: 12.02.2010
Сообщений: 96
07.06.2010, 17:29  [ТС]     Матрицы. #7
Как это "в ручную"? Исправьте, пожалуйста, прог-у, чтобы она была максимально проста и понятна, я всё-таки начинающий программист))) буду очень признательна!
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,694
07.06.2010, 17:31     Матрицы. #8
Как "начинающий программист", вы должны такое уметь, хотя бы попытаться.

C++
1
2
3
4
5
6
7
8
9
    int count;
    for (int i=0; i<Row; i++) {
        count=0;
        for (int j=0; j<Column; j++)
            if (MAS[i][j]<0) count++;
        if (!(count)) {
                std::cout << i << "row.\n";
                break; }
    }
Прекрасная
2 / 2 / 0
Регистрация: 12.02.2010
Сообщений: 96
07.06.2010, 18:04  [ТС]     Матрицы. #9
А можно полностью прог-у, с началом и концом?
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,694
07.06.2010, 18:05     Матрицы. #10
Вы вообще не понимаете о чем идет речь?
Попробуйте сами.
Прекрасная
2 / 2 / 0
Регистрация: 12.02.2010
Сообщений: 96
07.06.2010, 18:10  [ТС]     Матрицы. #11
Да не получается у меня самой! Ошибки выдает. Пожалуйста, разместите программу!
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,694
07.06.2010, 18:14     Матрицы. #12
Покажите код, где ошибки выдает (;
Прекрасная
2 / 2 / 0
Регистрация: 12.02.2010
Сообщений: 96
07.06.2010, 18:19  [ТС]     Матрицы. #13
Выдает, не указан массив
pannaruto
 Аватар для pannaruto
11 / 11 / 2
Регистрация: 12.05.2010
Сообщений: 29
07.06.2010, 19:14     Матрицы. #14
Попробуй этот код. Если что-нибудь не понимаете, пишите, обязательно объясню
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
#include <iostream>
#include <iomanip>
#include <stdlib.h>
#include <time.h>
using namespace std;
 
#define max 50
 
/* Поиск строки по заданию
 *      + Если есть такая то возвращается номер строки
 *      + Если нет то возвращается значение -1
 **/
int findFirstRow( const int arr[][max], int const& nArr )
{
    for( int row = 0; row < nArr; row++ )
    {
        int col;
 
        for( col = 0; col < nArr; col++ )
            if( arr[row][col] < 0 )
                break;
 
        if( col == nArr )
            return row;
    }
    return -1;
}
 
// Вывод на экран данной матрицы
void display( const int arr[][max], int const& nArr )
{
    for( int row = 0; row < nArr; row++ )
    {
        for( int col = 0; col < nArr; col++ )
            cout << setw(3) << arr[row][col];
        cout << "    Row " << row << endl << endl;
    }
}
 
int main()
{
    int a[max][max];
    int na = 10;
 
    // Генерирование случайной матрицы a размер ( na x na )
    srand( (unsigned)time(NULL));
    for( int row = 0; row < na; row++ )
        for( int col = 0; col < na; col++ )
            a[row][col] = rand() % 20 - 5;
    
    cout << "Matrix :\n\n";
    display( a, na );
    cout << "\n\nResult : row " << findFirstRow( a, na ) << endl;
 
    system("pause");
    return 0;
}
Прекрасная
2 / 2 / 0
Регистрация: 12.02.2010
Сообщений: 96
07.06.2010, 19:38  [ТС]     Матрицы. #15
Ох, как сложно! Вот мы строку и столбец обозначаем i и j, ну это понятно (row и col, я так понимаю). А остальное(( ЗАчем нужно генерирование случайной матрицы? Зачем так много функций? И размер как можно меньше можно взять, наверное... Помогите, пожалуйста, с этой программой!!!!

Добавлено через 2 минуты
И ещё, матрица, наверное, должна вводиться с клавиатуры...
toxa92
 Аватар для toxa92
167 / 94 / 2
Регистрация: 16.04.2010
Сообщений: 464
07.06.2010, 19:42     Матрицы. #16
Начинающий программист сначала делает RTFM, и если не понимает - задает вопросы

А вы хотите получить программу сразу готовую
Прекрасная
2 / 2 / 0
Регистрация: 12.02.2010
Сообщений: 96
07.06.2010, 19:45  [ТС]     Матрицы. #17
Ну если я не понимаю!!!!
pannaruto
 Аватар для pannaruto
11 / 11 / 2
Регистрация: 12.05.2010
Сообщений: 29
07.06.2010, 19:54     Матрицы. #18
Цитата Сообщение от Прекрасная Посмотреть сообщение
ЗАчем нужно генерирование случайной матрицы?
Чтобы каждый раз запускаете про-гму не надо вводить матрицу с клавиатуры то не тратить время.

Цитата Сообщение от Прекрасная Посмотреть сообщение
Зачем так много функций?
Чтобы сократить основную функцию и тогда программу читатель будет легче помимать


Цитата Сообщение от Прекрасная Посмотреть сообщение
И размер как можно меньше можно взять
Цитата Сообщение от Прекрасная Посмотреть сообщение
ЗАчем нужно генерирование случайной матрицы?
Обратите внимание размер матрицы дан через переменную na. Если хотите вводить матрицу с клавиатуры, сам пишите вместо отрезка Генерирования случайной матрицы свой код.
Прекрасная
2 / 2 / 0
Регистрация: 12.02.2010
Сообщений: 96
07.06.2010, 20:04  [ТС]     Матрицы. #19
Вот как исправить вышеприведенную программу без генерирования (надо, чтобы данные вводились с клавиатуры) и чтобы было поменьше функций (если это, конечно, возможно)?

Добавлено через 24 секунды
pannaruto, помоги, пожалуйста!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.06.2010, 20:28     Матрицы.
Еще ссылки по теме:

C++ Преобразование матрицы (удалить из матрицы столбец с наибольшей по модулю суммой элементов)

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

Или воспользуйтесь поиском по форуму:
pannaruto
 Аватар для pannaruto
11 / 11 / 2
Регистрация: 12.05.2010
Сообщений: 29
07.06.2010, 20:28     Матрицы. #20
Ну смотрите. Постарайтесь сам писать ^__^
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
#include <iostream>
#include <iomanip>
using namespace std;
 
#define max 50
int main()
{
    int MAS[max][max];
    int Row, Column;
    
    // Ввод размеров матрицы
    cout << "Enter number of rows : ";
    cin >> Row;
    cout << "Enter number of columns : ";
    cin >> Column;
    
    // Ввод элементов
    for( int i = 0; i < Row; i++ )
        for( int j = 0; j < Column; j++ )
        {
            cout << "MAS[" << i << "][" << j << "] : ";
            cin >> MAS[i][j];
        }
    
    // Вывод матрицы на экран
    cout << "\nMatrix : " << endl;
    for( int i = 0; i < Row; i++ )
    {
        for( int j = 0; j < Column; j++ )
            cout << setw(3) << MAS[i][j];
        cout << "     Row " << i << endl << endl;   
    }
    
    // Поиск искомой строки
    int count;
        for (int i=0; i<Row; i++) 
    {
             count=0;
 
             for (int j=0; j<Column; j++)
                 if (MAS[i][j]<0) count++;
 
             if (!(count)) 
         {
                   cout << "\n\nRow " << i << endl;
                   break; 
         }
         if( i == Row - 1 ) 
             cout << "There is not such row\n";
        }
 
    system("pause");
    return 0;
}
Yandex
Объявления
07.06.2010, 20:28     Матрицы.
Ответ Создать тему
Опции темы

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