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

Циклический сдвиг, ошибка вывода. - C++

Восстановить пароль Регистрация
 
Macbeth
0 / 0 / 0
Регистрация: 29.03.2010
Сообщений: 3
29.03.2010, 20:41     Циклический сдвиг, ошибка вывода. #1
Задание сдвинуть строку вправо на 1 символ. В консоле после вывода пусто (выглядит так: "row has been sorted: ").
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
#include "stdafx.h"
#include <iostream>
#include <iostream>
#include "row.h"
using namespace std;
 
void main()
{
    char str[10] = ("abcde");
    DRow *v = new DRow(str);
 
    cout << "\r\n";
    cout << "Kolichestvo simvolov v stroke " << v->Lenght()<<endl;
    cout << "\r\n";
 
    v->SortSymb();
//----------------class------------------
class Row
{
protected:
    char *data;
public:
    Row(char *v);
    ~Row();
    int Lenght();
};
 
class DRow: public Row
{
public: 
    DRow(char *v): Row(v){};
    ~DRow();
    char SortSymb();
};
//---------------methods------------------
#include "stdafx.h"
#include <string.h>
#include "row.h"
#include <iostream>
using namespace std;
 
Row::Row(char *v)
{
    data = v;
}
 
int Row::Lenght()
{
    int len;
    len = strlen(data);
    return len;
}
 
char DRow::SortSymb()
{
    char tmp;
    //char c;
 
    //data[strlen(data)] = c;
 
    for(int i = 0; i < 1; i++)
    {
        tmp = data[strlen(data)];
        for(int j = strlen(data); j > 0; j--)
        {
            data[0] = tmp;
        }
    }
    //data[0] = c;
    cout<<"row has been sorted: "<<data<<endl;
    return 0;
}
}
Подскажите пожалуйста где я ошибся.

Добавлено через 3 часа 12 минут
up
Цикл переделывал с Паскаля.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
schdub
 Аватар для schdub
2902 / 1246 / 222
Регистрация: 19.01.2009
Сообщений: 3,215
Завершенные тесты: 1
30.03.2010, 01:06     Циклический сдвиг, ошибка вывода. #2
Если на примере у нас есть строка "abcde", какая должна получиться?
Macbeth
0 / 0 / 0
Регистрация: 29.03.2010
Сообщений: 3
30.03.2010, 09:22  [ТС]     Циклический сдвиг, ошибка вывода. #3
eabcd. Я забыл написать, что надо перенести последний символ на место первого.
Nameless One
Эксперт С++
 Аватар для Nameless One
5754 / 3403 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
30.03.2010, 09:30     Циклический сдвиг, ошибка вывода. #4
Удобнее решать с помощью односвязного кольцевого списка
Macbeth
0 / 0 / 0
Регистрация: 29.03.2010
Сообщений: 3
30.03.2010, 09:36  [ТС]     Циклический сдвиг, ошибка вывода. #5
Уже разобрался, получилось так.

C++
1
2
3
4
5
6
7
tmp = data[strlen(data) - 1];
        for(int j = strlen(data) - 1; j > 0; j--)
        {
            data[j] = data[j-1];
        }
    
    data[0] = tmp;
Yandex
Объявления
30.03.2010, 09:36     Циклический сдвиг, ошибка вывода.
Ответ Создать тему
Опции темы

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