Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> вопрос по поводу пробелов в предложении 
:(
    Опции темы
4aineG
Дата 14.8.2008, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 7.8.2008

Репутация: нет
Всего: нет



А как мне в своем коде изменить чтобы вместо «_» при наборе предложения можно ставить пробелы, пытаюсь вводить через консоль с пробелами: выводит и работает только с одним словом

Код

#include <iostream>
#include <cstring>
using namespace std;

class Line
{
private:

    char *Line1; 
    int length;

public:

    Line()
    {
        length = 1;
        Line1 = new char[length];
        Line1[length-1] = '\0'; 
    }

    Line(const char* L1)
    {
        length = strlen(L1)+1;
        Line1 = new char[length];
        strcpy(Line1, L1);
        Line1[length-1] = '\0';
    }

    friend ostream& operator << (ostream& out , Line& l);
    friend istream& operator >> (istream & in, Line &l);
    Line operator - (char letter);
    bool operator == (Line l);
    int CountWordsInLine();
    char* ReverseLine(); 
    void DrawStar();

    ~Line()
    {
        delete [] Line1;
    }
};

int Line::CountWordsInLine()
    {
        int Count=0;
        for(int i=0; i<length; i++)
    {
        if (Line1[i]==' ')
            Count++;
    }
        Count++;
        return Count;
    }

char* Line::ReverseLine() 
    {
        for (int i=0; i<(length-1)/2; i++)
    {
        char temp = Line1[i];
        Line1[i] = Line1[length-i-2];
        Line1[length-i-2] = temp;
    }
        return Line1;
    }

void Line::DrawStar()
{
    for (int i=0; i<45; i++)
        cout << '*';
    cout << endl;
}

istream & operator >> (istream & in, Line& l)
    {
        char *temper = new char[100];
        in >> temper;
        l.length = strlen(temper)+1;
        temper[l.length-1] = '\0'; 
        l.Line1 = new char[l.length];
        strcpy(l.Line1, temper);
        l.Line1[l.length-1] = '\0';
        return in;
    }

    ostream& operator << (ostream& out, Line& l)
    {
        return out << l.Line1;
    }

    Line Line::operator - (char letter)
    {
        char *temp = new char[length];
        int i,j;
        for (i=0, j=0; i<length; i++)
        {
            if (Line1[i] != letter)
            {
                temp[j] = Line1[i];
                j++;
            }
        }
        temp[j] = '\0';
        return temp;
    }

    bool Line::operator == (Line l)
    {
        int i, j;
        for (i=0, j=0; i<length-1, j<length-1; i++, j++)
            if (Line1[i] == l.Line1[j])
                return true;
        return false;
    }

int main()
{
    Line ln1;
    Line ln2("What's up niger");
    cout << "enter sentence: "; 
    cin >> ln1;
    cout << "normal sentece: " << ln1 << endl;

    if(ln1 == ln2)
        cout << "sentences are equal" << endl;
    else
        cout << "sentences are not equal" << endl;
    cout << "number of words: " << ln1.CountWordsInLine() << endl;
    ln1.DrawStar();
    cout << "enter letter: ";
    char temp;
    cin >> temp;
    cout << "without letter: " << ln1 - temp << endl;
    cout << "reversed sentence: " << ln1.ReverseLine() << endl;
    
    return 0;
}


PM MAIL   Вверх
ama_kid
Дата 14.8.2008, 10:05 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

Репутация: нет
Всего: 95



Цитата(4aineG @  14.8.2008,  09:52 Найти цитируемый пост)
А как...
в функции 
Код
istream & operator >> (istream & in, Line& l)
замени строку
Код
in >> temper;
на
Код
in.getline(temper,100);



--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
cutwater
Дата 14.8.2008, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 592
Регистрация: 24.6.2008

Репутация: 2
Всего: 10



если предложение больше 100 символов - не есть гуд
ИМХО лучше воспользоваться 
Цитата

  function getline
  istream& getline( istream& is, string& s, char delimiter = '\n' )



--------------------
user posted image
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1078 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.