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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.04.2012, 14:26   #1
Maygli
 
Регистрация: 18.04.2012
Сообщений: 3
По умолчанию ВОзникла проблема в классах

Определить класс-строку. В класс включить два конструктора: для определения класса строки строкой символов и путем копирования другой строки (объекта класса строки). Предусмотреть функции слияния двух строк и функцию подсчёта предложений в строке.

проблема в том, что если я ввиду строчку где предложение заканчивается на 2 и более знаков препинания, программа считает это как не одно предложение,а столько сколько я поставил знаков препинания



Вот мой код

// klassy.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>
#include <stdlib.h>
#include <string>
#include <time.h>

using namespace std;

/*
Определить класс-строку. В класс включить два кон-структора:
для определения класса строки строкой сим-волов и путем копирования
другой строки (объекта клас-са строки). Предусмотреть функции слияния
двух строк и функцию подсчёта предложений в строке.
*/

class MyString
{
private:

string m_container;

public:

MyString(const char* src) : m_container(src) {};

MyString(const MyString& src) : m_container(src.m_container) {};

public:

/// подсчёт предложений в строке
unsigned int numSentences()
{
unsigned int n = 0;
/// предложение кончается знаком препинания
/// бежим по всем символам строки и считаем знаки препинания
for (unsigned int i = 0; i < m_container.length(); i++)
{
char simvol = m_container[i];
if (simvol == '!' || simvol == '?' || simvol == '.')

{
n = n + 1;
}
}
return n;
}

/// добавляем к нашей строке ещё одну (слияние)
void add(const MyString& second)
{

m_container += second.m_container;
}

/// печатает на экран строку
void print()
{
cout << m_container;
}
};

int main()
{


char line[256]; /// массивчик куда читать будем
cout << "Enter line, 255 chars max!" << endl;
cin.getline(line,255); /// считываем в массивчик с клавиатуры

MyString str(line); /// создаём строку
cout << "constructor with const char* : ";
str.print();
cout << endl;
cout << "copy constructor : ";
MyString(str).print();
cout << endl;

char line2[256]; /// массивчик куда читать будем
cout << "Enter line, 255 chars max!" << endl;
cin.getline(line2,255); /// считываем в массивчик с клавиатуры
MyString str2(line2); /// создаём строку2
str.add(str2); /// слияние двух строк
cout << "str+str2 = ";
str.print();
cout << endl;
/// вывести число предложений
cout << "num sentences in str+str2 = " << str.numSentences() << endl;
return 0;
}
Maygli вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Возникла проблема с++ GanJIk Помощь студентам 2 28.02.2012 23:45
Возникла проблема... ycropp HTML и CSS 4 16.11.2011 18:43
возникла проблема dvarv Общие вопросы C/C++ 7 19.04.2011 21:03
Возникла проблема! Файзулка Помощь студентам 1 22.11.2009 21:42