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

Динамический двумерный массив в функцию. - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Внешняя функция с++ http://www.cyberforum.ru/cpp-beginners/thread72329.html
что означает термин "Внешняя функция"?
C++ Функции Написать функцию для вычисления суммы элементов квадратной матрицы, которые расположены ниже главной диагонали. Помогите пожалуйста!!! Очень сильно нужно. Если можно так чтоб поподробнее для новичка)) http://www.cyberforum.ru/cpp-beginners/thread72328.html
Найдите первые по порядку натуральные числа с различными цифрами C++
Люди кто сможет решить задачу..? Задача на C++ Найдите первые N(1<=N<=8877690) по порядку натуральные числа с различными цифрами. Первым таким числом считайте 1. Например : N=20 Ответ: 1,2,3,4,5,6,7,8,9,10,12,13,14,15,16,17,18,19,20.
C++ Удвоить гласные буквы
Сижу на экзамене,очень нужна помощь:" удвойте каждую гласную букву в слове". Очень нужна ваша помощь Добавлено через 17 минут Горю Добавлено через 21 минуту Вам же не трудно
C++ транслятор из паскаля в c http://www.cyberforum.ru/cpp-beginners/thread72306.html
Вобщем нужно написать программу, которая бы читала файл с кодом с паскалем и переводила его на с. В моем вариант программа должна переводить: 1. присваивание v:=1 2. case 3. массивы и простые переменные 4. real 5. procedure 6. комментарии Что уже как бы сделано(примерное):
C++ Две простые лабы по С++. Не знаю язык. 1. Получить одномерный массив, содержащий все нечетные элементы заданного массива без повторений. 2. Из исходной символьной матрицы A(nxn) получить матрицу B(mxm), в которой элемент b определяется как наибольшее значение из элементов исходной матрицы, лежащих выше и правее элемента a. подробнее

Показать сообщение отдельно
Sergey_O
 Аватар для Sergey_O
5 / 5 / 1
Регистрация: 09.12.2009
Сообщений: 65
10.12.2009, 10:14  [ТС]     Динамический двумерный массив в функцию.
Цитата Сообщение от M128K145 Посмотреть сообщение
основная ошибка была здесь
C++
1
int *massiv = new int [stolb];
сравни с правильным вариантом
C++
1
massiv[i] = new int [stolb];
этот момент я исправил, понял что сглупил))))

но вот щас так же вылетает на функции deletenaim
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
#include <stdio.h>
#include <iostream>
#include <string.h>
#include <time.h>
using namespace std;
 
void razmerimassiva(int *strok, int *stolb)//Функция для запроса размерности массива
{
    cout << "Введите количество строк и столбцов" << endl;
    cin >> *strok >> *stolb;
}
void random(int** massiv,int strok,int stolb)
{
        int i, j;
        for(i = 0; i < strok; ++i)
                for(j = 0; j < stolb; ++j)
                        massiv[i][j] = rand()%100;
}
void vivodmassiva(int** massiv,int strok, int stolb)
{
        
    for(int i=0;i<strok;i++)
    {
        for(int m=0;m<stolb;m++)
        {
            cout << massiv[i][m] << "  " ;
        }
        cout << "\n";
    }
}
void poisknaim(int** massiv,int strok, int stolb,int *strok2, int *stolb2,int *pstrok, int *pstolb)//Поиск наим элемента и вывод его, позиция.
{   
    int k=0;
for(int i=0;i<strok;i++)
{
for(int m=0;m<stolb;m++)
        {
            if (massiv[i][m]<k) 
            {
                k=massiv[i][m];
                *pstrok=i;
                *pstolb=m;
            }
        }
    }
        cout << "" << endl;
        cout << "Naim element  " << k << endl;
        cout << "" << endl;
        *strok2=strok-1;
        *stolb2=stolb-1;
        cout << "Razmer novogo massiva  " << *strok2 << "  " << *stolb2 << endl;
}
void deletenaim(int** massiv,int** massiv2,int pstrok,int pstolb, int strok, int stolb)// Удаление наим элемента.
{
    int i2=0,m2=0;
    for(int i=0;i<strok;++i)
{
    if (i!=pstrok)
    {
        for(int m=0,m2=0;m<stolb;++m)
        {
            if(m!=pstolb)
        {massiv2[i2][m2]=massiv[i][m];
            m2++;
            }
        }
i2++;
    }
    
}
}
void main()
{
 
setlocale( LC_ALL,"Russian" );
int strok, stolb,strok2=0,stolb2=0,pstrok,pstolb,i;
razmerimassiva(&strok,&stolb);
 
        int **massiv=new int *[strok];
        for(i = 0; i < strok; ++i)
                massiv[i]=new int [stolb];
 
random(massiv,strok,stolb);
vivodmassiva(massiv,strok,stolb);
 int **massiv2=new int *[strok2];
        for(i = 0; i < strok2; ++i)
                massiv2[i]=new int [stolb2];
 
    
poisknaim(massiv,strok,stolb,&strok2,&stolb2,&pstrok,&pstolb);
deletenaim(massiv,massiv2,pstrok,pstolb,strok2,stolb2);
vivodmassiva(massiv2,strok2,stolb2);
 
for(int i=0;i<strok;i++)
delete massiv[i];
delete [] massiv;
 
}
Суть программы такова:
1. спрашиваю размеры
2. создаю
3. задаю рандомом.
4. вывожу на экран
5. ищу наим элемент
6. создаю новый дин.массив(исправил там код)
7. копирую старый массив в новый кроме столбца и строки с наим элементов, используя координаты наим числа
8. вывожу на экран
9. удаляю первый дин массив

Ошибка на {massiv2[i2][m2]=massiv[i][m]; 63 строка
И опять не понимаю, где я ошибся.

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