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

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

Восстановить пароль Регистрация
 
Laurensii
0 / 0 / 0
Регистрация: 29.05.2012
Сообщений: 4
24.09.2013, 19:07     работа со строками, ошибка в коде #1
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");
 }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.09.2013, 19:07     работа со строками, ошибка в коде
Посмотрите здесь:

работа со строками C++
Работа со строками C++
Работа со строками C++
C++ Работа со строками, вылетает ошибка
Все та же работа со строками (ошибка) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
VEINHORN
542 / 91 / 22
Регистрация: 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();
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
24.09.2013, 21:00     работа со строками, ошибка в коде #3
Цитата Сообщение от MCKLAS Посмотреть сообщение
Чтобы обращаться к методам этих объектов нужно выделить под них память в Вашем случае.
Необязательно. В данном случае, объекты создаются на стеке.
VEINHORN
542 / 91 / 22
Регистрация: 16.12.2011
Сообщений: 317
24.09.2013, 23:43     работа со строками, ошибка в коде #4
alsav22, они не создаются, потому что код не компилируется..
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
25.09.2013, 01:02     работа со строками, ошибка в коде #5
Цитата Сообщение от MCKLAS Посмотреть сообщение
alsav22, они не создаются, потому что код не компилируется..
И что? Какое это имеет отношение к способам созданий объектов? Компилируется, не компилируется (чтобы этот код компилировался, достаточно определить конструктор по умолчанию) - это один вопрос, а как можно создавать объекты класса - это другой вопрос. Вот об этом я и написал.
VEINHORN
542 / 91 / 22
Регистрация: 16.12.2011
Сообщений: 317
25.09.2013, 01:23     работа со строками, ошибка в коде #6
alsav22, Вы пишите, "в данном случае" , в данном случае код не компилируется. Не знаю, чем Ваш пост может помочь ТС.
alsav22
25.09.2013, 01:30     работа со строками, ошибка в коде
  #7

Не по теме:

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

Yandex
Объявления
25.09.2013, 01:30     работа со строками, ошибка в коде
Ответ Создать тему
Опции темы

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