Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
 Аватар для ahamoth
0 / 0 / 1
Регистрация: 26.11.2010
Сообщений: 111

Динамический массив

14.05.2011, 13:45. Показов 2491. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, помогите пожалуйста решить следующую задачу с применением динамичкского массива:

Переставить столбцы вещественной квадратной матрицы так, чтобы элементы ее побочной диагонали образовали невозрастающую последовательность
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.05.2011, 13:45
Ответы с готовыми решениями:

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

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

Создать динамический класс Book, содержащий динамический массив Authors
Мне нужно написать программу,а я не знаю как ее написать. Знаю, тут люди за кого-то не делают, укажите хотя бы направление. вот сама...

20
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
14.05.2011, 19:26
На примере этой матрицы сможете показать что должно получится?
1 4
5 2
0
 Аватар для ahamoth
0 / 0 / 1
Регистрация: 26.11.2010
Сообщений: 111
14.05.2011, 22:37  [ТС]
1 2 3 4 5 6
4 5 6 7 8 9
1 2 3 8 5 7
2 2 3 6 5 9
1 7 8 9 0 2
0 2 3 8 8 8
например задано,
побочная диагональ этой матрицы : 1 5 3 6 0 8
после обработки(перестановки элементов в строках) масив должен принять след-й вид :
6 1 2 3 4 5
4 5 6 7 8 9
1 2 5 3 8 7
2 2 3 5 6 9
1 7 8 9 2 0
0 3 8 8 8 2
побочная диагональ : 6 5 5 5 2 2 (невозрастающая последовательность)
вобщем по диагонали элементы массива должны идти по убывающей
0
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
14.05.2011, 22:52
Цитата Сообщение от ahamoth Посмотреть сообщение
1 2 3 4 5 6
4 5 6 7 8 9
1 2 3 8 5 7
2 2 3 6 5 9
1 7 8 9 0 2
0 2 3 8 8 8
например задано,
побочная диагональ этой матрицы : 1 5 3 6 0 8
Это на самом деле главная диагональ.
http://ru.wikipedia.org/wiki/Диагональ раздел "Матрицы".

И еще раз возвращаюсь к вопросу во 2-м сообщении.
0
 Аватар для ahamoth
0 / 0 / 1
Регистрация: 26.11.2010
Сообщений: 111
14.05.2011, 23:06  [ТС]
значит я ошибся , значит теже самые операции нужно проделать с побочной диаганалью которой является :
0 7 3 8 8 6

должно получиться - 6 6 5 5 2 2
0
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
14.05.2011, 23:09
ahamoth,
На примере этой матрицы сможете показать что должно получится?
1 4
5 2
0
 Аватар для ahamoth
0 / 0 / 1
Регистрация: 26.11.2010
Сообщений: 111
14.05.2011, 23:13  [ТС]
valeriikozlov ,
1 4
2 5
0
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
14.05.2011, 23:17
Цитата Сообщение от ahamoth Посмотреть сообщение
1 4
2 5
Цитата Сообщение от ahamoth Посмотреть сообщение
Переставить столбцы вещественной квадратной матрицы
Я не вижу здесь перестановки столбцов матрицы. А вижу перестановку элементов в одной строке.
Если переставлять столбцы, то для матрицы, которую я привел решения не существует.
0
 Аватар для ahamoth
0 / 0 / 1
Регистрация: 26.11.2010
Сообщений: 111
14.05.2011, 23:21  [ТС]
точно , извиняюсь за свою невнимательность . да для подобной матрицы решения не существует.
тогда если нет решения вывести сообщение об ошибке. еще раз извиняюсь за свою невнимательность
0
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
14.05.2011, 23:29
Задача не такая и простая как кажется. Например если использовать следующий алгоритм:
- ищем в первой строке максимальный элемент. Столбец с этим элементом ставим самым правым.
- ищем во второй строке максимальный элемент (но меньше, максимального в предыдущей строке). Столбец с этим элементом ставим слева от самого правого.
и т.д.
Этот алгоритм будет иногда давать результат что решения нет (хотя на самом деле оно будет).
Пока вижу только полный перебор.
Сами что-нибудь уже сотворили?
0
 Аватар для ahamoth
0 / 0 / 1
Регистрация: 26.11.2010
Сообщений: 111
14.05.2011, 23:37  [ТС]
Честно сказать с динамическими массивами не разобрался еще . и не знаю как сделать чтобы столбцы менять местами
0
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
14.05.2011, 23:44
создание и заполнение значениями вещественной квадратной матрицы:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int N, i, j;
cout<<"N= ";
cin>>N;
double **mas=new double*[N];
for(i=0; i<N; i++)
{
    mas[i]=new double[N];
    for(j=0; j<N; j++)
    {
        cout<<"["<<i"]["<<j"]= ";
        cin>>mas[i][j];
    }
}
Обмен значений столбцов с индексом w и индеком q:
C++
1
2
3
4
for(int i=0; i<N; i++)
{
    double tmp=mas[i][q]; mas[i][q]=mas[i][w]; mas[i][w]=tmp;
}
1
 Аватар для ahamoth
0 / 0 / 1
Регистрация: 26.11.2010
Сообщений: 111
15.05.2011, 00:08  [ТС]
не совсем понятно как програмно реализовать чтобы производился поиск максимального элемента в строке и одновременно максимвльный элемент в i+1 строке ставился по диагонале а вместе с ним и переставлялся нужный столб
0
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
15.05.2011, 00:49
Цитата Сообщение от ahamoth Посмотреть сообщение
не совсем понятно как програмно реализовать чтобы производился поиск максимального элемента в строке и одновременно максимвльный элемент в i+1 строке ставился по диагонале а вместе с ним и переставлялся нужный столб
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
for(int i=0; i<N; i++)// перебираем строки
{
    int tmp=-1;
    if(i==0)
        tmp=0;
    for(j=0; j<N; j++)
    {
        if(mas[i][j]>mas[i][tmp])
        {
            if(i==0)
                tmp=j;
            else
                if(mas[i][j]<=mas[i-1][n-1-i])
                    tmp=j;
        }
    }
    //теперь в tmp номер столбца с максимальным элементом
    // меняем столбцы
    double temp;
    for(j=0; j<N; j++)
    {
        temp=mas[j][N-1-i];
        mas[j][N-1-i]=mas[j][tmp];
        mas[j][tmp]=temp;
    }
}
1
 Аватар для ahamoth
0 / 0 / 1
Регистрация: 26.11.2010
Сообщений: 111
15.05.2011, 17:01  [ТС]
valeriikozlov , программа при компиляции ошибку выдает
0
 Аватар для m1Rr0r
250 / 232 / 46
Регистрация: 05.02.2010
Сообщений: 3,288
15.05.2011, 17:15
Цитата Сообщение от ahamoth Посмотреть сообщение
valeriikozlov , программа при компиляции ошибку выдает
это не полный листинг.
объяви переменные напиши все это в main и будет работать
0
 Аватар для ahamoth
0 / 0 / 1
Регистрация: 26.11.2010
Сообщений: 111
15.05.2011, 17:23  [ТС]
да как бе описано все, я программу запускаю , заполняю в ней массив, а дальше программа вылетает
0
 Аватар для m1Rr0r
250 / 232 / 46
Регистрация: 05.02.2010
Сообщений: 3,288
15.05.2011, 17:28
Цитата Сообщение от ahamoth Посмотреть сообщение
да как бе описано все, я программу запускаю , заполняю в ней массив, а дальше программа вылетает
покажите полный код
0
 Аватар для ahamoth
0 / 0 / 1
Регистрация: 26.11.2010
Сообщений: 111
15.05.2011, 17:29  [ТС]
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
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
int main(int argc, char *argv[])
{int N, i, j,n;
cout<<"N= ";
cin>>N;
double **mas=new double*[N];
for(i=0; i<N; i++)
{
        mas[i]=new double[N];
        for(j=0; j<N; j++)
        {
                //cout<<"["<<i"]["<<j"]= ";
                cin>>mas[i][j];
        }
}
 
for(i=0; i<N; i++)
  {for(j=0; j<N; j++)
    cout<<mas[i][j];
    cout<<endl;
}
for(int i=0; i<N; i++)// ïåðåáèðàåì ñòðîêè
{
        int tmp;
        if(i==0)
                tmp=0;
        for(j=0; j<N; j++)
        {
                if(mas[i][j]>mas[i][tmp])
                {
                        if(i==0)
                                tmp=j;
                        else
                                if(mas[i][j]<=mas[i-1][n-1-i])
                                        tmp=j;
                }
        }
        //òåïåðü â tmp íîìåð ñòîëáöà ñ ìàêñèìàëüíûì ýëåìåíòîì
        // ìåíÿåì ñòîëáöû
        double temp;
        for(j=0; j<N; j++)
        {
                temp=mas[j][N+1+i];
                mas[j][N+1+i]=mas[j][tmp];
                mas[j][tmp]=temp;
        }
}
 
 
    system("PAUSE");
    return EXIT_SUCCESS;
}
0
 Аватар для m1Rr0r
250 / 232 / 46
Регистрация: 05.02.2010
Сообщений: 3,288
15.05.2011, 17:56
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
#include <cstdlib>
#include <iostream>
#include <iomanip>
using namespace std;
 
int main(int argc, char *argv[])
{
    int N, i, j,n = 0;
    cout<<"N= ";
    cin>>N;
    double **mas=new double*[N];
    for(i=0; i<N; i++)
    {
            mas[i]=new double[N];
            for(j=0; j<N; j++)
            {
                    //cout<<"["<<i"]["<<j"]= ";
                    cin>>mas[i][j];
            }
    }
     
    for(i=0; i<N; i++)
    {
        for(j=0; j<N; j++)
        {
            cout<<setw(5)<<mas[i][j];
        }
        cout<<endl;
    }
    cout<<endl;
    int tmp=-1;
    for(int i=0; i<N; i++)// перебираем строки
    {
            
            if(i==0)
                    tmp=0;
            for(j=0; j<N; j++)
            {
                    if(mas[i][j]>mas[i][tmp])
                    {
                            if(i==0)
                                    tmp=j;
                            else
                                    if(mas[i][j]<=mas[i-1][n-1-i])
                                            tmp=j;
                    }
            }
            //теперь в tmp номер столбца с максимальным элементом
            // меняем столбцы
            double temp;
            for(j=0; j<N; j++)
            {
                    temp=mas[j][N-1-i];
                    mas[j][N-1-i]=mas[j][tmp];
                    mas[j][tmp]=temp;
            }
    }
 
    for(i=0; i<N; i++)
    {
        for(j=0; j<N; j++)
        {
            cout<<setw(5)<<mas[i][j];
        }
        cout<<endl;
    }
    for(i=0; i<N; i++)
        delete []mas[i];
    delete []mas;
    system("PAUSE");
    return EXIT_SUCCESS;
}
может так....
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.05.2011, 17:56
Помогаю со студенческими работами здесь

Создать динамический класс Book, содержащей динамический массив Authors
всем привет. может кто-то набросать код для такой вот задачи: Создать динамический класс Book, содержащей динамический массив...

Скопировать динамический массив в другой массив только с положительными элементами из первого
Пользователь вводит размер массива и сам массив. Программа копирует в другой массив только положительные элементы из первого. Оба массива...

Можно ли в классе создавать массив переменной длинны. Например динамический массив?
Динамические массивы привлекают больше. :)

Динамический массив: целое число разложить на массив простых множителей
Доброго времени суток всем. Целое число необходимо разложить на массив простых множителей. Столкнулся с проблемой, мне нужно, чтобы...

Написать функцию принимающую массив и возвращающую указатель на динамический массив
Написать функцию принимающую массив и возвращающую указатель на динамический массив содержащий первые n нaибольших чисел. Как сделать...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru