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

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

Войти
Регистрация
Восстановить пароль
 
9cbka
2 / 2 / 0
Регистрация: 13.10.2012
Сообщений: 60
#1

Метод класса строки - C++

07.12.2012, 23:44. Просмотров 703. Ответов 10
Метки нет (Все метки)

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
//Длина L кратна 4-м, то выделяется подстрока после последнего пробела;
    void String::run()
    {
        unsigned int i=0, j=0;
        char *ss;
        ss = new char [MAX];
        ss[0]='\0';
 
        if(fmod(strlen(str),4)==0) 
        {       
            //zanosim simvoli v obratno poryadke
            for(i=strlen(str);i!='s';i--)
            {
                ss[j]=str[i];
                j++;
            }
 
            //stroka-perevertish
            for(i=0;i=strlen(ss);i++)
            {
                str[j]=ss[i];
                j++;
            }
            
            delete [] ss;
        }
Добавлено через 14 минут
}
//Не скопировал сюда

Добавлено через 23 часа 28 минут
Поднимаю.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.12.2012, 23:44
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Метод класса строки (C++):

Как передать в метод класса Menu указатель на метод дочернего класса? - C++
Как передать в метод базового класса указатель на метод дочернего: class Menu() { protected: setCallback(*********); //...

Как описать метод класса? Как двумя способами описать инлайнируемый метод класса? Что такое this? - C++
Раздел 1. Строки: нужен фрагмент кода. Обязательно используйте функции для работы со строками. Как найти адрес последнего символа строки?...

Создать для класса виртуальный метод, возвращающий уникальный идентификатор класса - C++
В курсаче по ООП сказано создать для класса виртуальный метод,возвращающий уникальный идентификатор класса. Вопрос в том, что это такое?

Может ли метод родительского класса обратиться к полю дочернего класса - C++
Может ли метод родительского класса обратиться к полю дочернего класса?

Как в методе класса вызвать другой метод того же класса? - C++
class mate { public: int AplusB(int A, int B) { return A+B; } int AplusBplusC(int A, int B, int C)

Может ли метод класса возвращать экземпляр этого же класса? - C++
такой вопрос, реально что бы функция класса имела тип класса(возвращала класс), то есть типа так: class c1{ c1 f1(); } если да, то...

10
Dani
1393 / 637 / 57
Регистрация: 11.08.2011
Сообщений: 2,282
Записей в блоге: 2
Завершенные тесты: 1
07.12.2012, 23:50 #2
А что требуется?
0
9cbka
2 / 2 / 0
Регистрация: 13.10.2012
Сообщений: 60
08.12.2012, 00:12  [ТС] #3
Цитата Сообщение от Dani Посмотреть сообщение
А что требуется?
//Метод решает задачу: если длина строки L кратна 4-м, то выделяется подстрока после последнего пробела;

Добавлено через 19 минут
Собственно ошибка в этой строчке:
C++
1
2
3
4
5
6
            //zanosim simvoli v obratno poryadke
            for(i=strlen(str);i!='s';i--)
            {
                ss[j]=str[i];
                j++;
            }
0
MrGluck
Модератор
Эксперт CЭксперт С++
7417 / 4532 / 671
Регистрация: 29.11.2010
Сообщений: 12,281
08.12.2012, 00:32 #4
C++
1
for(i=0;i=strlen(ss);i++)
мб
C++
1
for(i=0;i==strlen(ss);i++)
?

Добавлено через 1 минуту
и i=strlen(str)
при обращении к массиву выйдет за его границы. надо i = strlen(str) - 1

Добавлено через 3 минуты
Стоп, я не понял. Вы интовую переменную сравниваете с char? И у вас это еще вдобавок как условие в цикле?
C++
1
for(i=strlen(str);i!='s';i--)
В чем логика?
0
9cbka
2 / 2 / 0
Регистрация: 13.10.2012
Сообщений: 60
08.12.2012, 00:53  [ТС] #5
Цитата Сообщение от MrGluck Посмотреть сообщение
мб
C++
1
for(i=0;i==strlen(ss);i++)
?

Добавлено через 1 минуту
и i=strlen(str)
при обращении к массиву выйдет за его границы. надо i = strlen(str) - 1

Добавлено через 3 минуты
Стоп, я не понял. Вы интовую переменную сравниваете с char? И у вас это еще вдобавок как условие в цикле?

В чем логика?
Нет, не 's'. Я его случайно добавил. Должно быть i!=' '.

Добавлено через 4 минуты
Даже если и "i = strlen(str) - 1", то все равно ошибка.
0
MrGluck
Модератор
Эксперт CЭксперт С++
7417 / 4532 / 671
Регистрация: 29.11.2010
Сообщений: 12,281
08.12.2012, 01:02 #6
9cbka, а
C++
1
for(i=0;i==strlen(ss);i++)
вы исправили?
И что за ошибка?
0
9cbka
2 / 2 / 0
Регистрация: 13.10.2012
Сообщений: 60
08.12.2012, 02:12  [ТС] #7
Цитата Сообщение от MrGluck Посмотреть сообщение
9cbka, а
C++
1
for(i=0;i==strlen(ss);i++)
вы исправили?
И что за ошибка?
Нет, не исправил. Я хочу реализовать поставленное условие так: начиная с посл. символа считываю до первого пробела, а потом переворачиваю строку.
0
MrGluck
Модератор
Эксперт CЭксперт С++
7417 / 4532 / 671
Регистрация: 29.11.2010
Сообщений: 12,281
08.12.2012, 02:38 #8
Цитата Сообщение от 9cbka Посмотреть сообщение
Нет, не исправил. Я хочу реализовать поставленное условие так: начиная с посл. символа считываю до первого пробела, а потом переворачиваю строку.
Вам твердят, что неверно же.
У вас в проверке на условие выхода из цикла не выполняется сравнение i и strlen(ss), а идет присваивание второго первому.

Добавлено через 15 минут
9cbka, это поможет тебе в решении:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <cstring>
 
 
int main()
{
    char x[20];
    std::cin.getline(x, 20);
    char y[20];
    int j = 0;
    for (int i = strlen(x) - 1; i >=0 && x[i] != ' '; i--)
        y[j++] = x[i];
    std::cout << y;
}
0
activnaya
255 / 45 / 2
Регистрация: 24.11.2012
Сообщений: 466
08.12.2012, 02:50 #9
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <string>
 
int main()
{
    std::string str("this is a string");
    size_t found = str.find_last_of (" ");
    std::cout << str.substr (found + 1) << '\n';
 
    return 0;
}
0
9cbka
2 / 2 / 0
Регистрация: 13.10.2012
Сообщений: 60
08.12.2012, 03:24  [ТС] #10
Цитата Сообщение от MrGluck Посмотреть сообщение
Вам твердят, что неверно же.
У вас в проверке на условие выхода из цикла не выполняется сравнение i и strlen(ss), а идет присваивание второго первому.

Добавлено через 15 минут
9cbka, это поможет тебе в решении:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <cstring>
 
 
int main()
{
    char x[20];
    std::cin.getline(x, 20);
    char y[20];
    int j = 0;
    for (int i = strlen(x) - 1; i >=0 && x[i] != ' '; i--)
        y[j++] = x[i];
    std::cout << y;
}
По этому коду, должно быть:
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
 void String::run()
    {
        unsigned int i=0, j=0;
        char *ss;
        ss = new char [MAX];
        ss[0]='\0';
 
        if(fmod(strlen(str),4)==0) 
        {       
            //zanosim simvoli v obratno poryadke
            for(i=strlen(str)-1;(i>=0&&str[i]!=' ');i--)
            {
                ss[j]=str[i];
                j++;
            }
 
            //stroka-perevertish
            for(i=0;i=strlen(ss);i++)
            {
                str[j]=ss[i];
                j++;
            }
            
            delete [] ss;
        }
}
Но это не верно. Вот весь код программы:
Кликните здесь для просмотра всего текста
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
#include <iostream.h>
#include <istream.h> //dlya cin.getline()
#include <string.h>
#include <conio.h>
#include <fstream.h>
#include <math.h> 
 
///////////////////////////////////////
const int MAX=255;
 
class String
{
    private:
        char *str;
        char *strend;
    public:
        String()
        {
            str = new char [MAX];
            str[0]='\0';
            strend = new char [MAX];
            strend[0]='\0';
            //cout << "Constructor!";
        }
//-------------------------------------
        void set();//metod vvoda ish. stroki
        void print();//metod pechati
        void run();//metod vipolneniya zadachi 
        void printend();//metod pechati strend
//-------------------------------------
        String& operator= (String&ss)
        {
            strcpy(strend, ss.str);
            return *this;
        }
//-------------------------------------
        ~String()
        {
            delete []str;
            delete []strend;
            //cout << "Destructor!";
        }
};
//-------------------------------------
 void String::run()
    {
        unsigned int i=0, j=0;
        char *ss;
        ss = new char [MAX];
        ss[0]='\0';
 
        if(fmod(strlen(str),4)==0) 
        {       
            //zanosim simvoli v obratno poryadke
            for(i=strlen(str)-1;(i>=0&&str[i]!=' ');i--)
            {
                ss[j]=str[i];
                j++;
            }
 
            //stroka-perevertish
            for(i=0;i=strlen(ss);i++)
            {
                str[j]=ss[i];
                j++;
            }
            
            delete [] ss;
        }
}
//-------------------------------------
    void String::set()
    {
        cout << "Vvedite stroku: ";
        char *stroka = new char [MAX];
        stroka[0]='\0';
        cin.getline(stroka,MAX);
        for(unsigned int i=0;i<strlen(stroka);i++)
        {
            str[i] = stroka[i];
        }
        str[i]='\0';
        delete []stroka;
    }
//-------------------------------------
    void String::print()
    {
        ofstream file("file.txt", ios::app);
        for (unsigned int i=0; i<strlen(str); i++) 
        {
             cout << str[i];
        }
 
 
        file << endl;
        for (i=0; i<strlen(str); i++) 
        {
             file << str[i];
        }
    }
//-------------------------------------
    void String::printend()
    {
        cout << "\nSkopirovannaya stroka: ";
 
        for (unsigned int i=0; i<strlen(strend); i++) 
        {
             cout << strend[i];
        }
    }
//-------------------------------------
 
//////////////////////////////////////////////
void main(void)
{
    ofstream file("file.txt", ios::out);
 
    String s1,s2;
 
    s1.set();
    s1.print();
    s1.run();
    s1.print();
 
    s2=s1;
 
    s2.printend();
 
    cout << "\n" << endl;
 
    String *s3,*s4;
    s3=new String; s4=new String;
    s3->set();
    s3->print();
    s3->run();
    s3->print();
 
    *s4=*s3;
 
    s4->printend();
 
    cout << "\n" << endl;
 
    getch();
}
0
9cbka
2 / 2 / 0
Регистрация: 13.10.2012
Сообщений: 60
09.12.2012, 17:50  [ТС] #11
Поднимаю
0
09.12.2012, 17:50
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.12.2012, 17:50
Привет! Вот еще темы с ответами:

Чем отличается шаблонный метод класса от шаблонного класса? - C++
Чем отличается шаблонный метод класса от шаблонного класса???????ПЛИЗ!!!!Если можно немного ссылок на летературу

Как в классе А у объекта класса B вызвать метод класса B ? - C++
Есть Класс A и класс B . В классе B лежит объект типа ArrayList , назовём его arrayList, в этом же классе есть метод push() . Возможно ли в...

Как корректно передать в метод шаблонного класса объект шаблонного класса в качестве параметра? - C++
header.h template &lt;class T&gt; class MyVector { public: void swap(MyVector&lt;T&gt;Vector); } template &lt;class T&gt; void...

В конструкторе вложенного класса инициализируется приватное поле. Потом вызывается функция-метод этого класса и выводит значение этого поля НО НЕ ТО! - C++
Друзья! Почему так? #include &lt;windows.h&gt; #include &lt;iostream&gt; using namespace std; //Вот главный класс class A{ ...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

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