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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
555shiro
8 / 8 / 1
Регистрация: 01.12.2009
Сообщений: 226
#1

Безопасный массив (массив с контролем границ) - C++

05.05.2010, 22:06. Просмотров 1341. Ответов 6
Метки нет (Все метки)

Доброе время суток!
кто нибудь может подсказать в чем ошибка данной программы-"безопасный массив(контроль границ массива)".
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
#include <iostream.h>
#include <stdlib.h>
class array {
int size;
char *p;
public:
array (int num)
 
~array (){delete[]p;}  // почему здесь ошибка и какая?
 
char&put(int i)
char get(int i)};
array::array (int num )
{p=new char[num];
if(!p)
{cout<<"oshibka"
exit(1);}
size=num;}
 
char & array::put(int i)
{if(i<0 ll i>=size)
{cout<<"naryshenie graniz",exit(1);}
return p[i];}
char array :: get(int i)
{if(i<0 ll i>=size)
{cout <<"oshibka v narushenii graniz",exit(1);}
return p[i];
}
int main()
{array a(10);
a.put(3)='x';
a.put(2)='r';
cout<<a.get(3)<<a.get(2)<<"\n";
a.put(11)='!';
return 0;}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.05.2010, 22:06     Безопасный массив (массив с контролем границ)
Посмотрите здесь:

Массив чисел с контролем границ - C++
Прошу помочь так как я совсем уже запутался и не знаю как подступиться, есть вот такой класс , который должен бы был содержать не...

Безопасный массив - C++
Здравствуйте,помогите пожалуйста,как подстроить данную программу под безопасный массив (контроль границ).Своими силами не...

Организовать ввод целых четных значений в одномерный массив с контролем вводимых чисел - C++
Организовать ввод целых четных значений в одномерный массив с контролем чисел вводимых

Класс массив. Задания произвольных границ индексов массива - C++
Составить класс для определения одномерных массивов целых чисел . Предусмотреть возможность обращения к отдельному элементу массива с...

Переписать положительные элементы массива K,кратные пяти в массив M,а остальные-в массив Q. - C++
Дан массив K(N).Переписать положительные элементы массива K,кратные пяти в массив M,а остальные-в массив Q.

Массив: Переместить в массив Y все числа, дробная часть которых больше 5. - C++
Помогите решить, вообще не понимаю как в С++ с дробной частью работать. Задан массив X(N) дробных чисел. Переместить в массив Y все...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
XuTPbIu_MuHTAu
Эксперт С++
2224 / 739 / 10
Регистрация: 27.05.2008
Сообщений: 1,508
06.05.2010, 10:38     Безопасный массив (массив с контролем границ) #2
У тебя ошибок куча,включая синтаксис и опечатки.

Там ошибка в том,что не проверяешь,можно ли вызывать delete. Если,например,просто создать локальную переменную этого типа и ничего не делать,то деструктор попытается вызвать delete для указателя,содержащего мусор.Поэтому стоит всегда занулять указатель,если он не указывает на что-то нужное, а перед вызовом delete проверять,не ноль ли ты удаляешь.
uggway
219 / 133 / 9
Регистрация: 12.04.2010
Сообщений: 248
06.05.2010, 10:46     Безопасный массив (массив с контролем границ) #3
Ошибка не именно в том месте... Она везде

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
#include <iostream.h>
#include <stdlib.h>
class array {
int size;
char *p;
public:
array(){p=NULL;}
array(int num);
~array (){if(p)delete[]p;}  // почему здесь ошибка и какая?
 
char& put(int i);
char get(int i);
 
};
 
array::array (int num )
{
    p=new char[num];
    if(!p)
    {   cout<<"oshibka";
        exit(1);
    }
    size=num;
}
 
char & array::put(int i)
{
    if(i<0 || i>=size)
    {
        cout<<"naryshenie graniz";
        exit(1);
    }
    return p[i];
}
 
char array :: get(int i)
{
    if(i<0 || i>=size)
    {
        cout <<"oshibka v narushenii graniz";
        exit(1);
    }
    return p[i];
}
int main()
{
    array a(10);
    a.put(3)='x';
    a.put(2)='r';
    cout<<a.get(3)<<a.get(2)<<"\n";
    a.put(11)='!';
    return 0;
}
555shiro
8 / 8 / 1
Регистрация: 01.12.2009
Сообщений: 226
07.05.2010, 11:08  [ТС]     Безопасный массив (массив с контролем границ) #4
а почему когда начинаешь компилировать,экран резко исчезает? я думал он должен был вывести хотя бы что на экране... или это так и должно быть..
XuTPbIu_MuHTAu
Эксперт С++
2224 / 739 / 10
Регистрация: 27.05.2008
Сообщений: 1,508
07.05.2010, 11:11     Безопасный массив (массив с контролем границ) #5
http://www.cyberforum.ru/cpp-beginners/thread10807.html
555shiro
8 / 8 / 1
Регистрация: 01.12.2009
Сообщений: 226
07.05.2010, 11:33  [ТС]     Безопасный массив (массив с контролем границ) #6
я добавил getch() и его библиотеку где она описана,всё равно также быстро исчезает...
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
#include <iostream.h>
#include <stdlib.h>
#include <conio.h>
class array {
int size;
char *p;
public:
array(){p=NULL;}
array(int num);
~array (){if(p)delete[]p;}
 
char& put(int i);
char get(int i);
 
};
 
array::array (int num )
{
        p=new char[num];
        if(!p)
        {       cout<<"oshibka";
                exit(1);
        }
        size=num;
}
 
char & array::put(int i)
{
        if(i<0 || i>=size)
        {
                cout<<"naryshenie graniz";
                exit(1);
        }
        return p[i];
}
 
char array :: get(int i)
{
        if(i<0 || i>=size)
        {
                cout <<"oshibka v narushenii graniz";
                exit(1);
        }
        return p[i];
}
int main()
{
        array a(10);
        a.put(3)='x';
        a.put(2)='r';
        cout<<a.get(3)<<a.get(2)<<"\n";
        a.put(11)='!';
        return 0;
getch ();}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.05.2010, 21:37     Безопасный массив (массив с контролем границ)
Еще ссылки по теме:

Дан массив. Записать во второй массив все элементы, не совпадающие с минимальным - C++
Дан массив M(14).Записать в массив B все элементы , не совпадающие с минимальным. Cоставить блок схему программы

Массив: сформировать массив C[12] так, чтобы элементы располагались следующим образом: A(1) B(1) A(2) B(2) - C++
из массивов A и B сформировать массив C так, чтобы элементы массива располагались следующим образом: A(1) B(1) A(2) B(2) и т.д.

с клавиатуры ввести массив,во второй массив записать нечетные элементы из первого - C++
с клавиатуры ввести массив,во второй записать нечетные элеиенты из первого.В третий массив записать четные элементы, стоящие на нечетных...

Сжать массив, выбросив из него отрицательные элементы - массив становится пустым - C++
Задачка такая: Разработать программу, обеспечивающую ввод с клавиатуры целых чисел и сохранение их в одномерном массиве. Ввод...


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

Или воспользуйтесь поиском по форуму:
uggway
219 / 133 / 9
Регистрация: 12.04.2010
Сообщений: 248
07.05.2010, 21:37     Безопасный массив (массив с контролем границ) #7
return 0; в main завершает выполнение твоей программы.
Т.е. getch() после ретурна бессмыслен.

C++
1
2
3
4
5
6
7
8
9
10
int main()
{
        array a(10);
        a.put(3)='x';
        a.put(2)='r';
        cout<<a.get(3)<<a.get(2)<<"\n";
        a.put(11)='!';
        getch ();
        return 0;
}
Yandex
Объявления
07.05.2010, 21:37     Безопасный массив (массив с контролем границ)
Ответ Создать тему
Опции темы

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