Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.12.2014, 09:55   #1
FezDer
 
Регистрация: 31.01.2014
Сообщений: 8
По умолчанию С++ Матрицы.

Дана вещественная матрица A(n, m). Получить матрицу B(n, n)
транспонированием матрицы A.
FezDer вне форума Ответить с цитированием
Старый 01.12.2014, 11:09   #2
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,680
По умолчанию

Эммм.. Может покажите какие-нибудь наработки?
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 01.12.2014, 11:45   #3
FezDer
 
Регистрация: 31.01.2014
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Bugrimov Посмотреть сообщение
Эммм.. Может покажите какие-нибудь наработки?

1 double** transp(double** a,int n, int m)
2 {int i,j;
3 double **b;
4 b=new double *[n];
5 if(b==NULL){cout<< "Нет ОП \n";
6 exit(1);
8 }
9 for (i=0;i< n;i++)
10 {b[i]=new double[m];
11 if(b[i]==NULL){cout<< "Нет ОП \n";
12 exit(1);
13 }
14 }
15 for (i=0;i< n;i++)
16 for (j=0;j< m;j++)
17 b[j][i]=a[i][j];
18 return b;
19 }
FezDer вне форума Ответить с цитированием
Старый 01.12.2014, 21:25   #4
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,680
По умолчанию

вот например моя реализация Вашей задачи...
Код:
package ru.bugrimov;

public class Main {
    public static final int M = 3;
    public static final int N = 3;

    public static void main(String ... args) {
        double A[][] = new double[M][N];
        double [][] B = new double[N][N];

        for (int i = 0; i < A.length; i++) {
            for (int j = 0; j < A[i].length; j++) {
                A[i][j] = Math.random() * 10;
                B[j][i] = A[i][j];
            }
        }

        System.out.println("Исходная матрица: ");
        printArr(A);
        System.out.println("\nРезультирующая матрица: ");
        printArr(B);
    }

    public static void printArr(double array[][]) {
        for (double[] anArray : array) {
            for (double anAnArray : anArray) {
                System.out.printf("[%2.2f]", anAnArray);
            }
            System.out.println();
        }
    }
}
Снимок.PNG

Переделать на C++ будет проще простого
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 01.12.2014, 21:52   #5
FezDer
 
Регистрация: 31.01.2014
Сообщений: 8
По умолчанию помощь

Спасибо Большое ! Но мне пока трудно работать в среде С++, а особенно переделывать с Паскаля. И если Вам не трудно , помогите пожалуйста переделать на лад С++.
FezDer вне форума Ответить с цитированием
Старый 03.12.2014, 12:58   #6
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,680
По умолчанию

Код:
#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

void printArr(double **, int, int);

int main()
{
    const int M = 3;
    const int N = 3;

    double **A = new double *[M];
    for(int i = 0; i < M; i++) {
        A[i] = new double[N];
    }

    double **B = new double *[N];
    for(int i = 0; i < N; i++) {
        B[i] = new double[N];
    }
    srand(time(NULL));
    for(int i = 0; i < M; i++) {
        for(int j = 0; j < N; j++) {
            A[i][j] = 0.1 * (rand()%100);
            B[j][i] = A[i][j];
        }
    }

    cout << " Massiv A: " << endl;
    printArr(A, M, N);
    cout << "\n Massiv B: " << endl;
    printArr(B, N, N);

    for(int i = 0; i < M; i++) {
        delete[] A[i];
    }
    delete [] A;

    for(int i = 0; i < N; i++) {
        delete[] B[i];
    }
    delete [] B;
    return 0;
}

// Печать массива
void printArr(double **arr, int M, int N) {
    for(int i = 0; i < M; i++) {
        for(int j = 0; j < N; j++) {
            cout << " [" << arr[i][j] << "]";
        }
        cout << endl;
    }
}
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C++ и Pascal. Матрицы. Дана матрица размером n х m. Инвертировать каждую строку матрицы. Summerlight Помощь студентам 0 24.12.2013 00:19
Перекодировать консолевкий код под оконное приложение в Билдер 6. Решаю матрицы Матрицы g.e.s Общие вопросы C/C++ 0 18.11.2012 20:21
Первый элемент - размерность матрицы, остальные образуют строки этой матрицы Anastasiya_Pot Помощь студентам 2 10.04.2012 09:46
С++.три матрицы, упорядочить строки той матрицы у которой больше нулевых строк Ирина1992 Помощь студентам 12 20.11.2011 13:01
На главную диагональ матрицы поместить наибольшие элементы этой матрицы mivel Помощь студентам 2 23.12.2009 21:19