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

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

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

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

07.12.2012, 23:44. Просмотров 690. Ответов 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 минут
Поднимаю.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.12.2012, 23:44     Метод класса строки
Посмотрите здесь:

метод класса - C++
Такой вопрос. Необходимо сделать метод класса который бы оперировал с двумя объектами одновременно. В одной книге был пример сравнения двух...

Метод класса - C++
Есть кусок кода: namespace Head { using namespace std; // методы класса void Csk::set(char nazv1,char prepod1,int...

Метод класса - C++
Что дает спецификатор const в методе? char *getBuffer() const { return m_buffer; };

Указатель на метод класса - C++
Приветствую. Нужна помощь. Не работает указатель в данной программе: #include <iostream> #include <string.h> using namespace std; ...

Указатель на метод класса - C++
Как сделать указатель на метод класса А, который наследует класс В в классе В. class A : B { public: double...

Указатель на метод класса - C++
Есть для этого какой-нибудь инструмент? Интересует именно не ссылка, а указатель. Хочется примерно следующего: typedef...

Не работает метод класса - C++
class Lines { private: char *line; public: void setLine(char *l) { int len = strlen(l);

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Dani
1300 / 637 / 56
Регистрация: 11.08.2011
Сообщений: 2,280
Записей в блоге: 2
Завершенные тесты: 1
07.12.2012, 23:50     Метод класса строки #2
А что требуется?
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++;
            }
MrGluck
Модератор
Эксперт CЭксперт С++
7183 / 4349 / 634
Регистрация: 29.11.2010
Сообщений: 11,839
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--)
В чем логика?
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", то все равно ошибка.
MrGluck
Модератор
Эксперт CЭксперт С++
7183 / 4349 / 634
Регистрация: 29.11.2010
Сообщений: 11,839
08.12.2012, 01:02     Метод класса строки #6
9cbka, а
C++
1
for(i=0;i==strlen(ss);i++)
вы исправили?
И что за ошибка?
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++)
вы исправили?
И что за ошибка?
Нет, не исправил. Я хочу реализовать поставленное условие так: начиная с посл. символа считываю до первого пробела, а потом переворачиваю строку.
MrGluck
Модератор
Эксперт CЭксперт С++
7183 / 4349 / 634
Регистрация: 29.11.2010
Сообщений: 11,839
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;
}
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;
}
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();
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.12.2012, 17:50     Метод класса строки
Еще ссылки по теме:

Не работает метод класса - C++
#define _CRT_SECURE_NO_WARNINGS #include &lt;iostream&gt; using namespace std; class Lines { private: char *line;

Указатель на метод класса! - C++
Ответьте пожалуйста на такой вопрос:Возможна ли такая ситуация и как ее реализовать правильно? Мне надо использовать функцию(void...

Метод за типом класса - C++
Объясните вот эту строку: dist3 = dist1.add_dist(dist2); и эту: Distance Distance::add_dist(Distance d2)

Ссылка на метод класса - C++
если кратко то задача такова надо передать адрес метода класа.как это можно сделать?

Метод дружественного класса - C++
Нужно сделать такую ​​задачу, но дойшовшы к этому: выбрать заданное число N абитуриентов, имеющих высокий средний балл (метод...


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

Или воспользуйтесь поиском по форуму:
9cbka
2 / 2 / 0
Регистрация: 13.10.2012
Сообщений: 60
09.12.2012, 17:50  [ТС]     Метод класса строки #11
Поднимаю
Yandex
Объявления
09.12.2012, 17:50     Метод класса строки
Ответ Создать тему
Опции темы

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