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

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

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

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

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

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

Неправильно выполняется программы, нужно чтобы строка сдвигалась на один символ в право. Проверьте пожалуйста цикл на правильность.
Код:
//Row.h
class Row
{
protected:
    char *Str;
public:
    Row(char* pS);
    ~Row();
    int LengthStr();
};
class Row2 : public Row
{
    
public:
Row2(char* pS) : Row(pS) {};
    ~Row2();
    int Sort();
};
//.cpp
#include "stdafx.h"
#include <iostream>
#include <string.h>
#include "Row.h"
using namespace std;
Row::Row(char *pS)
{
    Str = pS;
}
int Row::LengthStr()
{
    int Length;
    Length = strlen(Str);
    return Length;
}
int Row2::Sort()
{
    int len = LengthStr();
    for (int i = 0; i < len - 1; i++)//цикл который просьба проверить на правильность написания
        swap (Str[i], Str[len - i - 1]);
    cout << " Sdvig vpravo na odin simvol -" << Str;
    return 0;
}
//main.cpp
#include "stdafx.h"
#include <iostream>
#include <string.h>
#include "Row.h"
using namespace std;
int main()
{
    char pL[40] = ("abcdefg");
    Row2 *pS = new Row2(pL);
    pS->Sort();
    cout << "/r/n";
    cout << "Dlina stroki - " <<pS->LengthStr();
    cout << "/r/n";
    return 0;
}
ArniLand вне форума Ответить с цитированием
Старый 06.04.2010, 15:58   #2
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Честно говоря, не нашел взаимосвязи между "нужно чтобы строка сдвигалась на один символ в право", названием Sort и тем, что происходит в цикле)
У вас там вообще строка разворачивается задом наперед.
Если нужно, чтобы массив сдвигался циклически (последний символ стал первым), то что-то вроде этого:
Код:
int Row2::Right()
{
    int len = LengthStr();
    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;
}
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Строки - сдвиг строки в право[C++] ArniLand Общие вопросы C/C++ 1 06.04.2010 15:47
Циклический сдвиг строки матрицы Alex1991 Помощь студентам 1 14.04.2009 21:20
сдвиг строки Анастасия123456789 HTML и CSS 7 24.02.2009 18:10
Цикл с предусловием. ( цикл while) Цикл с постусловием. (цикл repeat ... until) Mr.User Помощь студентам 9 23.11.2007 01:34