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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.01.2013, 11:08   #1
Redinternational
Новичок
Джуниор
 
Аватар для Redinternational
 
Регистрация: 13.01.2013
Сообщений: 2
Печаль Вопрос по обработке строки. С++

Который день пытаюсь додуматься, никак не получается. Препод еще путает и говорит разные способы реализации. Суть в следующем... Дана задача: "В заданной пользователем строке определить положение гласных латинских букв (a,e,i,o,u). И перед ними вставить пробелы. Пример - исходная строка "ivanov", результирующая "iv an ov"."

Реализуется она следующем способом:
Код:
#include <iostream>
#include <string>
using namespace std;
int main ()
{
	char str[50];
	string i;
	int y=0;
	while (cin >> i)
	{
		for (int x=0; x!=i.size(); x++, y++)
		{
			if (i[x]=='a' || i[x]=='e' || i[x]=='i' || i[x]=='o' || i[x]=='u')
			{
				str[y]=' ';
				y++;
			}
			str[y]=i[x];
		}
	}
	for (int x=0; str[x]>=0; x++)
	{
		cout << str[x];
	}
	     cout << endl;
         return 0;
}
Получение результирующей строки осуществляется так: нажатием Enter, затем Ctrl+z, затем опять Enter. Вопрос заключается в том, можно ли реализовать так, чтобы получение результата (обработка строки) осуществлялась одним нажатием Enter?
Я совсем новичок в программировании (хотя это совсем на программирование), буду рад любой помощи.
Redinternational вне форума Ответить с цитированием
Старый 13.01.2013, 19:19   #2
PriZZZraG
 
Аватар для PriZZZraG
 
Регистрация: 16.06.2012
Сообщений: 8
По умолчанию

Как-то так? (iostream-ом пользоваться не умею)

Код:
#include<stdio.h>

int main()
{
	int c;
	
	while ((c = getchar()) != '\n'){
		if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u')
			printf(" %c", c);
		else printf("%c", c);
	}
	printf("\n");
	return 0;
}
PriZZZraG вне форума Ответить с цитированием
Старый 13.01.2013, 19:52   #3
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Цитата:
"ivanov", результирующая "iv an ov"."
почему не " iv an ov" ?
rrrFer вне форума Ответить с цитированием
Старый 13.01.2013, 19:59   #4
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Код:
#include <string>
#include <algorithm>
int main() {
  std::string str = "", al = "aeiou", res = "";
  
  str = "ivanova";
  for(auto c : str) {
    if (al.end() != std::find(al.begin(), al.end(), c))
      res += ' ';
    res += c;
  }
  
  return 0;
}
rrrFer вне форума Ответить с цитированием
Старый 14.01.2013, 09:28   #5
Redinternational
Новичок
Джуниор
 
Аватар для Redinternational
 
Регистрация: 13.01.2013
Сообщений: 2
По умолчанию

Всем большое спасибо Вопрос снят =)
Redinternational вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача по обработке массивов fetis777 Помощь студентам 2 12.01.2012 02:26
Задача по обработке массива Julichka1k Помощь студентам 0 17.12.2011 14:22
Странная ошибка при обработке строки Didim Помощь студентам 31 08.11.2011 16:35
Вопрсы по обработке сообщений chandrasecar Win Api 1 12.10.2008 09:37
программа на си по обработке строки riptror Общие вопросы C/C++ 1 20.11.2007 20:54