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

Дана квадратная матрица. Найдите ... - C++

Восстановить пароль Регистрация
 
WINT-er
2 / 2 / 1
Регистрация: 07.05.2010
Сообщений: 30
12.05.2010, 23:59     Дана квадратная матрица. Найдите ... #1
Есть такая задача)

Дана квадратная матрица. Найдите в каждой её строке наименьший элемент и вычтите его из всех элементов строки. Затем найдите в каждом столбце наименьший элемент и вычтите его из всех элементов столбца. Проверьте, верно ли, что после данных преобразований в каждой строке и каждом столбце матрицы находится только один нулевой элемент.

очень нужна) пожалуйста
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.05.2010, 23:59     Дана квадратная матрица. Найдите ...
Посмотрите здесь:

Дана целочисленная квадратная матрица. C++
C++ Дана действительная квадратная матрица
C++ Дана действительна квадратная матрица
C++ Дана квадратная матрица
C++ дана квадратная матрица
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
GrihaI
13 / 13 / 1
Регистрация: 23.04.2010
Сообщений: 31
13.05.2010, 00:57     Дана квадратная матрица. Найдите ... #2
числа только положительные?
Сколько раз перебирать матрицу 2, или больше?
WINT-er
2 / 2 / 1
Регистрация: 07.05.2010
Сообщений: 30
13.05.2010, 01:25  [ТС]     Дана квадратная матрица. Найдите ... #3
а, да, забыл
Число элементов массива задаётся пользователем. Элементы могут заполняться как вручную, так и случайным образом.
сколько раз - без разницы,я думаю
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,694
13.05.2010, 07:58     Дана квадратная матрица. Найдите ... #4
Щас убегаю, не успел сделать с проверкой на нули, но остальное вот, вроде бы правильно:
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
#include <iostream>
#include <iomanip>
#include <ctime>
 
int main ()
{
    const int Row=6;
    const int Column=8;
    int i, j;
    int MAS[Row][Column];
    int min_Row[Row];
    int min_Column[Column];
 
    std::cout << "Start matrix:\n";
    srand(time(NULL));
    for (i=0; i<Row; i++)
    {
        for (j=0; j<Column; j++) {
            MAS[i][j]=rand()%50;
            std::cout << std::setw(3) << MAS[i][j]; }
        std::cout << std::endl;
    }
    std::cout << std::endl;
 
    for (i=0; i<Row; i++)
        for (j=0; j<Column; j++)
            min_Row[i]=*std::min_element(MAS[i], MAS[i]+Column); // ищем минимальный элемент в строках.
 
    for (j=0; j<Column; j++)
        for (i=0; i<Row; i++)
            min_Column[i]=*std::min_element(MAS[j], MAS[j]+Row); // ищем минимальный элемент в столбцах.
 
    for (i=0; i<Row; i++) // вычитаем.
        for (j=0; j<Column; j++)
            MAS[i][j]-=min_Row[i];
    for (j=0; j<Column; j++)
        for (i=0; i<Row; i++)
            MAS[i][j]-=min_Column[j]; // вычитаем.
 
    return 0;
}
GrihaI
13 / 13 / 1
Регистрация: 23.04.2010
Сообщений: 31
13.05.2010, 13:16     Дана квадратная матрица. Найдите ... #5
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
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
void show(int**A,int size)
{
    int i,j;    
    for(i=0;i<size;i++)
    {
        for(j=0;j<size;j++)
            printf("%d\t",A[i][j]);
        printf("\n");
    }
    printf ("----------------------------\n");
}
void delX(int **A,int size,int min,int pos)
{
    int i;
    for(i=0;i<size;i++)
        A[pos][i]-=min;
}
void delY(int **A,int size,int min,int pos)
{
    int i;
    for(i=0;i<size;i++)
        A[i][pos]-=min;
}
void main()
{
    int i,j,size,min;
    int **array_a;
    srand (time (NULL));
    printf ("Введите размер массива: ");
    scanf("%d",&size);
    array_a=(int *)malloc(size*sizeof(int));//создаем массив указателей для хранения адресов столбцов
    for(i=0;i<size;i++)
        array_a[i]=(int *)malloc(size*sizeof(int));//создаем size столбцов высотой size
    for(i=0;i<size;i++)
        for(j=0;j<size;j++)
            array_a[i][j]=rand()%10;
    
    printf ("Исходный массив:\n");
    show(array_a,size);
    for(i=0;i<size;i++)
    {
        min=array_a[i][0];
        for(j=0;j<size;j++)
        {
            if(array_a[i][j]<min)
                min=array_a[i][j];
        }
        delX(array_a,size,min,i);
    }
    printf ("Массив после вычитанья по строкам:\n");
    show(array_a,size);
    for(i=0;i<size;i++)
    {
        min=array_a[0][i];
        for(j=0;j<size;j++)
        {
            if(array_a[j][i]<min)
                min=array_a[j][i];
        }
        delY(array_a,size,min,i);
    }
    printf ("Массив после вычитанья по столбцам:\n");
    show(array_a,size);
    for(i=0;i<size;i++)
    {
        min=0;
        for(j=0;j<size;j++)
            if(!array_a[i][j])min++;
        printf ("В %d сроке %d нулей.\n",i+1,min);
    }
    for(i=0;i<size;i++)
    {
        min=0;
        for(j=0;j<size;j++)
            if(!array_a[j][i])min++;
        printf ("В %d столбце %d нулей.\n",i+1,min);
    }
}
WINT-er
2 / 2 / 1
Регистрация: 07.05.2010
Сообщений: 30
14.05.2010, 20:31  [ТС]     Дана квадратная матрица. Найдите ... #6
в первой ошибка - [C++ Error] Unit1.cpp(35): E2316 'min_element' is not a member of 'std'

во второй
[C++ Error] Unit1.cpp(42): E2034 Cannot convert 'int *' to 'int * *'

з.ы чем отличаются они друг от друга?
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,694
14.05.2010, 20:37     Дана квадратная матрица. Найдите ... #7
Подключите библиотеку <algorithm>
GrihaI
13 / 13 / 1
Регистрация: 23.04.2010
Сообщений: 31
14.05.2010, 20:39     Дана квадратная матрица. Найдите ... #8
У меня Microsoft Visual C++ 2008 компилит без проблем
Genius Ignat
1233 / 771 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
14.05.2010, 20:50     Дана квадратная матрица. Найдите ... #9
[C++ Error] Unit1.cpp(42): E2034 Cannot convert 'int *' to 'int * *'
Тут нет ни какой ошибки.
Глючный у вас компилятор, ошибка тут:
C++
1
array_a=(int *)malloc(size*sizeof(int));
Надо так:
C++
1
 array_a=(int **)malloc(size*sizeof(int*));
Добавлено через 4 минуты
У меня Microsoft Visual C++ 2008 компилит без проблем
сказки говоришь, 3 - ошибки выдает.

Добавлено через 1 минуту
Точнее 1- ошибку, которую я назвал и два предупреждения.
GrihaI
13 / 13 / 1
Регистрация: 23.04.2010
Сообщений: 31
14.05.2010, 21:00     Дана квадратная матрица. Найдите ... #10
Если я говорю что компилит без проблем, то так оно и есть.
Миниатюры
Дана квадратная матрица. Найдите ...  
Genius Ignat
1233 / 771 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
14.05.2010, 21:33     Дана квадратная матрица. Найдите ... #11
Если я говорю что компилит без проблем, то так оно и есть.
Либо у вас студия гавеная либо решили поиздеваться.
Рассказывать суть ошибки я не буду, ибо ван не интересно,
подобные ошибки видно и без компилятора.
Если догадаетесь в чем суть ошибки я за вас буду рад.
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2293 / 1663 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
14.05.2010, 21:42     Дана квадратная матрица. Найдите ... #12
Genius Ignat, все просто, посмотри на расширения файла у GrihaI - .c. Содержание такого файла будет компилироваться как код на Си и ошибка, хоть и по факту останется ошибкой, но компилятор выдаст лишь предупреждение:
warning C4047: =: 'int **' отличается по уровням косвенного обращения от 'int *'
Genius Ignat
1233 / 771 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
14.05.2010, 22:15     Дана квадратная матрица. Найдите ... #13
Либо у вас студия гавеная либо решили поиздеваться.
Рассказывать суть ошибки я не буду, ибо ван не интересно,
Извиняюсь за это, я и вправду думал что Студия врет, или кто решил поиздеваться сегодня.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.05.2010, 22:22     Дана квадратная матрица. Найдите ...
Еще ссылки по теме:

C++ дана квадратная матрица А
C++ дана квадратная матрица
Дана квадратная матрица порядка N C++

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

Или воспользуйтесь поиском по форуму:
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2293 / 1663 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
14.05.2010, 22:22     Дана квадратная матрица. Найдите ... #14
Цитата Сообщение от GrihaI Посмотреть сообщение
Если я говорю что компилит без проблем, то так оно и есть.
Компилить то компилит, но ошибка ошибкой остается. Просто повезло, что размер int'а на твоей машине равен размеру указателя. Исправь ошибку, как советовал Genius Ignat.
Yandex
Объявления
14.05.2010, 22:22     Дана квадратная матрица. Найдите ...
Ответ Создать тему
Опции темы

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