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

При создании территориальной единицы выдает "System.AccessViolationException" - C++

Восстановить пароль Регистрация
 
Антоха
0 / 0 / 0
Регистрация: 21.04.2012
Сообщений: 3
05.05.2012, 21:05     При создании территориальной единицы выдает "System.AccessViolationException" #1
При создании территориальной единицы выдает такую ошибку


Описание классов
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
class TPlant
{
public:
static int kolp;
int year; // Возраст растения
int godposadki; // Год посадки растения
char mes[20];
char type [20];
char vid [20];
TPlant(char *ty);
~TPlant();
virtual void PrintPlant()=0;
virtual int selection(char *f)=0;
};
class TTree: public TPlant
{public:
char tip [20]; //ягодное или нет
char plod[15]; // Плодородное дерево или нет
static int kolt;
TTree(char *ty);
~TTree();
void PrintPlant();
int selection(char *f);
};
class TFlower:public TPlant
{public:
static int kolf;
char color[20]; //цвет цветка
int lepestok; // количество лепестков
char moreyear [5]; // поле многолетних цветков
TFlower(char *ty);
~TFlower();
void PrintPlant();
int selection(char *f);
};
class TTerrit
{
public:
int maxkolvorast;  // Максимальное количесво растений
TPlant *plants [10];
static int kolter;
char vidt [20];
char name[20]; // название территориальной единицы
float s; //Площадь территориальной единицы
TPlant *rast[10];
void PrintPerechen();
void Mnogolet(char *s,char *ty);
TTerrit();
~TTerrit();
};
class TStrana: public TTerrit
{public:
static int kols;
char prezident [20]; // Имя текущего президента страны
int godkonst; // Год принятия конституции
TStrana();
~TStrana();
};
class TOblast: public TTerrit
{public:
int prot; // Протяженнотсь границ
char gub[20]; // Фамилия губернатора области
static int kolo;
TOblast();
~TOblast();
};
Реализация методов
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
#include "Kurs.h"
#include <stdio.h>
#include <string>
TPlant::TPlant(char *ty)
{
printf("Добавление записи растение:");
strcpy (type,ty);
printf("Введите возраст");
scanf("%d",&year);getchar();
printf("Введите год посадки");
scanf ("%d",godposadki);getchar();
kolp++;
}
TPlant::~TPlant()
{
printf("Удаление объекта растения со следующими параметрами");
printf("Возраст растения %d",year);
printf("Год посадки %d",godposadki);
kolp--;
}
TTree::TTree(char *ty):TPlant(ty)
{
printf("Укажите,ягодное ли дерево или нет (введите yes or no)");
scanf("%s",tip);
printf("Укажите, плодородное ли дерево");
scanf("%s",plod);
kolt++;
}
TTree::~TTree()
{
printf("Удаление обекта дерево со следующими параметрами");
printf("Дерево %s и %s",tip,plod);
kolt--;
}
TFlower::TFlower(char *ty):TPlant(ty)
{
printf("Введите цвет цветка");
scanf("%s",color);
printf("Введите количество лепестков");
scanf("%d",lepestok);getchar();
printf("Укажите многолетний ли цветок (введите yes or no)");
scanf("%s",moreyear);
kolf++;
}
TFlower::~TFlower()
{
printf("Удаление объекта цветок со следующими параметрами/n");
printf("Цвет цветка - %s",color);
printf("Количество лепестков - %d",lepestok);
printf("Цветок многолетний? - %s",moreyear);
kolf--;
}
TTerrit::TTerrit()
{
printf("Создание территориальной единицы под названием:");
scanf("%s",name);
printf("Введите площадь территории");
scanf("%f",s);getchar();
kolter++;
}
TTerrit::~TTerrit()
{
printf("Удаление территориальной единицы со следующими параметрами");
printf("Название - %s",name);
printf("Площадь - %f",s);
kolter--;
}
TOblast::TOblast():TTerrit()
{
printf("Введите имя губернатора");
scanf("%s",gub);
printf("Введите протяженность границы области в метрах");
scanf("%d",prot);getchar();
kolo++;
}
TOblast::~TOblast()
{
printf("Удаление объекта область со следующими параметрами");
printf("Губернатор - %s",gub);
printf("протяженность границ в метрах - %d",prot);
kolo--;
}
TStrana::TStrana():TTerrit()
{
printf("Введите имя президента");
scanf("%s",prezident);
printf("Введите год приняти конституции");
scanf("%d",godkonst);getchar();
kols++;
}
TStrana::~TStrana()
{
printf("Удаление объекта страна со следующими параметрами");
printf("Президент - %s",prezident);
printf("Принятие конституции - %d",godkonst);
}
void TTerrit::PrintPerechen()
{int i;
if (maxkolvorast==0) {printf("\nНет растений\n"); return;}
for(i=0;i<maxkolvorast;i++)
    rast[i]->PrintPlant();
}
 
void TTree::PrintPlant()
{printf("\n********************************");
printf("\nВозраст растения: %d   \nГод посадки: %d  \nДерево %s и %s ",year,godposadki,tip,plod);
}
 
void TFlower::PrintPlant()
{printf("\n********************************");
printf("\nВозраст растения: %d   \nГод посадки: %d  \nЦвет цветка %s \nКоличество лепестков %d \nРастение (yes - многолетнее, no - немноголетнее)",year,godposadki,color,lepestok,moreyear);
}
void TTerrit::Mnogolet(char *s,char *ty)
{int i,k=0;
if (maxkolvorast==0) {printf("\nНет растений\n"); return;}
for(i=0;i<maxkolvorast;i++)
  if (strcmp(rast[i]->type,ty)==0) 
        {rast[i]->selection(s);
           if (rast[i]->selection(s)==0) k++;}
if (k==0) printf("\nНет растений\n");}
 
int TTree::selection(char *s)
{if(tip=="yes") {PrintPlant(); return 0;}
 return 1;}
 
int TFlower::selection(char *s)
{ if(moreyear=="yes") {PrintPlant(); return 0;}
return 1;}
Сама программа
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
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
#include "Kurs.h"
#include <stdio.h>
#include <iostream>
#include <string.h>
#include <locale>
int TPlant::kolp=0;
int TTree::kolt=0;
int TFlower::kolf=0;
int TTerrit::kolter=0;
int TStrana::kols=0;
int TOblast::kolo=0;
TTerrit *TTer[10]={0};
void AddPlant();
void AddTerrit();
void DelPlant();
void DelTerrit();
int  PrintPer();
void PrintTree();
void PrintFlower();
//int KolvoPlants();
void Kolichestvo();
int PrintMenu();
void main()
{setlocale( LC_ALL,"Russian");
while(PrintMenu());
printf("\nДо свидания!");
getchar();
}
 
int PrintMenu()
{int ch;
system("cls");
printf("\nПользовательское меню\n");
printf("\n 1-Добавление растений (Не более 10)");
printf("\n 2-Добавление территории (Не более 10)");
printf("\n 3-Удаление растений (Всего растений: %d)",TPlant::kolp);
printf("\n 4-Удаление территорий: (Всего территорий %d)",TTerrit::kolter);
printf("\n 5-Вывод перечня растений в данной территориториальной единице");
printf("\n 6-Вывод перечня ягодных деревьев, произрастающих в данной территориальной единице");
printf("\n 7-Вывод перечня многолетних цветков, произрастающих в данной территориальной единице");
//printf("\n 8-Вывод количества растений, указанного вида, произрастающих в данной территориальной единице");
printf("\n 8-Вывод количества созданных объектов");
printf("\nВведите номер меню, 0 - Выход\n");
scanf("%d",&ch); 
getchar();
switch(ch)
{case 1:{AddPlant();system("pause");break;}
case 2:{AddTerrit();system("pause");break;}
case 3:{DelPlant();system("pause");break;}
case 4:{DelTerrit();system("pause");break;}
case 5:{PrintPer();system("pause");break;}
case 6:{PrintTree();system("pause");break;}
case 7:{PrintFlower();system("pause");break;}
//case 8:{KolvoPlants();system("pause");break;}
case 8:{Kolichestvo(); system("pause"); break;}
default:break;
}
return(ch);
}
 
void Kolichestvo()
{printf("\n Растения: %d",TPlant::kolp);
printf("\n Деревья: %d",TTree::kolt);
printf("\n Цветы: %d",TFlower::kolf);
printf("\n Территории: %d",TTerrit::kolter);
printf("\n Страны: %d",TStrana::kols);
printf("\n Области: %d\n",TOblast::kolo);
}
 
void AddTerrit()
{int c;
printf("\nВыберите вид территориальной единицы: ");
printf("\n 1-Страна \n 2-Область\n");
scanf("%d",&c);
if (c!=1 && c!=2) {printf("\n Неправильный ввод\n"); return;}
getchar();
switch(c)
{
case 1: {TTer[TTerrit::kolter-1] = new TStrana; break;}
case 2: {TTer[TTerrit::kolter-1] = new TOblast; break;}
default: break;
}
}
 
void AddPlant()
{int i,c;
if(TTerrit::kolter==0)
{printf("\nНет территориальных единиц!");
getchar();
return;}
printf("\nВыберите номер территориальной единицы: ");
for(i=0;i<TTerrit::kolter;i++)
{printf("\n%d - %s",i+1,TTer[i]->name);}
printf("\n");
scanf("%d",&i);
getchar();
if ((i>TTerrit::kolter)||i<0) {printf("\n Неправильный ввод\n"); return;}
while(1){
printf("\nВыберите вид растения: \n1-дерево \n2-цветок \n0-Выход\n");
scanf("%d",&c);getchar();
switch(c){
case 1: {TTer[i-1]->plants[TTer[i-1]->maxkolvorast]=new TTree("Tree"); 
    TTer[i-1]->maxkolvorast++;
    break;}
case 2: {TTer[i-1]->plants[TTer[i-1]->maxkolvorast]=new TFlower("Flower"); 
    TTer[i-1]->maxkolvorast++; 
    break;}
case 0: return;
default : break;}
}
}
 
void DelTerrit()
{int i,j;
if (TTerrit::kolter==0) {printf("\nНет территорий\n"); return;}
printf("\nВыберите номер территории");
for(i=0;i<TTerrit::kolter;i++)
{printf("\n%d - %s",i+1,TTer[i]->name);}
printf("\n");
scanf("%d",&i);
if ((i>TTerrit::kolter)||i<0) {printf("\n Неправильный ввод\n"); return;}
if(TTer[i-1]->maxkolvorast!=0) 
    {
    for(j=0;j<TTer[i-1]->maxkolvorast+1;j++)
    {delete TTer[i-1]->plants[j];
    TTer[i-1]->maxkolvorast--;}
    }
delete TTer[i-1];
TTer[i-1]=0;
for(j=i-1;j<TTerrit::kolter;j++)
{TTer[j]=TTer[j+1];
TTer[j+1]=0;}
}
 
void DelPlant()
{int i,j,c;
i=PrintPer();
if (i==0) return;
printf("\nВведите год посадки растения: ");
scanf("%d",&c); getchar();
if(c==0) return;
for(j=0;j<TTer[i-1]->maxkolvorast;j++)
{if (TTer[i-1]->plants[j]->godposadki==c) 
         {delete TTer[i-1]->plants[j];
                 TTer[i-1]->maxkolvorast--;
          for(c=j;c<TTer[i-1]->maxkolvorast;c++)
          {TTer[i-1]->plants[j]=TTer[i-1]->plants[j+1]; 
           TTer[i-1]->plants[j+1]=0;}}
else printf("\nВведен не существующий год посадки!\n");
}
}
 
int PrintPer()
{int j,i;
if (TTerrit::kolter==0||TPlant::kolp==0) {printf("\nНет растений или территориальных единиц\n"); return 0;}
printf("\nВыберите номер территории");
for(i=0;i<TTerrit::kolter;i++)
{printf("\n%d - %s",i+1,TTer[i]->name);}
printf("\n");
scanf("%d",&i); getchar();
if ((i>TTerrit::kolter)||i<0) {printf("\n Неправильный ввод\n"); return 0;}
printf("\nНазвание территории : %s",TTer[i-1]->name);
TTer[i-1]->PrintPerechen();
return i;
}
void PrintFlower()
{int i;
char *s;
if (TTerrit::kolter==0 || TFlower::kolf==0) {printf("\nНет территорий или цветков\n"); return;}
printf("\nВыберите номер территории");
for(i=0;i<TTerrit ::kolter;i++)
{printf("\n%d - %s",i+1,TTer[i]->name);}
printf("\n");
scanf("%d",&i); getchar();
if ((i>TTerrit::kolter)||i<0) {printf("\n Неправильный ввод\n"); return;}
printf("\nВведите многолетний ли цветок: ");
scanf("%s",s); getchar();
if (TPlant::kolp==0) {printf("\nНет растений\n"); return;}
TTer[i-1]->Mnogolet(s,"Flower");
}
void PrintTree()
{int i;
char *s;
if (TTerrit::kolter==0 || TTree::kolt==0) {printf("\nНет территорий или цветков\n"); return;}
printf("\nВыберите номер территории");
for(i=0;i<TTerrit::kolter;i++)
{printf("\n%d - %s",i+1,TTer[i]->name);}
printf("\n");
scanf("%d",&i); getchar();
if ((i>TTerrit::kolter)||i<0) {printf("\n Неправильный ввод\n"); return;}
printf("\nУкажите, плодородное ли дерево: ");
scanf("%s",s);
if (TPlant::kolp==0) {printf("\nНет растений\n"); return;}
TTer[i-1]->Mnogolet(s,"Tree");
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.05.2012, 21:05     При создании территориальной единицы выдает "System.AccessViolationException"
Посмотрите здесь:

C++ Иконка "MFC" при создании AppWizardом приложения
Код ошибки при вызове функции через "system" C++
C++ что делать если программа не включается при функции system("pause");?
C++ Почемо выдает ошибку в строке system("pause")
C++ Выдает ошибку c:\proect\8\8\8.cpp(60): error C2040: ==: "char [20]" отличается по уровням косвенного обращения от "int"
C++ Ошибка "Необъявленный идентификатор" при создании конструктора в наследственном классе
C++ Ошибка при создании шаблонной функции:"error C2075: temp: для инициализации массива требуются фигурные скобки"
C++ Компилятор выдает ошибку: error C2041: недопустимая цифра "8" для основания "8"

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SocialEngineer
26 / 26 / 1
Регистрация: 14.04.2012
Сообщений: 152
05.05.2012, 21:32     При создании территориальной единицы выдает "System.AccessViolationException" #2
мне кажется,или это с++?
Yandex
Объявления
05.05.2012, 21:32     При создании территориальной единицы выдает "System.AccessViolationException"
Ответ Создать тему
Опции темы

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