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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.09.2013, 13:00   #1
alucard115
Пользователь
 
Аватар для alucard115
 
Регистрация: 25.12.2012
Сообщений: 88
По умолчанию Двумерные массивы. Матрицы C++

Здравствуйте. Вот такое задание "Найти сумму двух матриц". Я так понимаю, что матрица это и есть двумерный массив?

Можете помочь подправить код под С++ ?

Код:
#include <stdio.h>
#include <stdlib.h>
#define mA 3
#define nA 3
 
//Для сложения и вычитания матриц нужно
//чтобы число строк и столбцов 1-й матрицы
//совпадало с числом строк и столбцов второй
 
//Вывод на экран вектора значений(строки матрицы)
void outvec(int n, int * vec)
{
    for(int i = 0; i < n; i++)
        printf("%02d ",vec[i]);
    printf("\n");
}
 
int main()
{
    //Явное задание єлементов матриц
    int A[][3] = 
    {
        {1, 2, 3},
        {4, 5, 6},
        {7, 8, 9}
    };
    int B[][3] = 
    {
        {-1,0, 4},
        {0, 3, 0},
        {2, 0, 1}
    };
    //Обнулил матрицу С размером mA х nA
    int C[mA][nA] = {0};
    int i,j;
    printf("Matrix A:\n");
    for(i = 0; i < mA; i++)
        outvec(nA, A[i]);
    printf("Matrix B:\n");
    for(i = 0; i < mA; i++)
        outvec(nA, B[i]);
    //C = A + B
    for(i = 0; i < mA; i++)
    for(j = 0; j < nA; j++)
       C[i][j] = A[i][j] + B[i][j];
    printf("Matrix C = A + B:\n");
    for(i = 0; i < mA; i++)
        outvec(nA, C[i]);
    //Теперь работаем с матрицами и числом
    for(i = 0; i < mA; i++)
    for(j = 0; j < nA; j++)
    {
        A[i][j] = A[i][j] + 5;
        B[i][j] = B[i][j] / 2;
    }
    printf("Matrix A + 5:\n");
    for(i = 0; i < mA; i++)
        outvec(nA, A[i]);
    printf("Matrix B / 2:\n");
    for(i = 0; i < mA; i++)
        outvec(nA, B[i]);
    system("pause");//Стоп-точка вконце программы
    return 0;
}
alucard115 вне форума Ответить с цитированием
Старый 05.09.2013, 13:41   #2
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,680
По умолчанию

Для начала
Код:
#include <iostream>
#include <cstdlib>
using namespace std;

const int mA = 3;
const int nA = 3;
А дальше printf() меняйте на cout << .... Думаю C++ компилятору понравится.. Хотя может и нет
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!

Последний раз редактировалось Bugrimov; 05.09.2013 в 13:47.
Bugrimov вне форума Ответить с цитированием
Старый 05.09.2013, 13:50   #3
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,680
По умолчанию

Код:
#include <iostream>
#include <cstdlib>
using namespace std;

const int mA = 3;
const int nA = 3;
 
//Для сложения и вычитания матриц нужно
//чтобы число строк и столбцов 1-й матрицы
//совпадало с числом строк и столбцов второй
 
//Вывод на экран вектора значений(строки матрицы)
void outvec(int n, int * vec)
{
    for(int i = 0; i < n; i++)
        cout << vec[i];
    cout << endl;;
}
 
int main()
{
    //Явное задание єлементов матриц
    int A[][3] = 
    {
        {1, 2, 3},
        {4, 5, 6},
        {7, 8, 9}
    };
    int B[][3] = 
    {
        {-1,0, 4},
        {0, 3, 0},
        {2, 0, 1}
    };
    //Обнулил матрицу С размером mA х nA
    int C[mA][nA] = {0};
    int i,j;
    cout << "Matrix A:\n";
    for(i = 0; i < mA; i++)
        outvec(nA, A[i]);
    cout << "Matrix B:\n";
    for(i = 0; i < mA; i++)
        outvec(nA, B[i]);
    //C = A + B
    for(i = 0; i < mA; i++)
    for(j = 0; j < nA; j++)
       C[i][j] = A[i][j] + B[i][j];
    cout << "Matrix C = A + B:\n";
    for(i = 0; i < mA; i++)
        outvec(nA, C[i]);
    //Теперь работаем с матрицами и числом
    for(i = 0; i < mA; i++)
    for(j = 0; j < nA; j++)
    {
        A[i][j] = A[i][j] + 5;
        B[i][j] = B[i][j] / 2;
    }
    cout << "Matrix A + 5:\n";
    for(i = 0; i < mA; i++)
        outvec(nA, A[i]);
    cout << "Matrix B / 2:\n";
    for(i = 0; i < mA; i++)
        outvec(nA, B[i]);
    system("pause");//Стоп-точка вконце программы
    return 0;
}
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 05.09.2013, 14:00   #4
alucard115
Пользователь
 
Аватар для alucard115
 
Регистрация: 25.12.2012
Сообщений: 88
По умолчанию

Спасибо большое! =)
alucard115 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двумерные массивы(матрицы) Alekzinder Паскаль, Turbo Pascal, PascalABC.NET 5 28.03.2013 17:53
Двумерные массивы (матрицы) Zevsnet Помощь студентам 0 01.12.2010 09:23
Матрицы (Двумерные массивы) Mizantrop Помощь студентам 1 21.03.2010 17:27
Двумерные массивы-матрицы.Задачка на Си STS_1991 Помощь студентам 1 02.03.2009 13:54
двумерные массивы(матрицы) dunvegan Помощь студентам 4 05.11.2007 14:32