1. Набираем команду codeby webinar. Набираем команду для организации и проведения вебинаров. Подробнее ...

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление
  3. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление

Задача на строки

Тема в разделе "С и С++", создана пользователем bzr, 8 сен 2010.

Статус темы:
Закрыта.
  1. bzr

    bzr Гость

    Репутация:
    0
    В задаче необходимо создать два объекта одного класса, который должен содержать строку. Обменять в строках первые слова. И вывести результат на экран.
    Вот что у меня родилось:
    Код:
    #include <iostream>
    #include <iomanip>
    using namespace std;
    #include <string.h>
    class PL
    {
    char *Naz;
    int Code;
    int Sum;
    public:
    PL();
    PL(char *N, int C, int S);
    ~PL();
    PL(const PL& obj);
    void vvod();
    void show();
    void recogFirst(char *first, char *last);
    //	int max(MAS obj);
    friend void exchng(PL ob1, PL ob2);
    };
    
    PL::PL()
    {
    Naz = new char[100]; 
    //	Code = new (int);
    //	Sum = new (int);
    }
    PL::PL(char *N, int C, int S)
    {
    Code=C;
    Sum=S;
    Naz=new char[strlen(N)+1];
    strcpy(Naz,N);
    }
    
    PL::~PL()
    {
    delete[]Naz;
    //delete Code;
    //delete Sum;
    }
    
    void PL::vvod()
    {
    cout <<endl<< "Vvedite naaznachenie platega "<<endl;
    cin >> Naz;
    cout <<endl<< "Vvedite cod poluchatelya"<<endl;
    cin >> Code;
    cout <<endl<< "Vvedite summu platega"<<endl;
    cin >> Sum;
    }
    
    
    void PL::show()
    {
    cout << endl <<Naz<<endl<<Code<<endl<<Sum;
    }
    void PL::recogFirst(char *first, char *last)
    {
    first=new char[strlen(Naz)+1];
    last=new char[strlen(Naz)+1];
    while (*(Naz)!='\0')
    {
    while (*(Naz)!=' ')
    {
    *first = *(Naz);
    ++Naz;
    }
    *last = *(Naz);
    ++Naz;
    }
    }
    
    void exchng(PL ob1, PL ob2)
    {
    char *F1,*F2,*L1,*L2;
    ob1.recogFirst(F1, L1);
    ob2.recogFirst(F2, L2);
    ob1.Naz = strcat(F2, L1);
    ob2.Naz = strcat(F1, L2);
    }
    
    PL::PL(const PL& obj)
    {
    Naz=new char [strlen(obj.Naz)+1];
    strcpy(Naz,obj.Naz);
    Code=obj.Code;
    Sum=obj.Sum;
    }
    
    /*
    int MAS::max(MAS obj)
    {
    int rez=obj.mm[0][0];
    for (int i=0;i<n;i++)
    for (int j=0;j<m;j++)
    if (obj.mm[i][j]>rez)
    rez=obj.mm[i][j];
    return rez;
    }
    */
    
    void main()
    {
    PL p1;
    p1.vvod();
    PL p2("Za uslugi svyazi", 287654, 35000);
    cout << "Do izmemeniya \n Plateg #1: ";
    p1.show();
    cout<<"\n Plateg #2: ";
    p2.show();
    cout<<endl;
    cout << "Posle izmemeniya \n Plateg #1: ";
    exchng(p1,p2);
    p1.show();
    cout<< " \nPlateg #2: ";
    p2.show();
    cout<<endl;
    }
     
  2. etc

    etc Гость

    Репутация:
    0
    Хвастаетесь?
     
  3. bzr

    bzr Гость

    Репутация:
    0
    Да нет извините!!! Не написала самого главного :) В общем что-то здесь не так((( Но меня мучают сомнения по поводу функции recogFirst Она ж ведь не сможет записать оставшуюся часть строки (без первого слова) в строку last??? И собственно вопрос: как сделать так, чтобы она туда записалась???
     
  4. bzr

    bzr Гость

    Репутация:
    0
    Допустим, у меня что более менее получилось... Но все же не то что хотелось :) Кто поможет разобраться с ошибкой? Выписывает в процессе работы программы, что используется неинициализированная переменная, хотя она инициализирована... У кого можно проконсультироваться?
     
  5. Kotti

    Kotti New Member

    Репутация:
    0
    Регистрация:
    22 май 2009
    Сообщения:
    1
    Симпатии:
    0
    Вы передаете в функцию recogFirst неинициализированные указатели на char.
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей