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

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

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

    bzr Гость

    В задаче необходимо создать два объекта одного класса, который должен содержать строку. Обменять в строках первые слова. И вывести результат на экран.
    Вот что у меня родилось:
    Код (C++):
    #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 Гость

    Хвастаетесь?
     
  3. bzr

    bzr Гость

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

    bzr Гость

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

    Kotti New Member

    Регистрация:
    22 май 2009
    Сообщения:
    1
    Симпатии:
    0
    Вы передаете в функцию recogFirst неинициализированные указатели на char.
     
Загрузка...
Похожие Темы - Задача на строки
  1. Shonny
    Ответов:
    0
    Просмотров:
    1.232
  2. elzim
    Ответов:
    0
    Просмотров:
    929
  3. ShaoKahn
    Ответов:
    0
    Просмотров:
    1.117
  4. eremin-sanek
    Ответов:
    3
    Просмотров:
    1.104
  5. MonteCristo
    Ответов:
    1
    Просмотров:
    851
Статус темы:
Закрыта.

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