С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

15.06.2012, 15:19. Просмотров 888. Ответов 13
Метки нет (Все метки)

не получается вставка. задание таково, что после столбцов, не содержащих отрицательные элементы нужно вставить 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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.06.2012, 15:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Динамическая матрица. вставка столбца (C++):

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

динамическая матрица в си++ - C++
Ребят, задача такова Дана квадратная матрица A(N,N). Получить из неё массив B, если N - четно, и B, если N - нечетно, элементами...

Динамическая матрица - C++
Здравствуйте, помогите найти ошибку в динамической матрице: у меня почему-то вызывается автоматически деструктор в программе, хотя мне это...

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

динамическая матрица - C++
в общем, надо сделать матрицу доступа, её размер в исходном состоянии 1х1, и потом увечивается, т.е. размер постоянно меняется, как...

Динамическая матрица - C++
помогите написать 2 проги 1) 2) по критериям: 1)Динамические массивы обязательны 2)работать через адресную арифметику, -...

13
UFO94
264 / 253 / 13
Регистрация: 04.04.2012
Сообщений: 546
15.06.2012, 15:36 #2
11 строка. j здесь у вас ни в каком цикле нету, т.е., оно как было инициализировано в начале (стр. 4), так и есть нулевое. Если вам нулевое и нужно, то и поставьте там 0 -- не насилуйте человеческий мозг)
Но это все лирика. Ошибка у вас в цикле в 6-й строке. Там i<n, а не i<m
1
kryko
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 16
15.06.2012, 16:10  [ТС] #3
UFO94, спасибо!) только теперь если первый столбец у меня не содержит отрицательных элементов, то он вставляет перед ним какие-то страшные числа ( -33686019). а все остальное работает правильно.
0
UFO94
264 / 253 / 13
Регистрация: 04.04.2012
Сообщений: 546
15.06.2012, 16:16 #4
Попробуйте напечатать элементы массива stroka. Можно еще в основной программе. Они адекватные или тоже страшные числа?
0
kryko
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 16
15.06.2012, 16:19  [ТС] #5
адекватные, такие какие и должны быть
0
UFO94
264 / 253 / 13
Регистрация: 04.04.2012
Сообщений: 546
15.06.2012, 16:21 #6
Если первый столбец не собержит отрицательных элементов должна выполнятся ветка if(Number==0)?
0
kryko
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 16
15.06.2012, 16:22  [ТС] #7
UFO94, да
0
UFO94
264 / 253 / 13
Регистрация: 04.04.2012
Сообщений: 546
15.06.2012, 16:30 #8
Опять похожая ошибка. У тебя строка в функции Zadanie22 обьявлена как массив длины m, а цикл в Вставке идет до n.
И просто совет: у тебя вставляется столбец, который хранится в массиве строка. Так ты просто сам можешь запутаться. Переменные должны называтся соответственно своему назначению.
0
kryko
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 16
15.06.2012, 16:36  [ТС] #9
я все это исправила, но выдает результат так же.
0
UFO94
264 / 253 / 13
Регистрация: 04.04.2012
Сообщений: 546
15.06.2012, 16:46 #10
Тогда киньте весь код еще раз. Хочу окинуть взором я его.
0
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;
}
0
UFO94
264 / 253 / 13
Регистрация: 04.04.2012
Сообщений: 546
15.06.2012, 17:17 #12
Перед q не нужен значок амперсанда. Передавать ссылку по ссылке -- совершенно лишняя вещь.

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

Задана матрица A(n,n). Первый элемент каждого четного столбца заменить суммой простых чисел этого столбца, пер - C++
Надо решить такую задачу,помогите,а то не шарю що делать: Задана матрица A(n,n). Первый элемент каждого четного столбца заменить суммой...

У меня динамическая матрица ? - C++
#include &lt;iostream&gt; using namespace std; int main() { int n,i,j; float a; cout &lt;&lt;&quot;vv n&quot;; cin &gt;&gt; n; for...

Двумерная динамическая матрица - C++
в общем помогите, надо написать двумерный массив(int) динамическим и пару функций к нему: 1. удаление столбца 2. удаление строки 3....

Динамическая матрица ООП - C++
Добрый день, проблема заключается в следующем. Никак не могу разобраться с заданием Задание: Для хранения объектов каждого...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.