С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 29.05.2012
Сообщений: 4
1

работа со строками, ошибка в коде

24.09.2013, 19:07. Показов 537. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
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
#include <iostream>
#include <cstring>
using namespace std;
class str{
    char *a;
    int n;
public:
    str();
    str(int k);
    str(const str &z);
    ~str();
    str operator =(const str &p);
    str operator +(str z);
    void in();
    void out();
    void del(int k);
    int sr(str z);
};
str str:: operator=(const str &p){
    if(this!=&p){
        delete[]a;
        n=p.n;
    a=new char[p.n];
    for(int i=0;i<p.n;++i)
        a[i]=p.a[i];
    }
    return *this;
}
str::str(int k){
    n=k;
a=new char[n];
for(int i=0;i<n;++i)
    a[i]=1;
}
str::str(const str &z){
    n=z.n;
    a=new char[n];
    for(int i=0; i<n;++i)
        a[i]=z.a[i];
}
str::~str(){
    for(int i=0;i<n;++i){
        a[i]=0;
    }
    delete[]a;
    a=0;
    n=0;
}
void str::in(){
    char str[512];
    cin.getline(str,512);
    delete [] a;
    n=strlen(str);
    a=new char[n];
    memcpy(a,str,n);
    
}
void str::out(){
    int i,j;
    for(i=0;a[i]!=1;++i){}
    for(j=0;j<i;++j)
        cout<<a[j];
}
 void str::del(int k){
    int i=k-1;
    for(i;i<n-1;++i)
        a[i]=a[i+1];
 }
 str str::operator + ( str z){
    str c(n+z.n);
    int i,j,q;
    for(i=0;a[i]!=1;++i);
    for(j=0;z.a[j]!=1;++j);
    for(q=0;q<i;++q){
        c.a[q]=a[q];
    }
    for(q=0,i;q<j;++q,++i){
        c.a[i]=z.a[q];
    }
    
    return c;}
 
 int str::sr(str z){
     return strcmp(a,z.a);
 }
 void main(){
     str x, b;
     int k, p;
     b.in();
     x=b+b;
     b.out();
     cout<<endl;
     x.out();
     cout<<endl;
     cout<<"nomer- ";
     cin>>k;
     b.del(k);
     b.out();
     cout<<endl;
     p=b.sr(x);
     if(p)
         cout<<"false"<<endl;
     else
         cout<<"true"<<endl;
     system("pause");
 }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.09.2013, 19:07
Ответы с готовыми решениями:

Ошибка в коде со строками
#include &lt;iostream.h&gt; #include &lt;istream.h&gt; #include &lt;string.h&gt; ...

Все та же работа со строками (ошибка)
#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; using namespace...

Работа со строками, вылетает ошибка
Здравствуйте товарищи! В общем задание такого, посчитать слова в строке, у которых первая и...

Ошибка в коде (работа с массивами)
помогите исправить ошибку в коде немогу понять в чем проблема #include &lt;iostream&gt; #include...

6
544 / 93 / 49
Регистрация: 16.12.2011
Сообщений: 317
24.09.2013, 20:04 2
А что вы пытаетесь сделать в этой строчке?
C++
1
str x, b;
Чтобы обращаться к методам этих объектов нужно выделить под них память в Вашем случае.

C++
1
2
str *x = new str();
str *b = new str();
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
24.09.2013, 21:00 3
Цитата Сообщение от MCKLAS Посмотреть сообщение
Чтобы обращаться к методам этих объектов нужно выделить под них память в Вашем случае.
Необязательно. В данном случае, объекты создаются на стеке.
0
544 / 93 / 49
Регистрация: 16.12.2011
Сообщений: 317
24.09.2013, 23:43 4
alsav22, они не создаются, потому что код не компилируется..
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
25.09.2013, 01:02 5
Цитата Сообщение от MCKLAS Посмотреть сообщение
alsav22, они не создаются, потому что код не компилируется..
И что? Какое это имеет отношение к способам созданий объектов? Компилируется, не компилируется (чтобы этот код компилировался, достаточно определить конструктор по умолчанию) - это один вопрос, а как можно создавать объекты класса - это другой вопрос. Вот об этом я и написал.
0
544 / 93 / 49
Регистрация: 16.12.2011
Сообщений: 317
25.09.2013, 01:23 6
alsav22, Вы пишите, "в данном случае" , в данном случае код не компилируется. Не знаю, чем Ваш пост может помочь ТС.
0
alsav22
25.09.2013, 01:30     работа со строками, ошибка в коде
  #7

Не по теме:

Цитата Сообщение от MCKLAS Посмотреть сообщение
Не знаю, чем Ваш пост может помочь ТС.
Я не ТС написал, а вам.
Цитата Сообщение от MCKLAS Посмотреть сообщение
А что вы пытаетесь сделать в этой строчке?
В этой строчке создаются два объекта класса str.
Цитата Сообщение от MCKLAS Посмотреть сообщение
Чтобы обращаться к методам этих объектов нужно выделить под них память в Вашем случае.
Это про что, вообще? Чушь не пишие. Память под объекты x и b выделена.

0
25.09.2013, 01:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.09.2013, 01:30
Помогаю со студенческими работами здесь

Работа со структурой. Ошибка в коде
Задача: Отсортировать студентов по оценке по первому предмету. Вывести на экран фамилии и даты...

Работа со строками. Функции работы со строками
Дана строка символов. В заданном тексте определить позицию первой точки ‘ . ‘.

Бинарное дерево и работа с текстами. В коде возникает ошибка с работой памяти
#include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;map&gt; #include &lt;string&gt; int main() { ...

работа со строками, ошибка
2.Строка содержит английский текст. Подсчитать количество слов, начинающихся на заданную букву...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru