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

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

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

Исправит ошибку, оператор new - C++

02.04.2014, 00:04. Просмотров 174. Ответов 2
Метки нет (Все метки)

Исправит ошибку, программа считает сумму 2 матриц/
Надо сделать через оператор new

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
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#define M 3
#define N 3
void outvec(int n, int * vec)
{
    for(int i = 0; i < n; i++)
        printf("%d ",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}
    };
    int C[M][N] = {0};
    float **r;
    int i,j;
    float *t=new float [9];
    for (i=0; i<3; i++)
    {
t[i]=new float [3];
    }
 
     for (i=0; i<3; i++)
         for (j=0; j<3; j++)
         *(*(t+i)+j)=A[][3];
 
r=new float *[3];
    for (i=0; i<3; i++)
    {
        r[i]=new float *[3];
 
    }
 
     for (i=0; i<3; i++)
         for (j=0; j<3; j++)
         r[i][j]=B[][3];
 
    printf("Matrix A:\n");
    for(i = 0; i < M; i++)
        outvec(N, *(*(t+i)));
 
    printf("Matrix B:\n");
    for(i = 0; i < M; i++)
        outvec(N, *(*(r+i)));
    //C = A + B
    for(i = 0; i < M; i++)
    for(j = 0; j < N; j++)
        C[i][j] = *(*(t+i)+j) + *(*(r+i)+j);
    printf("Matrix C = A + B:\n");
    for(i = 0; i < M; i++)
        outvec(N, C[i]);
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.04.2014, 00:04     Исправит ошибку, оператор new
Посмотрите здесь:

Оператор a % b C++
C++ Нужно исправит ошибку с массивом!
Оператор case. Помогите найти ошибку. C++
C++ Помогите исправить ошибку: string не найден оператор
C++ Исправить ошибку с выводом (оператор if else)
Немогу перегрузить оператор, выдает ошибку C++
C++ Тернарный оператор - найти ошибку в коде
C++ Оператор "+", который должен суммировать 2 массива 2-х классов, выдает ошибку доступа
C++ Нужен совет. Как правильно исправит код ?
C++ Оператор for: найти сумму n элементов ряда (выдает ошибку)
C++ Исправить ошибку: не найден оператор, принимающий левый операнд типа "const sf::Sprite" (SFML)
Исправить ошибку "не найден оператор, принимающий левый операнд типа 'node'" C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
xTIGRx
292 / 198 / 2
Регистрация: 23.10.2010
Сообщений: 1,174
Записей в блоге: 1
02.04.2014, 00:17     Исправит ошибку, оператор new #2
Непонял вашего вопроса, что именно нужно?

Добавлено через 10 минут
float *t=new float [9];
t[i]=new float [3];

что это значит, что вы хотите сделать этим?
alsav22
5413 / 4809 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
02.04.2014, 00:55     Исправит ошибку, оператор new #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
С float и int как-то определитесь:
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
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
 
#define M 3
#define N 3
 
template <class T> void outvec(int n, T* vec)
{
    for(int i = 0; i < n; i++)
        std::cout << 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}
    };
    
    int C[M][N] = {0};
    float **r;
    int i, j;
    float **t = new float* [3];
    for (i = 0; i < 3; i++)
    {
        t[i] = new float [3];
    }
 
    for (i=0; i<3; i++)
        for (j=0; j<3; j++)
            *(*(t+i)+j)=A[i][j];
 
    r = new float *[3];
    for (i=0; i<3; i++)
    {
        r[i]=new float [3];
    }
 
    for (i=0; i<3; i++)
        for (j=0; j<3; j++)
            r[i][j]=B[i][j];
 
    printf("Matrix A:\n");
    for(i = 0; i < M; i++)
        outvec(N, *(t + i));
 
    printf("Matrix B:\n");
    for(i = 0; i < M; i++)
        outvec(N, *(r + i));
    //C = A + B
    for(i = 0; i < M; i++)
        for(j = 0; j < N; j++)
            C[i][j] = *(*(t+i)+j) + *(*(r+i)+j);
    
    printf("Matrix C = A + B:\n");
    for(i = 0; i < M; i++)
        outvec(N, C[i]);
}
Миниатюры
Исправит ошибку, оператор new  
Yandex
Объявления
02.04.2014, 00:55     Исправит ошибку, оператор new
Ответ Создать тему
Опции темы

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