Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Alias332
0 / 0 / 0
Регистрация: 16.10.2011
Сообщений: 22
#1

Переписать массив элементы матрицы - C++

30.10.2011, 18:39. Просмотров 932. Ответов 10
Метки нет (Все метки)

Задана матрица A размерности n*m. Переписать в массив B элементы aii одной
главной диагонали матрицы A, в массив C - элементы ai,n-i+1 другой главной
диагонали матрицы A. Полученные массивы вывести на экран в виде таблицы
из трех колонок.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.10.2011, 18:39
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Переписать массив элементы матрицы (C++):

Элементы матрицы переписать построчно в одномерный массив - C++
Задача - элементы заданой матрицы A(N,N) переписовать построчно в одномерный массив до тех пор, пока не встретится нулевой элемент.(в С++)

Переписать в массив элементы первого столбца матрицы большие 10 - C++
Переписать в массив элементы первого столбца матрицы большие 10 нужно через указатели сделать #include <iostream> #include <iomanip> ...

Переписать поочередно элементы главной и побочной диагоналей матрицы в массив - C++
вот сама задача: Переписать поочередно элементы главной и побочной диагоналей матрицы Аi,j в массив В

Задана матрица Т(N,M). Сформировать массив R(N,M-2),куда переписать все элементы матрицы T - C++
Задана матрица Т(N,M). Сформировать массив R(N,M-2),куда переписать все элементы матрицы T,за исключением максимального и минимального...

Переписать первые элементы каждой строки матрицы D(3,3), которые больше 10, в массив В - C++
Переписать первые элементы каждой строки матрицы D(3,3), которые больше 10, в массив В. Выполнить с использованием указателей и без. ...

Переписать все элементы з матрицы С в одномерный массив F, отсортировать его по возрастанию - C++
В мастрици С количество столбик в каждой строке случайным натуральным числом с интервала (a; b) но общее количество элементов ...

10
tyrnikMan
6 / 6 / 0
Регистрация: 30.10.2011
Сообщений: 7
31.10.2011, 00:32 #2
Обязательно помогу написать программу!! Но пока мне не до конца понятно задание!!!
Не понятно какие элементы нужно скопировать в массив С, возможно в формуле ошибка!!!
Не понятно как вывести массивы в виде трёх столбцов!! Ведь всего два массива, где третий??
1
amor1k
Студент
148 / 148 / 24
Регистрация: 18.01.2011
Сообщений: 469
31.10.2011, 00:36 #3
Цитата Сообщение от tyrnikMan Посмотреть сообщение
Не понятно какие элементы нужно скопировать в массив С, возможно в формуле ошибка!!!
1 0 0
0 1 0
0 0 1
единицы это главная диагональ
а здесь это "другая главная диагональ"
0 0 1
0 1 0
1 0 0


Цитата Сообщение от tyrnikMan Посмотреть сообщение
Не понятно как вывести массивы в виде трёх столбцов!! Ведь всего два массива, где третий??
три массива A B C...
Неужели тяжело подумать
1
tyrnikMan
6 / 6 / 0
Регистрация: 30.10.2011
Сообщений: 7
31.10.2011, 00:44 #4
Подумать не трудно!!! Массива то три, но первый массив - двумерный и там не известно сколько может быть столбцов и строк! Так что три столбца никак в конце не получится вывести, как не крути! А вот два, вполне B и С.
1
amor1k
Студент
148 / 148 / 24
Регистрация: 18.01.2011
Сообщений: 469
31.10.2011, 00:59 #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
#include <iostream>
using namespace std;
 
int main()
{
    setlocale(LC_ALL,"rus");
    int a[20][20];
    int m,n;
    int b[20], c[20];
    cout << "Введите кол-во строк: ";
    cin >> m;
    cout << "Введите кол-во столбцов: ";
    cin >> n;
    for(int i = 0; i < m; i++)
    {
        for(int j = 0; j < n; j++)
        {
            cout << "a[" << i << "][" << j << "] = ";
            cin >> a[i][j];
        }
    }
    for(int i = 0; i < m; i++)
    {
        b[i] = a[i][i];
        c[i] = a[i][n - i - 1];
    }
    cout << "a  b   c" << endl;
    for(int i = 0; i < m; i++)
    {
        for(int j = 0; j < n; j++)
        {
            cout << a[i][j] << " ";
        }
        cout << "   " << b[i] << "  " << c[i] << endl;
    }
    system("pause");    
}
Тестировал на квадратной матрице 3х3, натуральными числами.
Добавлено через 59 секунд
могут быть неровности, так как форум по своему форматирует табуляцию и пробелы
1
tyrnikMan
6 / 6 / 0
Регистрация: 30.10.2011
Сообщений: 7
31.10.2011, 03:51 #6
Выше предложенный алгоритм решения задачи правильный, но имеет некоторые недочёты. Например, если матрица будет не квадратной, то алгоритм повиснет, массивы объявлены статически а не динамически, что в некотором роде ограничивает функционал программы. Вот проверенный исходник программы - 100% рабочий, соответствует хорошему тону программирования!!!
1
Bers
Заблокирован
31.10.2011, 03:54 #7
Цитата Сообщение от tyrnikMan Посмотреть сообщение
соответствует хорошему тону программирования!!!
Суржик - это сегодня хорошим тоном программирования считается?
1
tyrnikMan
6 / 6 / 0
Регистрация: 30.10.2011
Сообщений: 7
31.10.2011, 04:02 #8
Что Вы имеете ввиду??
1
Bers
Заблокирован
31.10.2011, 04:29 #9
я имею ввиду смешанный стиль программирования. Процедурный подход языка си пополам с объектами с++

Матрица там представлена в виде самостоятельного набора данных и кучки функций (процедурный подход).
Вместе с тем, юзаются полноценные с++ объекты ( std::cout ), и операции ( delete )

Хотя... о каком процедурном подходе идёт речь, если там все наляпано хардкорно в одной функции main()

А если вдруг не нужно будит заполнять матрицу случайными числами, что будите делать? Затирать ставшие ненужными, но полностью рабочие строчки кода?
А если друг появятся дополнительные задачи, которые нужно решить с помощью матрицы? Как будите выдирать свою матрицу из всей этой общей кашици?

Обратите внимания, сколько студентов приходят ежедневно на этот форум с темой про матрицы.

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

А тот код, который лежит по вашей ссылочке может быть и не плох исключительно в качестве учебного пособия. Но на "хороший тон" не катит ни для си стиля, ни для с++ стиля.
Просто готовое решения для одного конкретного задания преподавателя.
1
amor1k
Студент
148 / 148 / 24
Регистрация: 18.01.2011
Сообщений: 469
31.10.2011, 10:33 #10
Вы конечно правы, но зачем ему такое, он попросил выполнить задачку, написать простую программу, вот я и написал...
1
Bers
Заблокирован
31.10.2011, 14:31 #11
Цитата Сообщение от amor1k Посмотреть сообщение
Вы конечно правы, но зачем ему такое, он попросил выполнить задачку, написать простую программу, вот я и написал...
Ну это самое главное) И в принципе достаточно для вузовской программы обучения да.
Но это ещё не предел)

Можно написать собственный класс строк. Только нафег надо, в с++ итак есть замечательные стринги. А вот нормальной матрицы в с++ нету.

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

Подумайте об этом)
1
31.10.2011, 14:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.10.2011, 14:31
Привет! Вот еще темы с ответами:

Переписать первые элементы каждой строки матрицы D(3,3), которые больше 10, в массив В. - C++
Пожалуйста помогите написать прогу на C Переписать первые элементы каждой строки матрицы D(3,3), которые больше 10, в массив В.

Все элементы заданной матрицы, попадающие в интервал [2, 9] переписать в новый массив. Подсчитать количество элементов в новом массиве - C++
Дана матрица G . Все элементы, попадающие в интервал переписать в новый массив. Подсчитать количество элементов в новом массиве.

Заданные две квадратные матрицы одинакового размера - А и В. Переписать в одномерный массив R те элементы матриц А и В, имеющие одинаковые индексы и - C++
Заданные две квадратные матрицы одинакового размера - А и В. Переписать в одномерный массив R те элементы матриц А и В, имеющие одинаковые...

Одномерный массив (элементы с четными индексами переписать в массив z.в массиве z поменять местами максимальный и минимальный элементы) - C++
задан массив x(n).элементы с четными индексами переписать в массив z.в массиве z поменять местами максимальный и минимальный...


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

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

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