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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 32, средняя оценка - 4.91
nuri
0 / 0 / 0
Регистрация: 01.05.2011
Сообщений: 63
#1

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

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

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



P.S: Напишите, если не сложно код данной программы, буду очень признательна) А то если честно я и задание плохо понимаю
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.06.2011, 02:40     Переставляя элементы матрицы, добиться результата
Посмотрите здесь:

Переставляя строки матрицы добиться результата - C++
С помощью перестановки элементов матрицы добиться того, что бы ее максимальный элемент находился на позиции в позиции (0,n), следующий по...

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

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

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

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

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

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
soon
2539 / 1304 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
15.06.2011, 05:08     Переставляя элементы матрицы, добиться результата #2
смотри здесь
nuri
0 / 0 / 0
Регистрация: 01.05.2011
Сообщений: 63
15.06.2011, 05:37  [ТС]     Переставляя элементы матрицы, добиться результата #3
soon, спасибо большое))) только не подскажешь, что там за 2 ошибки при запуске выдает?
soon
2539 / 1304 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
15.06.2011, 05:48     Переставляя элементы матрицы, добиться результата #4
напиши, какие ошибки и строки
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)
soon
2539 / 1304 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
15.06.2011, 06:06     Переставляя элементы матрицы, добиться результата #6
объявите i и j в самом начале, затем, во всех последующих циклах уберите перед i и j int
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, Вы извините , если я вас сильно загрузила, просто я в этом плохо разбираюсь(а если точнее, то почти совсем не разбираюсь), а задание сдать надо.
soon
2539 / 1304 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
15.06.2011, 07:54     Переставляя элементы матрицы, добиться результата #8
Цитата Сообщение от nuri Посмотреть сообщение
если я вас сильно загрузила
нет, что вы
напишите, какой у вас компилятор, мой код, который вы исправили, и любой свой работающий код.
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 минуту
а какой любой работающий код? по другому заданию?
soon
2539 / 1304 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
15.06.2011, 08:22     Переставляя элементы матрицы, добиться результата #10
а где во второй задаче заголовочный файл iostream?
он вообще подключен?
nuri
0 / 0 / 0
Регистрация: 01.05.2011
Сообщений: 63
15.06.2011, 08:30  [ТС]     Переставляя элементы матрицы, добиться результата #11
soon, да подключен просто я плохо скопировала.
soon
2539 / 1304 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
15.06.2011, 08:33     Переставляя элементы матрицы, добиться результата #12
скиньте любой работающий у вас код.
ps/ Странно... У меня все вводит и выводит...
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 секунды
может вы мне еще раз скинете тот код который вы вводите и я его попробую снова запустить
soon
2539 / 1304 / 81
Регистрация: 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()
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 менять не надо, а то тоже ошибку выдает
soon
2539 / 1304 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
15.06.2011, 09:03     Переставляя элементы матрицы, добиться результата #16
уберите system("pause")
nuri
0 / 0 / 0
Регистрация: 01.05.2011
Сообщений: 63
15.06.2011, 09:11  [ТС]     Переставляя элементы матрицы, добиться результата #17
soon, спасибо огромное все работает!
У меня еще одна просьба не могли бы вы скинуть(если вам не сложно) результат программы, а то я не до конца понимаю, какие элементы матрицы я должна ввести и какой результат должен быть
soon
2539 / 1304 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
15.06.2011, 09:15     Переставляя элементы матрицы, добиться результата #18
к примеру вот такие:
Миниатюры
Переставляя элементы матрицы, добиться результата  
nuri
0 / 0 / 0
Регистрация: 01.05.2011
Сообщений: 63
15.06.2011, 09:20  [ТС]     Переставляя элементы матрицы, добиться результата #19
soon, Еще раз огромное спасибо, все поняла!!!!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.06.2011, 09:42     Переставляя элементы матрицы, добиться результата
Еще ссылки по теме:

Переставляя столбцы матрицы, расположить их по росту характеристик - C++
Сделал программу по заданию&quot;характеристикой столбца целочисленной матрицы назовем сумму модулей его отрицательных нечетных элементов....

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

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

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

Переставляя столбцы заданной матрицы, расположить их в соответствии с ростом характеристик - C++
Задание такое: Переставляя столбцы заданной матрицы, расположить их в соответствии с ростом характеристик (характеристикой столбца...


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

Или воспользуйтесь поиском по форуму:
Петр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!';
И не работает мать его! Как так??
Yandex
Объявления
15.06.2011, 09:42     Переставляя элементы матрицы, добиться результата
Ответ Создать тему
Опции темы

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