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

Исправте пожалуйста ошибку - C++

Восстановить пароль Регистрация
 
SY
0 / 0 / 0
Регистрация: 03.11.2010
Сообщений: 42
11.04.2011, 21:01     Исправте пожалуйста ошибку #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
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
// regre.cpp : main project file.
 
#include "stdafx.h"
#include "iostream"
#include "cmath"
#include <stdlib.h>
 
using namespace std;
 
int** form_matr(int n,int m);
void perestanovka( int n, int m, int **a, int **c,int k);
void vvod1(int n,int m,int  **a);
void vvod2(int n,int m,int  **a);
void vvod3(int n,int m,int **a);
void vivod(int n,int m,int  **a);
int mas[2][3]={(3,6,5),(-1,0,77)};
 
int main(array<System::String ^> ^args)
{
    short int m,n;
    cout << "n=";
    cin >> n;
    cout << "m=";
    cin >> m;
    int **a=new int*[n];
    for(int i=0;i<n;i++)
        a[i]=new int [m];
    cout<<"Viberit tip vvedenya massivu:"<<"\n"<<"1-Z klaviaturi"<<"\n"<<"2-Auto"<<"\n"<<"3-Const"<<"\n";
    int q;
    q=1;
    cin>>q;
    if (q==1) {
        vvod1(n,m,a);}
    else {
        if (q==2) {
            vvod2(n,m,a);}
        else {
            vvod3(n,m,a);
        };
    };
    vivod(n,m,a);
    cout<<"\n";
    short int k;
    cout << "k=";
    cin >> k;
    int **c=new int*[k];
    for(int i=0;i<k;i++)
        c[i]=new int [m];
    cout<<"Viberit tip vvedenya massivu:"<<"\n"<<"1-Z klaviaturi"<<"\n"<<"2-Auto"<<"\n"<<"3-Const"<<"\n";
    short int w;
    w=1;
    cin>>w;
    if (w==1) {
        vvod1(k,m,c);}
    else {
        if (w==2) {
            vvod2(k,m,c);}
        else {
            vvod3(k,m,c);
        };
    };
    vivod(k,m,c);
    cout<<"\n";
    a=new int*[n+k];
    for(int i=0;i<n;i++)
        a[i]=new int [m];
    system("pause");
    perestanovka(n,m,a,c,k);
    vivod(k,m,c);
    cout<<"\n";
   system("pause");
    return 0;
}
 
void vvod1(int n,int m,int  **a) {
    for(int i=0;i<n;i++) 
        for(int j=0;j<m;j++){
        cout<<"a["<<i<<"]=";
        cin>>a[i][j];
    }
}
void vvod2(int n,int m,int  **a) {
 
    for(int i=0;i<n;i++) 
        for(int j=0;j<m;j++) 
        a[i][j]=rand()%50;
}
void vvod3(int n,int m,int  **a) {
 
    for(int i=0;i<n;i++) 
        for(int j=0;j<m;j++) {
        a[i][j]=mas[i][j];
        }
}
void vivod(int n,int m,int **a) {
    for(int i=0; i<n; i++) {
        cout << endl;
        for(int j=0;j<m;j++) 
        cout << a[i][j] << " ";
    }
}
 
void perestanovka( int n, int m, int **a, int **c,int k) {
    for(int i=0;i<n;n--){
        for(int j=0;j<m;m--) {
            a[k+n][m]=a[n][m];
        }
    }
    for(int i=0;i<k;i++)
        for(int j=0;j<m;j++)
            a[i][j]=c[i][j];
}
Там где пишет ошибку:
C++
1
2
3
4
5
6
7
8
9
10
void perestanovka( int n, int m, int **a, int **c,int k) {
    for(int i=0;i<n;n--){
        for(int j=0;j<m;m--) {
            a[k+n][m]=a[n][m];
        }
    }
    for(int i=0;i<k;i++)
        for(int j=0;j<m;j++)
            a[i][j]=c[i][j];
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
instagib
122 / 85 / 3
Регистрация: 14.02.2011
Сообщений: 341
11.04.2011, 21:11     Исправте пожалуйста ошибку #2
Цитата Сообщение от SY Посмотреть сообщение
Нжно в двовымерный массив добавить в начало К строк.

Не по теме:

это что такое?

SY
0 / 0 / 0
Регистрация: 03.11.2010
Сообщений: 42
11.04.2011, 21:14  [ТС]     Исправте пожалуйста ошибку #3
Задание. Добавить К строк в начало матрицы.
vitaska
 Аватар для vitaska
83 / 83 / 2
Регистрация: 04.02.2010
Сообщений: 162
11.04.2011, 21:28     Исправте пожалуйста ошибку #4
1. чем заполнятся будут новые поля матрицы?
2. память выделенная по new дожна быть обязательно освобождена с помощью delete [], у вас этого нет, что не хорошо!
SY
0 / 0 / 0
Регистрация: 03.11.2010
Сообщений: 42
11.04.2011, 21:31  [ТС]     Исправте пожалуйста ошибку #5
1. Чем заполнять без разницы.
2.Я думал потом уже удаить, после окончание рооты.
vitaska
 Аватар для vitaska
83 / 83 / 2
Регистрация: 04.02.2010
Сообщений: 162
11.04.2011, 21:49     Исправте пожалуйста ошибку #6
Цитата Сообщение от SY Посмотреть сообщение
1. Чем заполнять без разницы.
2.Я думал потом уже удаить, после окончание рооты.
просто добавить не проблема, а вот чем заполнить это вопрос, если ни чем, то там будем мусор.
как вариант можно внести -1.

1. создаете временную матрицу, в которой строк на К больше чем в исходной
2. заполняйте первые К строк значениями, например, -1.
3. с к+1 строки вторым циклом заполняете остаток матрицы данными из исходной матрицы.
4. освобождаете память под исходную матрицу.
6. отдаете адрес временной матрицы исходной.

вроде ничего не напутал

2.Я думал потом уже удаить, после окончание рооты.
как раз попозже можно легко забыть освободить память, а это бывает чревато, сами понимаете чем
Yandex
Объявления
11.04.2011, 21:49     Исправте пожалуйста ошибку
Ответ Создать тему
Опции темы

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