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

Проблему с двумерным динамическим массивов - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Одновременная реализация константного и неконстантного оператора [] в классе string http://www.cyberforum.ru/cpp-beginners/thread50644.html
Вобщем, проблема в следующем: нужно реализовать обращение по индексу в классе string двумя вариантами оператора : константный (для чтения) и возвращающий char& для изменения. Со вторым оператором я вроде разобрался. А вот как первый реализовать, и ,чтобы, когда надо было прочитать, включался первый оператор?. Я смог добиться написания обоих - т.е. компилятор не ругается, что у двух методов...
C++ Как скомпилировать исходник Gromacs на Windows Приветствую участников форума! :) Я здесь новичек, поэтому прошу строго не судить. Суть моей проблемы заключается в том что я не знаю с чего начать компиляцию исходника программы Gromacs (на Windows XP 32-bit). Просьба также подсказать каким компилятором лучше пользоваться для начинающего... (В наличие есть Dev-C++, Microsoft Visual C++ 6.0). Заранее благодарю за ответы... http://www.cyberforum.ru/cpp-beginners/thread50640.html
C++ Помогите написать класс
Прива всем. Помогите написать лабу!!!! Тема:Классы Задание: Создать класс который содержит два поля типа int и два поля действительного типа. Описать инткрфейс который должен содержать: 1) Конструктор; 2) Функцию для получения значений всех полей. 3) Конструктор и методы для получения значений полей типа int описать в средине класса, методы для получения значений типа float за пределами...
C++ Генератор случайных чисел random()
Здраствуйте! Подскажите, пожалуйста, как сделать вывод случайных чисел в этой программе: #include <iostream> using namespace std; float massive; int main() {
C++ Подскажите пожалуйста!!! http://www.cyberforum.ru/cpp-beginners/thread50602.html
Написал код на dev-c++ и на коде написал по русски например: "Введите число: " потом компилировал ошибок не было, но там по русски "Введите число: " не вышло что-то неразборчивое!!!!! Может кто знает можно ли по русски выводит слова?? (P.S Я попробовал написать слово по английски все отлично работает, не понимаю...)
C++ Вывести на экран элементы вещественного массива Вывести на экран элементы вещественного массива Y и их порядковые номера, при соблюдении следующего условия 0< i <1.(Под i подразумевается какой-либо элемент массива.) подробнее

Показать сообщение отдельно
Sov3117
0 / 0 / 0
Регистрация: 12.09.2009
Сообщений: 10
13.09.2009, 00:20     Проблему с двумерным динамическим массивов
Написал программку. Считает правильно, но в конце выдаётся ошибка.
Цель такая:В массив А(N,М) вставить одномерный массив В(N), расположив его перед последним столбцом, содержащим нулевой элемент. Если такого столбца не окажется, то вставить массив В(N) после последнего столбца. Ввод, вывод элементов двумерного массива и его обработку оформить в виде функций.
Вот программа
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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
#include <iostream.h>
#include <stdlib.h> 
#include <conio.h>
void EnterArray(int **, int, int, int );
void Vvod(int *, int, int);
void reshenie(int**, int* , int, int);
void  Vyvod1(int **, int  ,int );
void Vyvod2(int *, int );
int main()
{
  int N, M, z;
  while (true)
    {
        cout << "Vvedite kolvo strok (N):";
        cin >> N;
        cout << "Vvedite kolvo stolbcob (M):";
        cin >> M;
        if (N!=0 && M!=0) break;
        {
          cout << "Nekorrectnie dannie, porobuyte esto!\n";
          system("pause");
        }
    }
     cout <<"\n\tIshodniy massiv A\n";
     int **A=new int* [N];
     for(int i=0; i<N; i++)
     A[i]=new int [M];
     EnterArray(A, N, M,z);
     Vyvod1(A, N, M);
     cout << "\n\tIshodniy massiv B\n";
     int *B=new int [N];
     Vvod(B, N, z);
     Vyvod2(B, N);
     cout <<"Noviy massiv chisel \n";
     reshenie(A, B, N, M);
     Vyvod1(A, N, M+1);
     cout<<endl;
      system("pause");
       system("pause");
     for(int i=0; i<N; i++)
     delete []A[i];
     delete []A;
     delete []B;
     system("pause");
     return 0;
 }
  void EnterArray(int **A, int N, int M, int z)
  {
   cout<<"Viberete sposob vvoda 1-sluchaynie, 0-consol:";
     cin >> z;
     if (z==1)
     {
        for(int i = 0; i < N ; i++)
        {
          for(int j = 0; j <M ; j++)
          {
           A[i][j] =random(100);
          }
        }
     }
     else
     {
       cout <<" Vvedite massiv chisel \n";
       for(int i=0; i<N; i++)
           for (int j = 0; j < M; j++)
           {
             cout << "A[" << i << "][" << j << "]=";
             cin >> A[i][j];
           }
 
      }
   }
  void  Vvod(int*B, int N, int z)
   {
   cout<<"Viberete sposob vvoda 1-sluchaynie, 0-consol:";
     cin >> z;
     if (z==1)
     {
        for(int i = 0; i < N; i++)
        B[i] = random(100);
 
     }
    else
    {
       cout <<" Vvedite massiv chisel \n";
       for(int i=0; i<N; i++)
         cin >>B[i];
    }
  }
   void reshenie(int**A, int* B, int N, int M)
   {
     int flagg=0;
     for(int j=M-1; j >= 0;  j--)
     { int flag=0;
       for(int i = 0; i<N;  i++)
           if (A[i][j]==0)
           {
            flag=1;
           break;
           }
       if (flag)
       {
             for(int k=0; k<M-j ;k++)
             for(int l= 0; l < N ; l++)
              A[l][M-k]=A[l][M-k-1];
              for(int k=0; k<N; k++)
              A[k][j]=B[k];
              flagg=1;
              break;
       }
 
      }
     if (flagg==0)
             for(int k=0; k<N; k++)
             A[k][M]=B[k];
 
    }
    void  Vyvod1(int **A, int N,int M)
    {
       for(int i=0; i<N; i++)
       {
           for (int j = 0; j < M; j++)
           {
             cout.width(6);
             cout << A[i][j];
           }
           cout << endl;
        }
     }
     void Vyvod2(int *B, int N)
     {
      for(int i=0; i<N; i++)
       {
         cout.width(6);
         cout << B[i] << ' ';
         cout <<endl;
        }
     }

Ошибка такая:
Project Project1.exe raised exceptionclass EaccessViolation with message ‘Access violation at address 32609998. Write to address 00000059’. Process stopped. Use Step or Run to continue.

Ошибка выскакивает (как я понял ) при удалении любого из массивов. Если массивы не удалять ошибки не выскакивает. 2 system("pause") перед удалением массивов поставил потому, что при первой попытке выключить программу выполняется следующее действие по программе.
В понедельник зачёт по матанализу, из-за этой задачи не могу сконцентрироваться на последнем, блин.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 23:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru