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

Деструктор и наследование - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Поменять первый элемент со вторым,третий с четвертым и т.д http://www.cyberforum.ru/cpp-beginners/thread800575.html
Дан массив из четного числа элементов.Поменять первый элемент со вторым,третий с четвертым и т.д. В чём ошибка? #include<stdio.h> #define n 6 int main() { int a; int i,temp; for(i = 0; i <n; i++) scanf("%i", &a); for (i=0;i<n/2;i++)
C++ Получить 10 наиболее часто встречающихся слов из файла Дан символьный файл f, содержащий произвольный текст длиной более 50 слов. Слова в тексте разделены пробелами и знаками препинания. Получить 10 наиболее часто встречающихся слов. http://www.cyberforum.ru/cpp-beginners/thread800551.html
Подпрограмма (функция) C++
Здравствуйте,подскажите в чем проблема понять не могу,прога с виду примитивная и простая ,но значения не верные выдает. Задание звучит так: Даны по 3 стороны для трех треугольников. Найти медианы всех сторон. Высчитываются по формуле (sqrt(2*x^2+2*y^2-z^2))/2, где x y z стороны. #include <iostream> #include <cmath> using namespace std; float function(int x,int y,int z) {return...
C++ Деление на натуральное число
Доброго времени суток! У меня, наверное, глупая проблема, но все таки хочется разобраться. Вот программа, где мне нужно найти число, взаимно обратное N. Но после компиляции С всегда равно 0, кроме того случая, когда N=1. когда вместо '/' ставлю '+' или '-' все работает.Подскажите пожалуйста в чем дело. Пишу на Bloodshed Dev-C++ 4.9.9.2 #include <iostream> using namespace std; int main() { ...
C++ Вычисление одного из углов треугольника, когда заданы значения двух других углов http://www.cyberforum.ru/cpp-beginners/thread800534.html
Написать программу вычисления одного из углов треугольника, когда заданы значения двух других углов. Рекомендуемый вид экрана во время ра-боты. >Введите исходные данные: >Угол А (град) > >Угол В (град) > >Угол С ….. (град)
C++ Файлы. Получить названия, состоящие из двойных слов В текстовом файле хранятся названия городов через запятую. Получить названия, состоящие из двойных слов, например, Нью-Йорк, Новый Орлеан, результат отсортировать в алфавитном порядке. Прошу помочь .... подробнее

Показать сообщение отдельно
UnknownSmith
0 / 0 / 0
Регистрация: 04.03.2013
Сообщений: 10

Деструктор и наследование - C++

04.03.2013, 19:43. Просмотров 639. Ответов 9
Метки (Все метки)

написал класс и наследник, при закомментированных деструкторах все работает, с ними результат выводится, но программа вылетает

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
#include <iostream>
 
class StrL
{
public:
    explicit StrL ();
    StrL ( char * );
    StrL ( char );
    StrL ( const StrL & );
    ~StrL ();
    char CharPos ( int );
    int Size () const;
protected:
    int _size;
    char *_chArray;
};
 
class StrLIdf : public StrL
{
public:
    StrLIdf();
    StrLIdf( char* );
    StrLIdf( const StrLIdf & );
    ~StrLIdf();
private:
    bool CheckIdf( char * );
};
 
StrL::StrL () 
{
    _size = 0;
    _chArray = new char[_size + 1];
}
 
StrL::StrL ( char* cString ) 
{
    if ( cString ) 
    {
        _size = 0;
        while ( cString[_size] ) 
            ++_size;
        _chArray = new char[_size + 1];
        strcpy( _chArray, cString );
    }
}
 
StrL::StrL ( char aChar) 
{
    _size = 1;
    _chArray = new char[_size + 1];
    _chArray[0] = aChar;
}
 
StrL::StrL ( const StrL &copy )
{
    _size = copy._size;
    _chArray = new char[_size + 1];
    strcpy( _chArray, copy._chArray );
 
}
 
StrL::~StrL () { delete [] _chArray; };
 
char StrL::CharPos ( int pos ) 
{
    char ch;
    if ( !_chArray ) return ( '0' );
    if ( pos <= _size ) 
    { 
        ch = _chArray[pos - 1]; 
        return ch;
    } else return '0';
}
 
int StrL::Size () const { return _size; };
 
StrLIdf::StrLIdf () 
{
    _size = 0;
    _chArray = new char[_size + 1];
}
 
StrLIdf::StrLIdf ( char *cString ) 
{
    if ( CheckIdf( cString ) )
    {
        _size = 0;
        while ( cString[_size] ) 
            ++_size;
        _chArray = new char[_size + 1];
        strcpy( _chArray, cString );
    } else StrLIdf();
}
 
StrLIdf::StrLIdf ( const StrLIdf &copy )
{
    _size = copy._size;
    _chArray = new char[_size + 1];
    strcpy( _chArray, copy._chArray );
 
}
 
StrLIdf::~StrLIdf () { delete [] _chArray; };
 
bool StrLIdf::CheckIdf( char *checkStr )
{
    if ( !checkStr ) return false;
    bool res = true;
    if ( ( checkStr[0] == '_' ) || 
        ( ( (int)checkStr[0] >= 65 ) && ( (int)checkStr[0] <= 90 ) ) ||
        ( ( (int)checkStr[0] >= 97 ) && ( (int)checkStr[0] <= 122 ) ) )
    {
        for ( int i = 1; checkStr[i]; ++i )
            if ( ( checkStr[i] != '_' ) &&
            ( !((int)checkStr[i] >= 65 && (int)checkStr[i] <= 90) ) &&
            ( !((int)checkStr[i] >= 97 && (int)checkStr[i] <= 122) ) &&
            ( !((int)checkStr[i] >= 48 && (int)checkStr[i] <= 57 ) ) ) { res = false; }
    } else res = false;
    return res;
}
 
int main()
{
    int ia;
    StrLIdf testStr1( "zxcvXqwer" );
    ia = testStr1.Size();
    printf ( "%d", ia );
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 00:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru