Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.04.2010, 20:39   #1
ArniLand
Пользователь
 
Регистрация: 27.06.2009
Сообщений: 89
По умолчанию Длина и сдвиг строки - Полиморфизм

Написал программу по полиморфизму и виртуальным функциям которая измеряет длину строки и сдвигает строку(чтобы первый символ стал последним). Но программа выдает не правильный результат. Помогите исправить пожалуйста, чтобы программа выводила правильный результат.

Результат:


Код программы:
Код:
//Row.h
#include "stdafx.h"
#include <string.h>
#include <iostream>
using namespace std;
class Row
{
public:
	virtual char LengthofRow() = 0;
	virtual int Right() = 0;
};

class Numeral : public Row
{
private:
	char *Str;

public:
	Numeral(char* pStr)
	{
		Str = pStr;
	}
	~Numeral();
	

	virtual char LengthofRow()
	{
		int Length;
		Length = strlen(Str);
		return Length;
	}

	virtual int Right()
	{
		int len = LengthofRow();
		char temp = Str[len - 1];
		for (int i = len - 1; i > 0; i--)
        Str[i] = Str[i - 1];
		Str[0] = temp;
		cout << " Sdvig vpravo na odin simvol -" << Str;
		return 0;
	}
};

class SmallLetters : public Row
{
private:
	char *Str_1;
public:
	SmallLetters(char* pStr_1)
	{
		Str_1 = pStr_1;
	}
	~SmallLetters();

	virtual char LengthofRow()
	{
		int Length_1;
		Length_1 = strlen(Str_1);
		return Length_1;
	}

	virtual int Right()
	{
		int len_1 = LengthofRow();
		char temp_1 = Str_1[len_1 - 1];
		for (int i = len_1 - 1; i > 0; i--)
        Str_1[i] = Str_1[i - 1];
		Str_1[0] = temp_1;
		cout << " Sdvig vpravo na odin simvol -" << Str_1;
		return 0;

	}
};
//main.cpp
#include "stdafx.h"
#include <string.h>
#include "Row.h"
#include <iostream>

using namespace std;

int main()
{
	char Num[40] = ("12345");
	char SmLet[45] = ("abcde");
	
	Numeral *objNum = new Numeral(Num);
	SmallLetters *objSm = new SmallLetters(SmLet);
	Row *obj[2] = {objNum, objSm};

	cout << "Dlina stroki " << obj[0]->LengthofRow()<<'\n';
	cout << "Sdvig " << obj[0]->Right()<<'\n';
	cout << "Dlina stroki " << obj[1]->LengthofRow()<<'\n';
	cout << "Sdvig " << obj[1]->Right()<<'\n';
	return 0;
}

Последний раз редактировалось ArniLand; 22.04.2010 в 20:47.
ArniLand вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Строки - сдвиг строки в право[C++] ArniLand Общие вопросы C/C++ 1 06.04.2010 15:47
Длина строки С++ ArniLand Общие вопросы C/C++ 7 25.03.2010 10:59
Циклический сдвиг строки матрицы Alex1991 Помощь студентам 1 14.04.2009 21:20
сдвиг строки Анастасия123456789 HTML и CSS 7 24.02.2009 18:10
Длина строки в си : char string[255] Mixasik Помощь студентам 1 26.11.2008 20:33