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

Не получается найти ошибки в программе(среда разработки - VS 2005) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ В чем ошибка? Массивы и функции http://www.cyberforum.ru/cpp-beginners/thread1206647.html
Выкидывает из программы с комментарием: "AP_PZ5.exe вызвал срабатывание точки останова." Ошибка явно возникает после прохождения всех функций, при том, что код выполняет поставленную задачу корректно, без искажений. #include "stdafx.h" #include <iostream> #include <stdlib.h> using namespace std; void entermas2f(int **mas2, int m, int n) // заполнение двумер масс {
C++ Запись в текстовый файл Здраствуйте. Нашёл небольшой кусочек кода в интеренете, который записывает текст в текстовый файл. Он работает. Вот код: #include <iostream> using namespace std; int main() { setlocale(0,""); // включаем кириллицу в консоли char * fileName = "C:\\example.txt"; // Путь к файлу для записи http://www.cyberforum.ru/cpp-beginners/thread1206646.html
Не знаю как отметить точку пересечения C++
Добрый день товарищи! Суть: Строим прямоугольник с центром xc yc. Высота h, ширина w. Строим линию из xc yc в x y. С этим проблем не возникло (код прилагается). А вот как мне Отметить точку их пересечения?! Я вообще в C++ мало понимаю. Помогите.
Перевести код с Java на C++ C++
import java.io.*; import java.util.*; public class main { public static class ant{ int k;
C++ Из двух текстовых файлов удалить строки, имеющие одинаковые номера, но не являющиеся одинаковыми http://www.cyberforum.ru/cpp-beginners/thread1206636.html
заданы два текстовых файла. удалить из этих файлов строки, имеющие одинаковые номера, но сами не являются одинаковыми. Результаты записать в новых файлов
C++ Перегрузка в c++ Собственно для чего нужна перегрузка функций или операторов ? подробнее

Показать сообщение отдельно
MarLuckDen
0 / 0 / 0
Регистрация: 07.06.2013
Сообщений: 2
12.06.2014, 21:42     Не получается найти ошибки в программе(среда разработки - VS 2005)
Задача заключается в следующем: Составить описание класса для определения одномерных массивов строк фиксированной длины. Предусмотреть возможность обращения к отдельным строкам массива по индексам, контроль выхода за пределы массива, выполнения операций поэлементного сцепления двух массивов с образованием нового массива, сцепление двух массивов с исключением повторяющихся элементов, вывод на экран элемента массива по заданному индексу и всего массива.
Написать программу, демонстрирующую работу с этим классом. Программа должна содержать меню, позволяющее осуществить проверку всех методов класса.
Листинг:
Основной файл программы:
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
#include "StdAfx.h"
#include "Massiv.h"
#include <iostream>
#include <iomanip>
#include <conio.h>
#include <stdlib.h>
 
using namespace std;
 
void main()
{
 Massiv a,b;
 int number,punkt,rec,field,kol,n1,n2,n,n3,n4;
 
 cout<<"1 - sozdanie massiva";cout<<endl;
 cout<<"2 - pechat vseh strok";cout<<endl;
 cout<<"3 - pechat stroki po indeksu";cout<<endl;
 cout<<"4 - sceplenie dvuh massivov";cout<<endl;
 cout<<"5 - sliyanie dvuh massivov";cout<<endl;
 cout<<"6 - pechat konkretnogo elementa konkretnoi stroki";cout<<endl;
 cout<<"7 - vihod";cout<<endl;
 cout<<"Vvedite punkt menu "; cin>> punkt;
 while (punkt!=7)
 {
 switch(punkt)
 {
 case 1: {    //sozdanie massiva
 a.Vvod_Sl();
 cout<<endl;
 a.Print();
 cout<<endl;
 cout<<"1 - sozdanie massiva";cout<<endl;
 cout<<"2 - pechat vseh strok";cout<<endl;
 cout<<"3 - pechat stroki po indeksu";cout<<endl;
 cout<<"4 - sceplenie dvuh massivov";cout<<endl;
 cout<<"5 - sliyanie dvuh massivov";cout<<endl;
 cout<<"6 - pechat konkretnogo elementa konkretnoi stroki";cout<<endl;
 cout<<"7 - vihod";cout<<endl;
 cout<<"Vvedite punkt menu "; cin>> punkt;
 }
 break;
 case 2: {a.Print(); //pechat massiva
 cout<<endl;
 cout<<"1 - sozdanie massiva";cout<<endl;
 cout<<"2 - pechat vseh strok";cout<<endl;
 cout<<"3 - pechat stroki po indeksu";cout<<endl;
 cout<<"4 - sceplenie dvuh massivov";cout<<endl;
 cout<<"5 - sliyanie dvuh massivov";cout<<endl;
 cout<<"6 - pechat konkretnogo elementa konkretnoi stroki";cout<<endl;
 cout<<"7 - vihod";cout<<endl;
 cout<<"Vvedite punkt menu "; cin>> punkt; }
 break;
 case 3: { //pechat stroki po indeksu
 cout<<"Vvedite nomer massiva (numeracia s 0!): ";cin>>number;
 cout<<endl;
 a.Print_2(number);
 cout<<"1 - sozdanie massiva";cout<<endl;
 cout<<"2 - pechat vseh strok";cout<<endl;
 cout<<"3 - pechat stroki po indeksu";cout<<endl;
 cout<<"4 - sceplenie dvuh massivov";cout<<endl;
 cout<<"5 - sliyanie dvuh massivov";cout<<endl;
 cout<<"6 - pechat konkretnogo elementa konkretnoi stroki";cout<<endl;
 cout<<"7 - vihod";cout<<endl;
 cout<<"Vvedite punkt menu "; cin>> punkt;
 }
 break;
 case 4: {  //sceplenie dvuh massivov
 cout<<"Vvrdite nomer 1-go massiva(numeracia s 0!): ";cin>>n1;cout<<endl;
 cout<<"Vvedite nomer 2-go massiva(numeracia s 0!): ";cin>>n2;cout<<endl;
 a.Scepl(n1,n2);
 cout<<endl;
 cout<<"1 - sozdanie massiva";cout<<endl;
 cout<<"2 - pechat vseh strok";cout<<endl;
 cout<<"3 - pechat stroki po indeksu";cout<<endl;
 cout<<"4 - sceplenie dvuh massivov";cout<<endl;
 cout<<"5 - sliyanie dvuh massivov";cout<<endl;
 cout<<"6 - pechat konkretnogo elementa konkretnoi stroki";cout<<endl;
 cout<<"7 - vihod";cout<<endl;
 cout<<"Vvedite punkt menu "; cin>> punkt;}
 break;
 case 5: {  //sliyanie dvuh massivov
 cout<<"Vvrdite nomer 1-go massiva(numeracia s 0!): ";cin>>n3;cout<<endl;
 cout<<"Vvedite nomer 2-go massiva(numeracia s 0!): ";cin>>n4;cout<<endl;
 a.Sliyan(n3,n4);
 cout<<endl;
 cout<<"1 - sozdanie massiva";cout<<endl;
 cout<<"2 - pechat vseh strok";cout<<endl;
 cout<<"3 - pechat stroki po indeksu";cout<<endl;
 cout<<"4 - sceplenie dvuh massivov";cout<<endl;
 cout<<"5 - sliyanie dvuh massivov";cout<<endl;
 cout<<"6 - pechat konkretnogo elementa konkretnoi stroki";cout<<endl;
 cout<<"7 - vihod";cout<<endl;
 cout<<"Vvedite punkt menu "; cin>> punkt;}
 break;
 
 case 6: {  //pechat konkretnogo elementa konkretnoi stroki
 cout<<"Vvedite nomer stroki massiva(numeraciya s 0!): ";cin>>rec;
 cout<<endl;
 cout<<"Vvedite nomer stolbca: ";cin>>field;
 cout<<endl;
 a.Print_3(rec,field);
 cout<<"1 - sozdanie massiva";cout<<endl;
 cout<<"2 - pechat vseh strok";cout<<endl;
 cout<<"3 - pechat stroki po indeksu";cout<<endl;
 cout<<"4 - sceplenie dvuh massivov";cout<<endl;
 cout<<"5 - sliyanie dvuh massivov";cout<<endl;
 cout<<"6 - pechat konkretnogo elementa konkretnoi stroki";cout<<endl;
 cout<<"7 - vihod";cout<<endl;
 cout<<"Vvedite punkt menu "; cin>> punkt;}
 break;
 case 7:
 break;
 }
 }
 }
Заголовочный файл класса Massiv.h:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#pragma once
#include "stdafx.h"
#include <stdlib.h>
#include <iostream>
#include <iomanip>
#include <conio.h>
 
 
class Massiv
{
 int *a,*b,n,min;
 public:
 void Sozd();
 void Vvod_Sl();
 void Scepl(int n1, int n2);
 void Sliyan(int n3, int n4);
 void Print();
 void Print_2(int number);
 void Print_3(int rec, int field);
};
Massiv.cpp
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
#include "StdAfx.h"
#include "Massiv.h"
#include <iostream>
#include <iomanip>
#include <conio.h>
#include <stdlib.h>
 
 
using namespace std;
 
void Massiv :: Sozd()
{
int m;
 cout<<"kolvo strok?";cin>>n;
 int min=0;
 for (int i=0;i<n;i++)
 {
 cout<<"kolvo elementov v "<< i+1 <<" stroke?";cin>>m;
 *(b+i)=m;
 if (min<m) {min=m;}
 }
a=(int*)malloc(sizeof(int)*n*min);
}
void Massiv::Vvod_Sl()
{
 Sozd();
 for (int i=0;i<n;i++)
 for (int j=0; j<*(b+i); j++)
 {
 *(a+i+j)=-20+rand()%40;
 }
}
void Massiv :: Print()
{
 for(int i=0;i<n;i++)
 {
 for (int j=0; j<*(b+i);j++)
 {
 cout<<setw(6)<<*(a+i+j);
 }
 cout<<endl;
 }
}
void Massiv :: Print_2(int number)
{
 for(int i=0;i<n;i++)
 {
 for (int j=0; j<*(b+i);j++)
 {
 if (i==number) cout<<setw(6)<<*(a+i+j);
 }
 cout<<endl;
 }
}
 
void Massiv :: Print_3(int rec, int field)
{
 for(int i=0;i<n;i++)
 {
 for (int j=0; j<*(b+i);j++)
 {
 if ((i==rec)&&(j==field)) cout<<"Danii element= "<<setw(6)<<*(a+i+j);
 else "Massiv s takimi dannimi ne naiden!";
 }
 cout<<endl;
 }
}
 
void Massiv :: Scepl(int n1,int n2)
{
 int m1,m2,k,j,l,p;
 int c[20];
 //zapominaem kolvo elementov v strokah
 m1=*(b+n1);
 m2=*(b+n2);
 // *(b+n1)=m1+m2;
 int m3=m1+m2;
 k=0;
 for (l=0;l<m3;l++)
 if(l<m1)
 {c[l]=*(a+n1+l);
 cout<<setw(6)<<c[l];
 }
 else if((l>=m1)&&(l<m3))
 {
 c[l]=*(a+n2+k);
 cout<<setw(6)<<c[l];
 k++;
 }
}
void Massiv :: Sliyan(int n3,int n4)
{
 int m1,m2,k,j,l,p,l1;
 int c[20],f[20];
 //zapominaem kolvo elementov v strokah
 m1=*(b+n3);
 m2=*(b+n4);
 int m3=m1+m2;
 k=0;
 for (l=0;l<m3;l++)
 {
 if(l<m1)
 {c[l]=*(a+n3+l);
 }
 else if((l>=m1)&&(l<m3))
 {
 c[l]=*(a+n4+k);
 k++;
 }
 }
 l1=0;
 f[l1]=c[l1];
 cout<<setw(6)<<f[l1];
 //sliyanie
 for(p=1;p<m3;p++)
 if(f[l1]!=c[p])
 { l++;
 f[l1]=c[p];
 cout<<setw(6)<<f[l1];
 }
}
Во время запуска программы компилятор ошибки не выдает, но при попытке создания массива в программе получаю в окне вывода отладки следующее:
Первый экземпляр исключения в "0x76bfc41f" в "console.exe": Исключение Microsoft C++: [rethrow] по адресу 0x00000000..
первое исключение типа "System.AccessViolationException" произошло в mscorlib.dll
первое исключение типа "System.AccessViolationException" произошло в mscorlib.dll
первое исключение типа "System.AccessViolationException" произошло в mscorlib.dll
И это циклично повторяется раз двадцать, после чего вылетает эта же ошибка. Сам массив не выводится.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 19:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru