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

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

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

почему вылетает из программы? - C++

19.01.2011, 21:00. Просмотров 484. Ответов 2
Метки нет (Все метки)

почему вылетает из программы во время рассчета длины массива?
всю голову слома, не могу найти ошибку
помогите пожалуйста

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//файл laba.h
#ifndef LABA_H
#define LABA_H
class laba
{
public:
laba();
~laba();
void input();
void output();
void dlina();
void sqr();
private:
int *mas;
int *bPtr;
};
#endif
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/файл main.cpp
#include <iostream.h>
#include <math.h>
#include "laba.h"
main()
{
laba *a= new laba;
cout<<"vvedite elementy massiva - "<<endl;
a->input();
a->output();
a->sqr();
delete a;
system("PAUSE");
return 0;
}
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
//файл laba.cpp
#include <iostream.h>
#include <math.h>
#include "laba.h"
laba::laba(){mas= new int[5]; bPtr=&mas[0];};
void laba::input()
{
for(int i=0;i<10;i++){
cout<<"vvesty "<<i+1<<" element"<<endl;
cin>>mas[i];}
}
void laba:: output()
{
for(int i=0;i<10;i++){
cout<<" mas["<<i+1<<"]="<<mas[i];}
cout<<endl;
}
void laba:: sqr(){
int l;
for(int i=0;i<10;i++){
int w= mas[i]; int q= mas[i];
int r=w*q;
l=l+r;}
double n=sqrt(l);
cout<<"dlina"<<n;}
laba::~laba(){delete mas;}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.01.2011, 21:00     почему вылетает из программы?
Посмотрите здесь:

Почему вылетает - C++
Почему вылетает после того как вводишь position??? #include &lt;iostream.h&gt; enum Etype {laborer, secretary, manager, accountant,...

Почему вылетает эксепшн? - C++
Товарищи, подскажите, почему вылетает эксепшн? char *p = &quot;qwerty&quot;; p = 'a'; Потому что p указывает на константное выражение...

Почему программа вылетает - C++
Здраствуйте, почему, когда пишу: unsigned char* p = new unsigned char; программа НЕ вылетает, а когда пишу: unsigned char p; ...

Вылетает программа. Не пойму, почему? - C++
Здравствуйте. Написал прогу на С++ - это лаба по ООП. Но она вылетает. Не пойму почему! // объявление класса Date #include &lt;iostream&gt; ...

При запуске вылетает,а почему? - C++
#include &lt;iostream&gt; using namespace std; const int MAX=100; //ìàêñèìàëüíîå êîëè÷åñòâî ñèìâîëîâ â èìåíè class emloyee { long...

Почему вылетает программа на delete [] - C++
Здравствуйте, подскажите, пожалуйста, что именно не так и как исправить. Программа вылетает сразу же на деструкторе,т.е на delete . Хотя,...

Строка (почему вылетает программа?) - C++
Подскажите пожалуйста почему вылетает программа, вроде всё правильно написано. Вылетает на строчке string = string; # include...

Программа на С++ вылетает, не могу понять почему!? - C++
#include &lt;iostream&gt; #include &lt;stdlib.h&gt; #include &lt;stdio.h&gt; #include &lt;allegro.h&gt; #include &lt;math.h&gt; #include &lt;time.h&gt; #define W...

C++ почему прога вылетает, не успеваю посмотреть действие - C++
дан массив строк, если какая либо строка заканчивается буквой k, то удалить эту строку, вод что я написал: #include &lt;iostream.h&gt; ...

Почему при вводе данных вылетает ошибка - C++
вот написал программу #include &lt;iostream&gt; using namespace std; #define N 2 struct Spis { char KODp; char Fm; char TARIF; ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ISergey
Maniac
Эксперт С++
1373 / 884 / 52
Регистрация: 02.01.2009
Сообщений: 2,653
Записей в блоге: 1
19.01.2011, 21:03     почему вылетает из программы? #2
Выход за границы массива...
C++
1
2
3
4
mas= new int[5];
...
for(int i=0;i<10;i++)
 ..mas[i]..
NiRamz
211 / 211 / 16
Регистрация: 26.12.2010
Сообщений: 691
19.01.2011, 21:19     почему вылетает из программы? #3
что бы подобного не возникало, пользуйтесь константами ..
что то типо
C++
1
2
3
4
5
const int M=10;
mas= new int[M];
...
for (int i=0; i<M; i++)
{...}
или по другому
C++
1
2
3
4
mas = new int[10];
 
for(int i=0; i< sizeof(mas)/sizeof(mas[0]); i++)
{...}
второй вариант я считаю предпочтительней, так можно избежать подобных ошибок, которые могут быть просто из-за невнимательности ...))
Ответ Создать тему
Опции темы

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