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

Сортировка символов в строке, виртуальные функции - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
Leval
Сообщений: n/a
31.05.2011, 00:58     Сортировка символов в строке, виртуальные функции #1
Всем привет! Помогите пожалуйста, нужно написать лабу на С++: базовый класс "строки" с виртуальной функцией сортировки строки с выводом результата. Производный класс "Большие буквы" с вирт. функцией сортировки по возрастанию, и произв. класс "Маленькие буквы" с вирт. функцией сортировки по убыванию. Нужно использовать полиморфизм. Так, как я пробовал, не получается, файл компилируется но на этапе выполнения выдаёт исключительную ситуацию:
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
#include "stdafx.h"
#include "math.h"
#include <iostream>
#include <string.h>
 
class Line {
public: Line() {}
virtual void sort(char *S)
{
int n=strlen(S);
char t;
for (int i=0; i<n; i++) {
int j=i+1;
if (S[i]!=S[j])
{
t=S[i];
S[i]=S[j];
S[j]=t;}
}
printf(S);
}
};
 
class CapitalLet: public Line {
public: CapitalLet (){}
char* S;
virtual void sort(char *S)
{
char t;
int n=strlen(S);
for (int i=0; i<n; i++) {
int j=i+1;
if (S[i]<S[j])
{
t=S[i];
S[i]=S[j];
S[j]=t;
}}
printf(S);
}};
 
class SmallLet: public Line {
public: SmallLet(){}
char* S;
virtual void sort(char *S)
{
char t;
int n=strlen(S);
for (int i=0; i<n; i++) {
int j=i+1;
if (S[i]>S[j])
{
t=S[i];
S[i]=S[j];
S[j]=t;
}}
printf(S);
}};
 
 
int _tmain(int argc, _TCHAR* argv[])
{
Line ob;
Line *p;
CapitalLet myC;
myC.S="fghjhgfvbnmkkabghbjn";
SmallLet myS;
myS.S="jnhgvcfdxszdfghjklbh";
p=&ob;
p->sort(myC.S);
p=&myS;
p->sort(myS.S);
 
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.05.2011, 00:58     Сортировка символов в строке, виртуальные функции
Посмотрите здесь:

C++ виртуальные и чисто виртуальные функции
C++ Виртуальные функции
C++ Виртуальные функции
Виртуальные функции C++
сортировка символов в строке C++
C++ Найти количество цифр в строке символов, используя функции
C++ виртуальные функции
C++ Как работает функции подсчёта символов в строке

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gooseim
Эксперт C++
500 / 404 / 35
Регистрация: 23.09.2010
Сообщений: 1,139
31.05.2011, 10:57     Сортировка символов в строке, виртуальные функции #2
Цитата Сообщение от Leval Посмотреть сообщение
for (int i=0; i<n; i++) { int j=i+1;
S[j] выходит за границы массива.

Добавлено через 3 минуты
во-вторых, myC.S = "..." нельзя писать. Надо выделить память под S с сделать strcpy.
Yandex
Объявления
31.05.2011, 10:57     Сортировка символов в строке, виртуальные функции
Ответ Создать тему
Опции темы

Текущее время: 14:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru