Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

05.05.2010, 22:06. Просмотров 1623. Ответов 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;}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.05.2010, 22:06
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Безопасный массив (массив с контролем границ) (C++):

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

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

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

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

Ввести массив А. В массив В перенести все элементы массива А, стоящие правее максимального элемента, и имеющие нечетный индекс. Массив В отсортировать - C++
Добрый Вечер! Написал первую часть программы по этому заданию&quot;Ввести массив А. В массив В перенести все элементы массива А, стоящие правее...

Массив: Как скопировать двумерный массив в другой массив? - C++
Как скопировать двумерный массив в другой массив?

6
XuTPbIu_MuHTAu
Эксперт С++
2234 / 749 / 10
Регистрация: 27.05.2008
Сообщений: 1,498
06.05.2010, 10:38 #2
У тебя ошибок куча,включая синтаксис и опечатки.

Там ошибка в том,что не проверяешь,можно ли вызывать delete. Если,например,просто создать локальную переменную этого типа и ничего не делать,то деструктор попытается вызвать delete для указателя,содержащего мусор.Поэтому стоит всегда занулять указатель,если он не указывает на что-то нужное, а перед вызовом delete проверять,не ноль ли ты удаляешь.
1
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;
}
1
555shiro
8 / 8 / 1
Регистрация: 01.12.2009
Сообщений: 227
07.05.2010, 11:08  [ТС] #4
а почему когда начинаешь компилировать,экран резко исчезает? я думал он должен был вывести хотя бы что на экране... или это так и должно быть..
0
XuTPbIu_MuHTAu
Эксперт С++
2234 / 749 / 10
Регистрация: 27.05.2008
Сообщений: 1,498
07.05.2010, 11:11 #5
http://www.cyberforum.ru/cpp-beginners/thread10807.html
0
555shiro
8 / 8 / 1
Регистрация: 01.12.2009
Сообщений: 227
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 ();}
0
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;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.05.2010, 21:37
Привет! Вот еще темы с ответами:

Дан массив целых чисел,произвести для него следующие операции: для каждого из чисел ,входящего в массив,указать,сколько раз оно входит в массив... - C++
помогите!!!((( дан массив целых чисел,произвести для него следующие операции: для каждого из чисел ,входящего в массив,указать,сколько...

Файл: Загрузка данных из файла: первый столбец записывался в 1й массив, второй столбец - во 2й массив, а 3й столбец - в 3й массив. - C++
Есть текстовый файл, в нем 3 столбца чисел (число строк заранее неизвестно). Напишите пожалуйста код, чтобы первый столбец записывался в...

Массив: найти номера столбцов с положительными элементами и записать их в одномерный массив - C++
ввести двумерный массив I . найти номера столбцов с положительными элементами и записать их в одномерный массив, отобразить его на экране. ...

Есть массив одинаковых элементов, сделать функцию делающую массив различных - C++
Дан одномерный массив, среди элементов которого есть совпадающие. Разработать функцию, создающую массив из различных элементов.


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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