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

Динамическая матрица. вставка столбца - C++

Восстановить пароль Регистрация
 
kryko
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 16
15.06.2012, 15:19     Динамическая матрица. вставка столбца #1
не получается вставка. задание таково, что после столбцов, не содержащих отрицательные элементы нужно вставить 2 столбец. вылетаю на строке t[i][j]=stroka[i] с ошибкой Access violation writing location 0xcdcdcdcd.
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
void Vstavka_stolbca(int **&q,int *stroka,int n,int m,int Number)
{
    int i,j=0;
    int **t=new int *[n];
    for(i=0;i<m;i++) t[i]=new int [m];
 
    if (Number==0)
    {
    for(i=0;i<n;i++)
    {t[i][j]=stroka[i];}
    }
    else
    {
    for(j=0;j<Number;j++)
    {
        for(i=0;i<n;i++)
        {
            t[i][j]=q[i][j];
        } 
    }
    
    for(i=0;i<n;i++)
    {
        t[i][Number]=stroka[i];
    }
    j=Number+1;
    }
    for (j;j<m;j++)
    {
        for(i=0;i<n;i++)
        {
            t[i][j]=q[i][j-1];
        } 
    }
    for (i=0;i<n;i++)delete[]q[i];
    delete [] q;
    q=t;
}
 
int Zadanie22(int **&q,int n,int &m)
{
    int i,j,u=0;bool flag;
    int *stroka=new int[m];
    for (i=0;i<n;i++)
    {stroka[i]=q[i][2];}
    for(j=0;j<m ;j++)
    {
        flag=true;
        for(i=0;i<n  ;i++)
        {
        if(q[i][j]<0) 
        { flag=false; break;}
         
        }
        if (flag)
            {
                m++;
                Vstavka_stolbca(q,stroka,n,m,j);
                j++;u++;
            }
    }
    delete  [] stroka;
    return u;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.06.2012, 15:19     Динамическая матрица. вставка столбца
Посмотрите здесь:

динамическая матрица в си++ C++
Динамическая матрица C++
C++ Динамическая матрица
динамическая матрица C++
C++ У меня динамическая матрица ?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
UFO94
 Аватар для UFO94
263 / 252 / 13
Регистрация: 04.04.2012
Сообщений: 546
15.06.2012, 15:36     Динамическая матрица. вставка столбца #2
11 строка. j здесь у вас ни в каком цикле нету, т.е., оно как было инициализировано в начале (стр. 4), так и есть нулевое. Если вам нулевое и нужно, то и поставьте там 0 -- не насилуйте человеческий мозг)
Но это все лирика. Ошибка у вас в цикле в 6-й строке. Там i<n, а не i<m
kryko
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 16
15.06.2012, 16:10  [ТС]     Динамическая матрица. вставка столбца #3
UFO94, спасибо!) только теперь если первый столбец у меня не содержит отрицательных элементов, то он вставляет перед ним какие-то страшные числа ( -33686019). а все остальное работает правильно.
UFO94
 Аватар для UFO94
263 / 252 / 13
Регистрация: 04.04.2012
Сообщений: 546
15.06.2012, 16:16     Динамическая матрица. вставка столбца #4
Попробуйте напечатать элементы массива stroka. Можно еще в основной программе. Они адекватные или тоже страшные числа?
kryko
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 16
15.06.2012, 16:19  [ТС]     Динамическая матрица. вставка столбца #5
адекватные, такие какие и должны быть
UFO94
 Аватар для UFO94
263 / 252 / 13
Регистрация: 04.04.2012
Сообщений: 546
15.06.2012, 16:21     Динамическая матрица. вставка столбца #6
Если первый столбец не собержит отрицательных элементов должна выполнятся ветка if(Number==0)?
kryko
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 16
15.06.2012, 16:22  [ТС]     Динамическая матрица. вставка столбца #7
UFO94, да
UFO94
 Аватар для UFO94
263 / 252 / 13
Регистрация: 04.04.2012
Сообщений: 546
15.06.2012, 16:30     Динамическая матрица. вставка столбца #8
Опять похожая ошибка. У тебя строка в функции Zadanie22 обьявлена как массив длины m, а цикл в Вставке идет до n.
И просто совет: у тебя вставляется столбец, который хранится в массиве строка. Так ты просто сам можешь запутаться. Переменные должны называтся соответственно своему назначению.
kryko
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 16
15.06.2012, 16:36  [ТС]     Динамическая матрица. вставка столбца #9
я все это исправила, но выдает результат так же.
UFO94
 Аватар для UFO94
263 / 252 / 13
Регистрация: 04.04.2012
Сообщений: 546
15.06.2012, 16:46     Динамическая матрица. вставка столбца #10
Тогда киньте весь код еще раз. Хочу окинуть взором я его.
kryko
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 16
15.06.2012, 16:48  [ТС]     Динамическая матрица. вставка столбца #11
если нужно, кину с main
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
void Vstavka_stolbca(int **&q,int *stroka,int n,int m,int Number)
{
    int i,j=0;
    int **t=new int *[n];
    for(i=0;i<n;i++) t[i]=new int [m];
 
    if (Number==0)
    {
    for(i=0;i<n;i++)
    {t[i][0]=stroka[i];}
    }
    else
    {
    for(j=0;j<Number;j++)
    {
        for(i=0;i<n;i++)
        {
            t[i][j]=q[i][j];
        } 
    }
 
    for(i=0;i<n;i++)
    {
        t[i][Number]=stroka[i];
    }
    j=Number+1;
    }
    for (j;j<m;j++)
    {
    for(i=0;i<n;i++)
    {
            t[i][j]=q[i][j-1];
        } 
    }
    for (i=0;i<n;i++)delete[]q[i];
    delete [] q;
    q=t;
}
 
int Zadanie22(int **&q,int n,int &m)
{
    void Vstavka_stolbca(int **&q,int *stroka,int n,int m,int Number);
    int i,j,u=0;bool flag;
    int *stroka=new int[n];
    for (i=0;i<n;i++)
    {stroka[i]=q[i][1];}
    cout<<endl;
    cout<<"Вставляемый столбец: ";
    for (i=0;i<n;i++)
    {
         cout<<stroka[i]<<"  ";
    } cout<<endl;
    for(j=0;j<m ;j++)
    {
        flag=true;
        for(i=0;i<n  ;i++)
        {
        if(q[i][j]<0) 
        { flag=false; break;}
         
        }
        if (flag)
            {
                m++;
                Vstavka_stolbca(q,stroka,n,m,j);
                j++;u++;
            }
    }
    delete  [] stroka;
    return u;
}
UFO94
 Аватар для UFO94
263 / 252 / 13
Регистрация: 04.04.2012
Сообщений: 546
15.06.2012, 17:17     Динамическая матрица. вставка столбца #12
Перед q не нужен значок амперсанда. Передавать ссылку по ссылке -- совершенно лишняя вещь.

Странно... Попробуйте сразу после 10-й строки напечатать stroka[i] и t[i][0]. Обе группы чисел -- адекватные и равные между собой?
kryko
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 16
15.06.2012, 17:32  [ТС]     Динамическая матрица. вставка столбца #13
равные..
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.06.2012, 19:32     Динамическая матрица. вставка столбца
Еще ссылки по теме:

C++ Динамическая память.Матрица. После каждого столбца, все элементы которого положи-тельные, добавить новый столбец и заполнить его нулями
Динамическая матрица C++

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

Или воспользуйтесь поиском по форуму:
UFO94
 Аватар для UFO94
263 / 252 / 13
Регистрация: 04.04.2012
Сообщений: 546
15.06.2012, 19:32     Динамическая матрица. вставка столбца #14
Стоп. Т.е., у нас добавленый столбец -- нормальный? Так а где у нас появляются эти ненормальные числа?
Yandex
Объявления
15.06.2012, 19:32     Динамическая матрица. вставка столбца
Ответ Создать тему
Опции темы

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