Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.50/22: Рейтинг темы: голосов - 22, средняя оценка - 4.50
nuri
0 / 0 / 0
Регистрация: 01.05.2011
Сообщений: 63
#1

Переставляя элементы матрицы, добиться результата

15.06.2011, 02:40. Просмотров 3967. Ответов 20
Метки нет (Все метки)

ПОМОГИТЕ РЕШИТЬ ЗАДАЧУ!!! ОЧЕНЬ НАДО!!!
Условие следующие:
Путем перестановки элементов квадратной вещественной матрицы добиться того, чтобы ее максимальный элемент находился в левом верхнем углу, следующий по величине - в позиции (2,2), следующий по величине- в позиции (3,3) и т.д. , заполнив таким образом всю главную диагональ. Найти номер первой из строк, не содержащих ни одного положительного элемента.



P.S: Напишите, если не сложно код данной программы, буду очень признательна) А то если честно я и задание плохо понимаю

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

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

Переставляя строки матрицы добиться результата
С помощью перестановки элементов матрицы добиться того, что бы ее максимальный...

Переставляя строки и столбцы матрицы, добиться, чтобы наибольший элемент оказался в верхнем левом углу
Дана вещественная матрица A размером 7*4. Переставляя ее строки и...

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

Дана (построчно) вещественная матрица размером МхН. Переставляя ее строки и столбцы, добиться того, чтобы наибольший
Дана (построчно) вещественная матрица размером М на Н. Переставляя ее строки...

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

20
soon
2545 / 1310 / 177
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
15.06.2011, 05:08 #2
смотри здесь
1
nuri
0 / 0 / 0
Регистрация: 01.05.2011
Сообщений: 63
15.06.2011, 05:37  [ТС] #3
soon, спасибо большое))) только не подскажешь, что там за 2 ошибки при запуске выдает?
0
soon
2545 / 1310 / 177
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
15.06.2011, 05:48 #4
напиши, какие ошибки и строки
0
nuri
0 / 0 / 0
Регистрация: 01.05.2011
Сообщений: 63
15.06.2011, 06:02  [ТС] #5
soon, там по моему дело не в программе. Выдает вот что:
-------------------Configuration: l_4v17 - Win32 Debug--------------------
Compiling...
4.cpp
g:\лабораторные работы с+++\l_4v17\4.cpp(41) : error C2374: 'i' : redefinition; multiple initialization
g:\лабораторные работы с+++\l_4v17\4.cpp(11) : see declaration of 'i'
g:\лабораторные работы с+++\l_4v17\4.cpp(47) : error C2374: 'i' : redefinition; multiple initialization
g:\лабораторные работы с+++\l_4v17\4.cpp(11) : see declaration of 'i'
Error executing cl.exe.

l_4v17.exe - 2 error(s), 0 warning(s)
0
soon
2545 / 1310 / 177
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
15.06.2011, 06:06 #6
объявите i и j в самом начале, затем, во всех последующих циклах уберите перед i и j int
0
nuri
0 / 0 / 0
Регистрация: 01.05.2011
Сообщений: 63
15.06.2011, 06:29  [ТС] #7
soon, объявила,убрала, теперь всего одна ошибка: error C2065: 'count' : undeclared identifier

Добавлено через 15 минут
soon, я задала переменную count, ошибок нет но после запуска он ничего вводить не дает

Добавлено через 1 минуту
soon, Вы извините , если я вас сильно загрузила, просто я в этом плохо разбираюсь(а если точнее, то почти совсем не разбираюсь), а задание сдать надо.
0
soon
2545 / 1310 / 177
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
15.06.2011, 07:54 #8
Цитата Сообщение от nuri Посмотреть сообщение
если я вас сильно загрузила
нет, что вы
напишите, какой у вас компилятор, мой код, который вы исправили, и любой свой работающий код.
0
nuri
0 / 0 / 0
Регистрация: 01.05.2011
Сообщений: 63
15.06.2011, 08:18  [ТС] #9
soon, это ваш код:
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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#include <iostream>
#include <iomanip>
 
int main()
{
    int n;
    std::cin >> n;
    float** arr = new float* [n];
    float max;
    int i_max, j_max;
    for (int i = 0; i < n; ++i)
    {
        arr[i] = new float [n];
        for (int j = 0; j < n; ++j)
        {
            std::cin >> arr[i][j];
            if (((!i) && (!j)) || (arr[i][j] > max))
            {
                max = arr[i][j];
                i_max = i;
                j_max = j;
            }
        }
    }
    arr[i_max][j_max] = arr[0][0]; 
    arr[0][0] = max;
    for (int count = 1; count < n; ++count)
    {
        max = arr[0][1];
        for (int i = 0; i < n; ++i)
            for (int j = 0; j < n; ++j)
                if (((i != j) || ((i >= count) && (j >= count))) && (arr[i][j] > max))
                {
                    max = arr[i][j];
                    i_max = i;
                    j_max = j;
                }
        arr[i_max][j_max] = arr[count][count]; 
        arr[count][count] = max;
    }
    for (int i = 0; i < n; ++i)
    {
            for (int j = 0; j < n; ++j)
                std::cout << std::setw(5) << arr[i][j];
            std::cout << std::endl;
    }
    for (int i = 0; i < n; ++i)
    {
        int count = 0;
            for (int j = 0; j < n; ++j)
                if (arr[i][j] < 0)
                    ++count;
            if (count == n)
            {
                std::cout << "line #" << i + 1 << " has no positive numbers\n";
                system("pause");
                return 0;
            }
    }
    std::cout << "all lines have positive numbers\n";
    system("pause");
    return 0;
}
 
[size="1"][color="grey"][I]Добавлено через 1 минуту[/I][/color][/size]
[b]soon[/b], мой(точнее ваш) исправленный код:
#include <iomanip>
 
int main()
{
    int n,i,j;
    std::cin >> n;
    float** arr = new float* [n];
    float max;
    int i_max, j_max,count;
    for ( i = 0; i < n; ++i)
    {
        arr[i] = new float [n];
        for ( j = 0; j < n; ++j)
        {
            std::cin >> arr[i][j];
            if (((!i) && (!j)) || (arr[i][j] > max))
            {
                max = arr[i][j];
                i_max = i;
                j_max = j;
            }
        }
    }
    arr[i_max][j_max] = arr[0][0]; 
    arr[0][0] = max;
    for ( count = 1; count < n; ++count)
    {
        max = arr[0][1];
        for ( i = 0; i < n; ++i)
            for ( j = 0; j < n; ++j)
                if (((i != j) || ((i >= count) && (j >= count))) && (arr[i][j] > max))
                {
                    max = arr[i][j];
                    i_max = i;
                    j_max = j;
                }
        arr[i_max][j_max] = arr[count][count]; 
        arr[count][count] = max;
    }
    for ( i = 0; i < n; ++i)
    {
            for ( j = 0; j < n; ++j)
                std::cout << std::setw(5) << arr[i][j];
            std::cout << std::endl;
    }
    for ( i = 0; i < n; ++i)
    {
        int count = 0;
            for ( j = 0; j < n; ++j)
                if (arr[i][j] < 0)
                    ++count;
            if (count == n)
            {
                std::cout << "line #" << i + 1 << " has no positive numbers\n";
                system("pause");
                return 0;
            }
    }
    std::cout << "all lines have positive numbers\n";
    system("pause");
    return 0;
}
Добавлено через 1 минуту
а какой любой работающий код? по другому заданию?
0
soon
2545 / 1310 / 177
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
15.06.2011, 08:22 #10
а где во второй задаче заголовочный файл iostream?
он вообще подключен?
0
nuri
0 / 0 / 0
Регистрация: 01.05.2011
Сообщений: 63
15.06.2011, 08:30  [ТС] #11
soon, да подключен просто я плохо скопировала.
0
soon
2545 / 1310 / 177
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
15.06.2011, 08:33 #12
скиньте любой работающий у вас код.
ps/ Странно... У меня все вводит и выводит...
0
nuri
0 / 0 / 0
Регистрация: 01.05.2011
Сообщений: 63
15.06.2011, 08:39  [ТС] #13
soon, например вот этот:
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
#include "math.h"
#include "iostream.h"
#include "stdlib.h"
#include "time.h"
void main ()
{
const int n=10, m=10;
int arr [n][m];
int i, j;
int iCountLM=0;
bool flag;
int iSummAbsUpMain=0;
srand(time(NULL));
cout << "\n matrica randomnay obyknovennaya\n";
for (i=0 ; i<n; i++)
{
for (j=0; j<m; j++)
{
arr[i][j]= -100+rand()%201;
cout << arr[i][j] << " ";
}
cout << endl;
}
for (i=0 ; i<n; i++)
{
for (j=0; j<m; j++)
{
flag = true; 
if (!(i-1<0))
{
if (arr[i][j]>=arr[i-1][j-1]) flag = false;
}
// up
if (!(i-1<0))
{
if (arr[i][j]>=arr[i-1][j]) flag = false;
}
//right up
if (!(j>m-1))
{
if (arr[i][j]>=arr[i-1][j+1]) flag = false;
}
//right
if (!(j+1>m-1))
{
if (arr[i][j]>=arr[i][j+1]) flag = false;
}
//ritht down
if (!(j+1>m-1))
{
if (arr[i][j]>=arr[i+1][j+1]) flag = false;
}
//down
if (!(i+1>n-1))
{
if (arr[i][j]>=arr[i+1][j]) flag = false;
}
//left down
if (!(i+1>n-1))
{
if (arr[i][j]>=arr[i+1][j-1]) flag = false;
}
//left
if (!(j<0))
{
if (arr[i][j]>=arr[i][j-1]) flag = false;
}
if (flag) iCountLM+=1;
}
}
cout << "\n koli4estvo lok min  " << iCountLM<< endl;
for (i=0; i<n; i++)
{
for (j=0; j<m; j++)
{
if (j>i) iSummAbsUpMain+=abs(arr[i][j]);
}
}
cout << "\n summa nad glav diagon  " << iSummAbsUpMain<< endl;
}
Добавлено через 52 секунды
может вы мне еще раз скинете тот код который вы вводите и я его попробую снова запустить
0
soon
2545 / 1310 / 177
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
15.06.2011, 08:41 #14
ага
меняйте в моем коде следующее
1) <iostream> на "iostream.h" (аналогично iomanip)
2) уберите все std:: (перед cin, cout, endl)
3) замените int main() на void main()
0
nuri
0 / 0 / 0
Регистрация: 01.05.2011
Сообщений: 63
15.06.2011, 09:02  [ТС] #15
soon, я вроде сделала как вы сказали вот код:
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
#include <iostream.h>
#include <iomanip.h>
 
int main()
{
    int n,i,j;
    cin >> n;
    float** arr = new float* [n];
    float max;
    int i_max, j_max,count;
    for ( i = 0; i < n; ++i)
    {
        arr[i] = new float [n];
        for ( j = 0; j < n; ++j)
        {
            cin >> arr[i][j];
            if (((!i) && (!j)) || (arr[i][j] > max))
            {
                max = arr[i][j];
                i_max = i;
                j_max = j;
            }
        }
    }
    arr[i_max][j_max] = arr[0][0]; 
    arr[0][0] = max;
    for ( count = 1; count < n; ++count)
    {
        max = arr[0][1];
        for ( i = 0; i < n; ++i)
            for ( j = 0; j < n; ++j)
                if (((i != j) || ((i >= count) && (j >= count))) && (arr[i][j] > max))
                {
                    max = arr[i][j];
                    i_max = i;
                    j_max = j;
                }
        arr[i_max][j_max] = arr[count][count]; 
        arr[count][count] = max;
    }
    for ( i = 0; i < n; ++i)
    {
            for ( j = 0; j < n; ++j)
                cout << setw(5) << arr[i][j];
            cout << endl;
    }
    for ( i = 0; i < n; ++i)
    {
        int count = 0;
            for ( j = 0; j < n; ++j)
                if (arr[i][j] < 0)
                    ++count;
            if (count == n)
            {
                cout << "line #" << i + 1 << " has no positive numbers\n";
                system("pause");
                return 0;
            }
    }
    cout << "all lines have positive numbers\n";
    system("pause");
    return 0;
}

Но выдает одну ошибку:error C2065: 'system' : undeclared identifier

Добавлено через 55 секунд
main на void main менять не надо, а то тоже ошибку выдает
0
soon
2545 / 1310 / 177
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
15.06.2011, 09:03 #16
уберите system("pause")
0
nuri
0 / 0 / 0
Регистрация: 01.05.2011
Сообщений: 63
15.06.2011, 09:11  [ТС] #17
soon, спасибо огромное все работает!
У меня еще одна просьба не могли бы вы скинуть(если вам не сложно) результат программы, а то я не до конца понимаю, какие элементы матрицы я должна ввести и какой результат должен быть
0
soon
2545 / 1310 / 177
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
15.06.2011, 09:15 #18
к примеру вот такие:
1
Миниатюры
Переставляя элементы матрицы, добиться результата  
nuri
0 / 0 / 0
Регистрация: 01.05.2011
Сообщений: 63
15.06.2011, 09:20  [ТС] #19
soon, Еще раз огромное спасибо, все поняла!!!!
0
Петр91
5 / 5 / 1
Регистрация: 17.05.2010
Сообщений: 108
15.06.2011, 09:42 #20
Народ, не пойму в чем дело!!!?? Не хочет сравнивать элемент массива!
Код
int i=0;
double x,a=0;
double be[101][2];
for (i=0;i<101;i++)
{
	be[i][0]=a;
	a=a+0.1;
}
Создал двумерный массив, забил первую строку числами. Теперь проверяю кое что
cout<<be[10][0]; - Выводит единицу, обычную простую единицу.
Пишy:
if (be[10][0]==1)
cout<<"Winner!';
И не работает мать его! Как так??
0
15.06.2011, 09:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.06.2011, 09:42

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

Отсортировать массив по возрастанию, не переставляя элементы
Имеется массив А из n чисел. Вам нужно всего лишь отсортировать его(строго по...

Динамический массив. Характеристикой строки целочисленной матрицы назовем сумму ее положительных четных элементов. Переставляя строки заданной матрицы
#include &lt;iostream.h&gt; #include &lt;math.h&gt; #include &lt;string.h&gt; int...


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

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

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