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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.03.2010, 21:29   #1
ArniLand
Пользователь
 
Регистрация: 27.06.2009
Сообщений: 89
По умолчанию Строки - Наследование [C++]

Нужно написать программу по такому заданию
1. Описание базового класса:
Строки: значение строки, конструктор с параметром, метод вычисления длины строки

2. Описание производного класса:
Цифровые строки: конструктор с параметром, метод который разворачивает цифровую строку в обратную сторону, метод выведения строки

3. Описать классы, объект производного класса; вывести строку; вычислить и вывести длину

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

Код программы:
Код:
//Line.h
Class Line
{
protected:
    char *Str;
public:
    Line(char* K);
    ~Line();
    int LengthStr();
};
Class Line2: public Line
{
public:
    Line2(char* K) : Line(K) {};
    ~Line2();
    char OppositeStr();
};
//файл .cpp
#include "stdafx.h"
#include <iostream>
#include <string.h>
#include <line.h>
using namespace std;
Line::Line(char* K)
{
    Str = K;
}
int Line::LengthStr()
{
    int Length;
    Length = strlen(Str);
    return Length;
}
char Line2::OppositeStr()//вот метод который не знаю как реализовать
{
    cout << "Обратный цифровой порядок - " << Str;
}
//main.cpp
#include <iostream>
#include <string.h>
#include "Stroka.h"
using namespace std;
void main()
{
    char L[40] = ("12345");
    Line2 *K = new Line2(L);
    K->OppositeStr();
    cout << "\r\n";
    cout << "Длинна строки - " << K->LengthStr();
    cout << "\r\n";
}
ArniLand вне форума Ответить с цитированием
Старый 29.03.2010, 21:40   #2
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Код:
char* Line2::OppositeStr()//вот метод который не знаю как реализовать
{
int len = LengthStr();
for (int i = 0; i < len / 2; i++)
 swap(Str[i], Str[len - i]);
cout << "Обратный цифровой порядок - " << Str;
return Str;
}
Или уж не знаю, какой вы хотите тип функции. Можно void.
swap для краткости не стал расписывать, но вы поняли, что я имел в виду?
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 29.03.2010, 21:44   #3
ArniLand
Пользователь
 
Регистрация: 27.06.2009
Сообщений: 89
По умолчанию

Гром, спасибо. Как я понял вы тут сдвигаете строки влево?
ArniLand вне форума Ответить с цитированием
Старый 29.03.2010, 22:23   #4
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Нет, меняю местами первый символ с последним (swap), второй с предпоследним и т.д.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Наследование Сергей089 Помощь студентам 6 07.02.2010 12:04
Наследование на C++ dziga1989 Помощь студентам 5 22.10.2009 11:25
Наследование alex_triton Общие вопросы C/C++ 0 19.10.2009 20:25
Наследование beregok Общие вопросы C/C++ 1 04.07.2009 22:39
Наследование Кирилл13 Общие вопросы C/C++ 1 11.11.2008 14:47