Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.12.2009, 00:02   #1
TopoRRR
Пользователь
 
Регистрация: 14.12.2009
Сообщений: 10
По умолчанию найдите ошибку в коде

собственно вот задача, ниже код
нужен класс "строка", в котором, можно ввести некую строку, потом ввести символы для поиска, ввести новые символы, произвести замену выбранных символов на выбранные новые.
очень надеюсь на вашу помощь.

Код:
#include <iostream>
#include <string>
using namespace std;
///////////////////////////////////////////////////////////
class String
{
  private:
	  int size;

    enum { SZ = 100 };        // максимальный размер строки
    char str [ SZ ];          // сама строка
public:
  
   int main ( )
{
  string text, old, zam;

  cout << "vvedite text: ";
  cin >> text;
  cout << "vi vveli: " << text << endl;

  cout << "vvedite simvol dlya zameny: ";
  cin >> old;
  cout << "vvedite novii simvol: ";
  cin >> zam;

{
  string s1 (text);  //сам текст
  string s2 (old);   //то что надо поменять
  string s3 (zam);   //то на что меняем

  s1.replace ( s2 , s3 );        // замена

  cout << "text: " << s1 << endl;
}


  return 0;
   }
}
для кого-то это просто. я в тупике, спросить не у кого! то что написано делал на основе литературы.
заранее спасибо!

Последний раз редактировалось mihali4; 15.12.2009 в 00:12.
TopoRRR вне форума Ответить с цитированием
Старый 15.12.2009, 07:38   #2
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Не очень разбираюсь в С++, потому у меня возникло пару вопросов. Вам нужно разработать класс строки с нуля? Тогда настораживает
Код:
#include <string>
Далее Вы объявляете класс строки String, и делаете переменную s1 экземпляром данного класса. Пусть так, но в Вашем классе метод s1.replace не определен. Либо должна возникнуть ошибка, либо s1 определеяется как строка из существующей библиотеки, а это не соответствует заданию.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 15.12.2009, 08:36   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Тут вся программа неправильная...
Тут заново все переделывать нужно и совсем по другому.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.12.2009, 09:01   #4
TopoRRR
Пользователь
 
Регистрация: 14.12.2009
Сообщений: 10
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Тут вся программа неправильная...
Тут заново все переделывать нужно и совсем по другому.
поробовал занаво, один фиг не компилится!!!!!

Код:
#include <iostream>
#include <cstring>

using namespace std;
class String
{
private:
string str, old, zam, pos;
public:
String(): str(""), old(""), zam(""), pos(0) {}
void Set(); 
string& Rep();
};
string& Rep() 
{ 
while((pos=str.find(old,pos))!=-1)
str.replace(pos,zam.length(),zam.c_str());
return str;
} 
void String::Set() 
{ 
cout << "Vvedite text: ";
cin >> text;
cout << "Vvedite simvol dlya zameni ";
cin >> old;
cout << "Vvedite novii simvol ";
cin >> zam;
}
void main ( )
{
String str=new String(); 
void Set(); 
cout << "Text: " << Rep()<< endl;
delete str;
}
и снова не знаю что тут не так!!!!
TopoRRR вне форума Ответить с цитированием
Старый 15.12.2009, 09:24   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Смотри. Я бы на твоем месте начал вот с этого:
Код:
#include <iostream.h>
#include <stdlib.h>
using namespace std;
///////////////////////////////////////////////////////////
class MyString
{
  private:
   int size;
   char *str;          // сама строка
  public:
   MyString(){ str=new char[255];}
   ~MyString(){ delete[] str;}
   operator=(const char *s){
	strcpy(str,s);
	cout<<str;
   }
} ;
int main (){
 MyString *ms=new MyString();
  *ms="qwe";
 delete ms;
  system("pause");
  return 0;
}
т.е. перегрузил оператор для класса по присвоению строки.
I'm learning to live...

Последний раз редактировалось Stilet; 15.12.2009 в 09:31.
Stilet вне форума Ответить с цитированием
Старый 15.12.2009, 09:25   #6
TopoRRR
Пользователь
 
Регистрация: 14.12.2009
Сообщений: 10
По умолчанию

Цитата:
Сообщение от Utkin Посмотреть сообщение
Не очень разбираюсь в С++, потому у меня возникло пару вопросов. Вам нужно разработать класс строки с нуля? Тогда настораживает
Код:
#include <string>
Далее Вы объявляете класс строки String, и делаете переменную s1 экземпляром данного класса. Пусть так, но в Вашем классе метод s1.replace не определен. Либо должна возникнуть ошибка, либо s1 определеяется как строка из существующей библиотеки, а это не соответствует заданию.
нужно сделать класс "строка" который выполняет операции из задачи, поэтому он и объявлен как "String", при этом мне в любом случае будет нужно обращаться к стандартному классу, для этого его и подключил.

поправьте меня если что то не так написал!

Цитата:
Сообщение от Stilet Посмотреть сообщение
Смотри. Я бы на твоем месте начал вот с этого:

т.е. перегрузил оператор для класса по присвоению строки.
спасибо, буду пробовать

Последний раз редактировалось Stilet; 15.12.2009 в 09:33.
TopoRRR вне форума Ответить с цитированием
Старый 15.12.2009, 10:30   #7
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Сообщение от TopoRRR Посмотреть сообщение
нужно сделать класс "строка" который выполняет операции из задачи, поэтому он и объявлен как "String", при этом мне в любом случае будет нужно обращаться к стандартному классу, для этого его и подключил.

поправьте меня если что то не так написал!
Вы может не совсем поняли. Зачем создавать класс строки, если Вы его же и подключаете из стандартной библиотеки? Если Вы делаете строку самостоятельно, то никаких внешних строк подключаться не должно не в коем случае . И что значит в любом случае нужно обращаться к стандартному классу? Кто Вам такое сказал? А как же написан стандартный класс строк? К кому обращается он в таком случае?
Строку нужно написать самостоятельно и более того это возможно, если следовать по пути Стилета. Возьмите его класс за основу и добавьте туда необходимый Вам функционал.
Далее, можно обратиться к первоисточникам. Если Вы не знаете или в чем-то не уверены почитайте книгу Теория и практика С++ Г. Шилдта, там как раз имеется пример создания своего класса строк, да и пишет он четким и простым языком.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найдите ошибку *natali* Помощь студентам 3 08.11.2009 17:30
Найдите ошибку MaJlbBuHa Паскаль, Turbo Pascal, PascalABC.NET 2 20.10.2009 23:26
найдите ошибку в коде pony Помощь студентам 1 14.09.2009 10:03
Найдите ошибку St1fler92 Помощь студентам 4 26.05.2009 15:23
найдите ошибку Сова Паскаль, Turbo Pascal, PascalABC.NET 9 11.02.2009 18:46