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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.94
ArniLand
4 / 4 / 0
Регистрация: 07.09.2009
Сообщений: 190
#1

Сдвиг строки вправо - C++

06.04.2010, 15:17. Просмотров 2446. Ответов 2
Метки нет (Все метки)

Нужно написать программу по наследованию которая измеряет длину строки и сдвигает строку в право на один символ. Программа выдает следующую ошибку:
variant 11 nasledovanie.cpp
d:\мои документы\visual studio 2008\projects\variant 11 nasledovanie\variant 11 nasledovanie\variant 11 nasledovanie.cpp(14) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
d:\мои документы\visual studio 2008\projects\variant 11 nasledovanie\variant 11 nasledovanie\variant 11 nasledovanie.cpp(21) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
main.cpp
d:\мои документы\visual studio 2008\projects\variant 11 nasledovanie\variant 11 nasledovanie\main.cpp(11) : error C2248: 'Row2::Row2' : cannot access private member declared in class 'Row2'
d:\мои документы\visual studio 2008\projects\variant 11 nasledovanie\variant 11 nasledovanie\row.h(13) : see declaration of 'Row2::Row2'
d:\мои документы\visual studio 2008\projects\variant 11 nasledovanie\variant 11 nasledovanie\row.h(11) : see declaration of 'Row2'
d:\мои документы\visual studio 2008\projects\variant 11 nasledovanie\variant 11 nasledovanie\main.cpp(12) : error C2248: 'Row2::Sort' : cannot access private member declared in class 'Row2'
d:\мои документы\visual studio 2008\projects\variant 11 nasledovanie\variant 11 nasledovanie\row.h(15) : see declaration of 'Row2::Sort'
d:\мои документы\visual studio 2008\projects\variant 11 nasledovanie\variant 11 nasledovanie\row.h(11) : see declaration of 'Row2'
Я что то нахожу приватного члена описанного в классе Row2. Подскажите пожалуйста что я не правильно написал. Также просьба проверить правильно ли я написал цикл который сдвигает строку вправо на один символ.

Код программы:
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
//Row.h
class Row
{
protected:
    char *Str;
public:
    Row(char* pS);
    ~Row();
    int LengthStr();
};
 
class Row2 : public Row//и посылает сюда
{
    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;
}
 
Row::LengthStr()
{
    int Length;
    Length = strlen(Str);
    return Length;
}
 
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;
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.04.2010, 15:17     Сдвиг строки вправо
Посмотрите здесь:

Сдвиг символов строки вправо - C++
собственно задача - сдвинуть строку на 2 символа вправо void main() { char a; char b; char l,c,y; int i=0; ...

Сдвиг числа вправо - C++
Помогите, мне нужно реализовать машинный алгоритм умножения чисел. Первое число нужно сдвигать постоянно вправо и выводить на экран. Данный...

Циклический сдвиг вправо - C++
Нужно сделать цеклический сдвиг машинного слова на 1 байт влево, через union и через побитовые операции. Вот так я пишу побитовый сдвиг ...

Циклический сдвиг массива вправо - C++
дан двумерный массив MxN нужно осуществить поэлементный сдвиг вправо на 1 элемент

круговой сдвиг массива вправо - C++
Напишите программу которая принимает двухмерный массив целых чисел и количество сдвигов и выполняет круговой сдвиг массива вправо. ...

Сдвиг массива вправо на K позиций - C++
Даны натуральные числа N, K и массив из N целых чисел. Требуется, не используя дополнительные массивы, циклически сдвинуть элементы...

Сдвиг элементов массива вправо - C++
Добрый вечер всем. У меня возник такой вопрос. Можно ли сдвинуть элементы массива вправо на одну позицию, при это цикл начинать не с...

Побитовый сдвиг влево и вправо - C++
Что выполнится быстрее - сдвиг влево или сдвиг вправо? И как замерить время выполнения каждой из операций в коде? Добавлено через 2...

Осуществить сдвиг влево/ вправо элементов - C++
Разработать подпрограммы (функции или процедуры) для следующих алгоритмов над массивом. Входным параметром подпрограмм является...

Одномерный массив. Циклический сдвиг вправо - C++
Дан массив A размера N и целое число K (1 ≤ K ≤ 4, K &lt; N). Осущест- вить циклический сдвиг элементов массива вправо на K позиций (при...

Массивы: переворот, сдвиг вправо, перестановка - C++
Здравствуйте. Не могу разобраться с задачками. Пожалуйста, помогите. 1) 12345 - 54321 #include &lt;iostream&gt; using namespace std; int...

Сдвиг элементов вправо на один символ - C++
Дано некоторое слово. Написать функцию, которая возвращает слово, полученное из исходного в результате сдвига его элементов вправо на один...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
QWAN
58 / 57 / 1
Регистрация: 02.09.2008
Сообщений: 181
06.04.2010, 18:47     Сдвиг строки вправо #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Для начала по ошибкам. В описании второго класса ты пропустил public: (поэтому не было доступа к приватным функциям)

C++
1
2
3
4
5
6
class Row2 : public Row//и посылает сюда
{     public:
        Row2(char* pS) : Row(pS) {};
        ~Row2();
int Sort();
};
Далее в файле //.cpp ты забыл добавить (int) перед функциями
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int Row::LengthStr()
 
int Row2::Sort()
 
 
 
int main()
{         char pL[40] = ("abcdefg");
        cout <<pL<< "\n";
        Row2 *pS = new Row2(pL);
        pS->Sort();//ошибка посылает на эту строку        
        cout << "Dlina stroki - " <<pS->LengthStr();
        cout << "\n";
        int a;//эта переменная только для задержки
        cin >>a;//эта переменная только для задержки
        return 0;
}
Цикл скорее всего неправильный
начальное значение - abcdefg
то что получилось - gbcdefa

Добавлено через 2 часа 37 минут
Если я правильно понял условия задачи
исходное слово - abcdefg (7)
сдвиг вправо на 1 символ - bcdefg (6)

то вот код, работает
C++
1
2
for (int i = 0; i < len ; i++)
swap (Str[i], Str[i + 1]);
ISergey
06.04.2010, 19:06     Сдвиг строки вправо
  #3

Не по теме:

QWAN, Про тег code или С++ не забываем!.

Yandex
Объявления
06.04.2010, 19:06     Сдвиг строки вправо
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru