Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Строка в С ++


Автор: Merroy 16.12.2018, 21:53
С клавиатуры вводиться текстовую строку. Разработать программу, которая выполняет:
a) количество слов, которые содержат одинаковое количество гласных и согласных букв;
б) выводит на экран самое длинное слово;
в) удаляет из текста слово-палиндромы;

Автор: kapbepucm 17.12.2018, 14:59
А какие символы пользователь вводит, на каком языке?

Автор: Merroy 17.12.2018, 20:57
kapbepucm, он вводит что за хочет, главное текстовая строка. 

Автор: kapbepucm 18.12.2018, 11:55
решение задачи "б"
Код
#include <iostream>

using namespace std;

int main()
{
  string s;
  string delimiter = " ";
  string longest_word = "";
  size_t pos;
  
  cout << "Enter your text and press [enter]: ";
  getline(cin, s);

  pos = s.find(delimiter);
  while (pos != std::string::npos)
  {
    string token;
    token = s.substr(0, pos);
    if (token.length() > longest_word.length())
      longest_word = token;
    s.erase(0, pos + delimiter.length());
    pos = s.find(delimiter);
  }
  if (s.length() > longest_word.length())
    longest_word = s;
  cout << "The longest word is: " << longest_word << endl;

  return 0;
}


Добавлено через 5 минут и 16 секунд
Цитата(Merroy @  17.12.2018,  20:57 Найти цитируемый пост)
он вводит что за хочет
нужно предусмотреть ввод для всех алфавитов мира? smile

Автор: _zorn_ 18.12.2018, 14:35
Цитата(Merroy @  17.12.2018,  20:57 Найти цитируемый пост)
он вводит что за хочет

Цитата
б) выводит на экран самое длинное слово;

Какое слово длиннее 名 или 字 ?  smile 
Про остальные пункты вообще молчу  smile 

Автор: kapbepucm 18.12.2018, 15:51
Цитата(_zorn_ @  18.12.2018,  14:35 Найти цитируемый пост)
Какое слово длиннее 名 или 字 ?
Вангую, что автор вопроса имел ввиду длину строки в какойто однобайтной кодировке  smile
решение б и в:
Код
#include <iostream>
using namespace std;

void set_longest(string* current_word, string* new_word)
{
  if (new_word->length() > current_word->length())
    *current_word = *new_word;
}

int is_palindrome(string* word)
{
  if (word->length() > 0)
  {
    size_t index1 = 0;
    size_t index2;
    index2 = word->length()-1;

    for(; index1 < index2; ++index1, --index2)
      if(word->at(index1) != word->at(index2))
        return 0;
  }
  return 1;
}

int main()
{
  string result = "";
  string s;
  string delimiter = " ";
  string longest_word = "";
  size_t pos;

  cout << "Enter your text and press [enter]: ";
  getline(cin, s);

  pos = s.find(delimiter);
  while (pos != std::string::npos)
  {
    string token;
    token = s.substr(0, pos);
    set_longest(&longest_word, &token);
    if (!is_palindrome(&token))
      result += token;
    result += delimiter;
    s.erase(0, pos + delimiter.length());
    pos = s.find(delimiter);
  }
  set_longest(&longest_word, &s);
  if (!is_palindrome(&s))
    result += s;

  cout << "The first longest word is: " << longest_word << endl;
  cout << "string w/o palindromes: " << result << endl;

  return 0;
}

Автор: _zorn_ 18.12.2018, 18:41
Цитата(kapbepucm @  18.12.2018,  22:51 Найти цитируемый пост)
однобайтной кодировке  smile

Проблема в том, что автору нужно просто "решение" и ему НАСРАТЬ на уточнение условий ) Такова жизнь обыно.

Автор: Merroy 18.12.2018, 21:15
_zorn_, просто в теме этой я не разобрался, а завтра уже нужно сдать это задания, вот думаю на отдыхе поучить эту тему.

Добавлено через 5 минут и 18 секунд
kapbepucm, ну простите не написал что русского алфавита. 

Автор: kapbepucm 19.12.2018, 10:21
Цитата(Merroy @  18.12.2018,  21:15 Найти цитируемый пост)
русского алфавита
Это хуже, чем я предполагал, что будет только латиница smile Надо бы знать: какой компилятор используем, какую ОС (вангую: windows), в какой кодировке сохраняем исходник (вангую: Windows-1251), какую кодировку использует консоль (вангую: CP866).

Добавлено через 1 минуту и 21 секунду
Цитата(Merroy @  18.12.2018,  21:15 Найти цитируемый пост)
а завтра уже нужно сдать
да и, видимо, уже не актуально

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)