Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
Прекрасная
2 / 2 / 0
Регистрация: 12.02.2010
Сообщений: 96
#1

Матрицы.

07.06.2010, 15:28. Просмотров 1000. Ответов 23
Метки нет (Все метки)

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

Матрицы. Найти и распечатать сумму элементов 5-го столбца матрицы А и сумму элементов последней строки матрицы В
Даны две матрицы А(mxn)и В(m1xn1).программа находит и распечатывает сумму...

Поменять большие элементы в строке матрицы с маленькими элементами этой же матрицы
Дана мне задача надо заменить большие элементы в строке матрицы с маленькими...

Найти количество элементов матрицы, которые совпадают с элементами другой матрицы
Помогите найти количество элементов 2 мерного массива, которые совпадают с...

Преобразование матрицы (удалить из матрицы столбец с наибольшей по модулю суммой элементов)
Всем привет, есть программа для ввода матрицы и вывода на экран. Нужно удалить...

Зеркально отразить элементы матрицы относительно горизонтальной оси симметрии матрицы
Здравствуйте! Помогите написать 3 программмы на C++ на задачи с двумерными...

23
neske
1527 / 894 / 192
Регистрация: 26.03.2010
Сообщений: 3,074
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; }
0
Прекрасная
2 / 2 / 0
Регистрация: 12.02.2010
Сообщений: 96
07.06.2010, 17:06  [ТС] #3
А что означает count? И можно ли заменить :: на стандартный вариант, мне так будет понятнее?))
0
neske
1527 / 894 / 192
Регистрация: 26.03.2010
Сообщений: 3,074
07.06.2010, 17:13 #4
Ну считайте в строчке кол-во отрицательных элементов.
Если оно равно нулю, все, нашли.
0
Прекрасная
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 ?
0
neske
1527 / 894 / 192
Регистрация: 26.03.2010
Сообщений: 3,074
07.06.2010, 17:24 #6
Да, можно.
Я же сказал, считайте в ручную кол-во отрицательных элементов в строке.
0
Прекрасная
2 / 2 / 0
Регистрация: 12.02.2010
Сообщений: 96
07.06.2010, 17:29  [ТС] #7
Как это "в ручную"? Исправьте, пожалуйста, прог-у, чтобы она была максимально проста и понятна, я всё-таки начинающий программист))) буду очень признательна!
0
neske
1527 / 894 / 192
Регистрация: 26.03.2010
Сообщений: 3,074
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; }
    }
0
Прекрасная
2 / 2 / 0
Регистрация: 12.02.2010
Сообщений: 96
07.06.2010, 18:04  [ТС] #9
А можно полностью прог-у, с началом и концом?
0
neske
1527 / 894 / 192
Регистрация: 26.03.2010
Сообщений: 3,074
07.06.2010, 18:05 #10
Вы вообще не понимаете о чем идет речь?
Попробуйте сами.
0
Прекрасная
2 / 2 / 0
Регистрация: 12.02.2010
Сообщений: 96
07.06.2010, 18:10  [ТС] #11
Да не получается у меня самой! Ошибки выдает. Пожалуйста, разместите программу!
0
neske
1527 / 894 / 192
Регистрация: 26.03.2010
Сообщений: 3,074
07.06.2010, 18:14 #12
Покажите код, где ошибки выдает (;
0
Прекрасная
2 / 2 / 0
Регистрация: 12.02.2010
Сообщений: 96
07.06.2010, 18:19  [ТС] #13
Выдает, не указан массив
0
pannaruto
11 / 11 / 3
Регистрация: 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;
}
0
Прекрасная
2 / 2 / 0
Регистрация: 12.02.2010
Сообщений: 96
07.06.2010, 19:38  [ТС] #15
Ох, как сложно! Вот мы строку и столбец обозначаем i и j, ну это понятно (row и col, я так понимаю). А остальное(( ЗАчем нужно генерирование случайной матрицы? Зачем так много функций? И размер как можно меньше можно взять, наверное... Помогите, пожалуйста, с этой программой!!!!

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

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

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


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

Добавлено через 24 секунды
pannaruto, помоги, пожалуйста!
0
pannaruto
11 / 11 / 3
Регистрация: 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;
}
1
07.06.2010, 20:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.06.2010, 20:28

Алгоритм обработки матрицы: Нахождение максимального элемента матрицы и его номера.
Алгоритм обработки матрицы: Нахождение максимального элемента матрицы и его...

Вычесть из элементов первого столбца матрицы значение максимального элемента матрицы
Составить программу, в которой 1) организовать ввод матрицы размера mxn из...

Для матрицы найти такие k, что k-я строка матрицы совпадает с k-м столбцом
Помогите решить задачку Для заданной матрицы размером 8 на 8 найти такие k,...


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

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

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