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

Виртуальные функции. Программа вылетает с ошибкой. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Разветвление http://www.cyberforum.ru/cpp-beginners/thread432489.html
Ввести три целых числа и найти наибольшее из них. #include <iostream.h> main() { int a, b, c, max; cout<<"Vvedite tri zeluh chisla "; cin>>a>>b>>c; if
C++ Определение максимальных элементов массива (С++) Всем добрый день) Задача следующая. Даны два массива, в одном 5 элементов, в другом 20. Определить индексы и значения максимальных элементов в каждом массиве. Всё, в принципе, работает, но никак не хочет выводить максимальные элементы. Перепробовал много способов, в любом случае, выводит все элементы массива. Если кто-нибудь сможет помочь, буду очень благодарен. Нахождение максимальных... http://www.cyberforum.ru/cpp-beginners/thread432485.html
C++ Упрощение и алгоритм
Здрасте есть рекурентное выражение не удаётся упростить для нахождения итератора, (ВСЯ ПРОБЛЕМА - ЭТО ДВОЙНОЙ ФАКТОРИАЛ) и может поправите алгоритм double a,c,sum; sum = a=c=x; k=1; while (fabs(c)>esp) { c = ??; a*=-c; sum+=a;
C++ ошибки компиляции консоли с++ и zlib 1.1.3, visual studio 2010
Привет, скачал в интернете исходники zlib 1.1.3 (знаю, что последняя версия гораздо больше, но мне нужна именно эта) и в microsoft visual studio 2010 пытаюсь скомпилировать простенькое консольное с++ приложение, все файлы zlib включил в проект (архив со всем проектом http://www.fayloobmennik.net/1448112), но при компиляции лезет ряд ошибок, решение которых мне не удается найти в интернете: ...
C++ Рахработать программу 2 в 1! http://www.cyberforum.ru/cpp-beginners/thread432455.html
Разработать две программы. Первая принимает от пользователя два значения времени – строки вида ЦЦ.ЦЦ.ЦЦ, где Ц – это любая цифра из диапазона . Далее она вычисляет полное количество секунд, прошедших между двумя значениями времени, и выводит его на экран. Вторая программа запускает первую в качестве вновь созданного процесса. ЗАРАНЕЕ СпасибоУ) :)
C++ Программа на c++ ( надо проверить ) Программа должна сортировать числа в массиве по возрастанию! Не мало раз проверял в чем касяк, не могу найти=) Если найдете, буду рад услышать ошибку) Вот сама программа: // Программа служит для того,чтобы правильно группировать элементы массива #include <iostream> using namespace std; int massiv = {34,23,1,54,32}; // Обозначаем массив и заполняем его предворительно подробнее

Показать сообщение отдельно
vse
0 / 0 / 1
Регистрация: 04.01.2012
Сообщений: 8

Виртуальные функции. Программа вылетает с ошибкой. - C++

21.01.2012, 18:41. Просмотров 962. Ответов 8
Метки (Все метки)

Хотя дело может быть и не в виртуальных функциях.
В общем портянка такова:
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
#include <iostream>
#include <cstdlib>
#include <time.h>
 
using namespace std;
using std::srand;
using std::rand;
 
class Object {
      public:
             unsigned char pole;
             void init();
             void set(unsigned char val);
             virtual Object plus(Object a);
             virtual Object minus(Object a);
             virtual void show(int type);
};
 
class BitString : public Object {
      public:
             int size;
             unsigned char stroka[100];
             void init(int val);
             virtual BitString plus(BitString a); //or
             virtual BitString minus(BitString a); //and
             virtual void show();
};
 
class Hex : public Object {
      public:
             virtual Object plus(Object a);
             virtual Object minus(Object a);
             virtual void show(int type);
};
 
void Object::init(){
     pole=0;          
}
 
void Object::set(unsigned char val){
     pole=val;          
}
 
Object Object::plus(Object a){
       Object res;
       res.init();
       res.pole=pole+a.pole;
       return res;
}
       
Object Object::minus(Object a){
       Object res;
       res.init();
       res.pole=pole-a.pole;
       return res;
}
 
void Object::show(int type=0){
     char stroka[3];
     if (type==0) cout<<pole; 
     else { 
          sprintf(stroka,"%3d",pole);
          cout<<stroka;
     }
}
 
 
void BitString::init(int val){
     int i,bit;
     srand(time(NULL));
     pole=0;
     size=val;
     for (i=0;i<val;i++){
         bit=rand()%1000;
         stroka[i]=bit%2;
         }
}
     
BitString BitString::plus(BitString a){//or
          BitString res;
          int i,min;
 
          res.init(10);
          
        return res;
}
          
BitString BitString::minus(BitString a){//and
          
          BitString res;
          int i,min;
          
          res.init(10);
           return res;
          }
          
void BitString::show(){
     char symb[1];
     int i;
     
     for (i=0;i<size;i++){
          sprintf(symb,"%1d",stroka[i]);
          cout<<symb;
     }
     cout<<"\n";
     
}
 
 
 
int main() {
    Object a,b,c;
    BitString s1,s2;
    BitString s3;
    cout<<"===== Object =====\n";
    a.init();
    b.init();
    c.init();
    a.set(10);
    b.set(20);
    c=a.plus(b);
    cout<<"c=a+b "; c.show(1); cout<<" "; a.show(1); cout<<" ";b.show(1);cout<<"\n";
    c=a.minus(b);
    cout<<"c=a-b "; c.show(); cout<<" "; a.show(); cout<<" ";b.show();cout<<"\n";
 
    cout<<"===== BitString =====\n";
    s1.init(10);
    cout<<"s1:\n"; s1.show();
    s2.init(15);
    cout<<"s2:\n"; s2.show();
    s3.init(10);
    cout<<"s3:\n"; s3.show();    
    s3=s1.plus(s2); //ВОТ ТУТ выполнение программы завершается виндовым приложение будет закрыто, 
//с предложением отправить отчет
    cout<<"s3=s1 or s2\n"; s3.show();//или тут
  //  s3=s1.minus(s2);
  //  cout<<"s3=s1 and s2\n"; s3.show();
    
    
    
    cin.get();
    return 0;
}
при таком варианте
C++
1
2
3
4
5
6
7
8
9
10
11
     cout<<"===== BitString =====\n";
    s1.init(10);
    cout<<"s1:\n"; s1.show();
    s2.init(15);
    cout<<"s2:\n"; s2.show();
    s3.init(10);
    cout<<"s3:\n"; s3.show();    
    //s3=s1.plus(s2); 
   // cout<<"s3=s1 or s2\n"; s3.show();
  //  s3=s1.minus(s2);
  //  cout<<"s3=s1 and s2\n"; s3.show();
успевает до ошибки вывести на экран кучу символов, как если бы был бесконечный цикл в init(), потом вылетает с ошибкой.
Система винда xp sp2.
Работаю в Dev-C++ 4.9.9.2

Что это может быть?

Добавлено через 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
void BitString::init(int val){
     int i,bit;
     srand(time(NULL));
     pole=0;
     size=val;
     for (i=0;i<val;i++){
         bit=rand()%1000;
         stroka[i]=bit%2;
         }
}
...
void BitString::show(){
     char symb[1];
     int i;
     
     for (i=0;i<10;i++){
          sprintf(symb,"%1d",stroka[i]);
          cout<<symb;
     }
     cout<<"\n";
     
}
...
    cout<<"===== BitString =====\n";
    s1.init(10);
    cout<<"s1:\n"; s1.show();
    s2.init(15);
    cout<<"s2:\n"; s2.show();
    s3.init(10);
    cout<<"s3:\n"; s3.show();
Выходит без ошибки с такими данными:
Код
s1:
0000011100
s2:
0000011100
s3:
02533400000208253
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru