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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.02.2010, 02:40   #1
pale
 
Аватар для pale
 
Регистрация: 22.02.2010
Сообщений: 5
По умолчанию Строки

Уважаемые программисты! никак не могу написать программу на C++: слова в тексте разделены запятыми,необходимо распечатать слова содержащие и гласные, и согласные буквы.
Вот код на Паскале:

Код:
program stroka;
 uses crt;
  type mn=set of char;
  var
  str,hstr,ostr:string;
  glasn,soglasn,letter:mn;
  i,p,n,g,h,q,u,z:integer;
 begin
 clrscr;
 letter:=['a','b','c','d','i','o','q','w','e','r','t','y','u','p','s','f','g','h','k','l','x','v','n','m'];
 glasn:=['a','i','o','e','y','u'];
 soglasn:=letter-glasn;
 writeln('Vvedite stroku');
 readln(str);
 n:=length(str);
 h:=1;p:=1;q:=0;u:=0;z:=0;
 for i:=1 to n do
  begin
   if (str[i]=',') or (i=n) then
    begin
     hstr:=copy(str,h,(i-h));
     h:=i+1;
     g:=length(hstr);
    for q:=0 to g do
    begin
    if (hstr[q] in glasn) then u:=u+1;
    if (hstr[q] in soglasn) then z:=z+1;
    if (u<>0) and (z<>0)
     then
      begin
       insert(hstr,ostr,p);
       p:=p+g+3;
       p:=p+1;
       insert(',',ostr,p);
       q:=g;
       end;
       end;
       u:=0;q:=0;z:=0;
       delete(hstr,0,g);
       end;
       end;
       writeln(ostr);
       readkey;
       end.
     end;
     end;
     end.
pale вне форума Ответить с цитированием
Старый 22.02.2010, 03:49   #2
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

Цитата:
необходимо распечатать слова содержащие и гласные, и согласные буквы.
а разве есть слова, которые содержат только гласные или только согласные? союзы и предлоги не считаю
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 22.02.2010, 11:37   #3
pale
 
Аватар для pale
 
Регистрация: 22.02.2010
Сообщений: 5
По умолчанию

Имеется ввиду любое сочетание букв, слова - условно
pale вне форума Ответить с цитированием
Старый 22.02.2010, 12:14   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Насколько я понял автору нужно так:
Код:
#include "stdafx.h"
#include <stdlib.h>
#include <string.h>

using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
	char s[]="Hello,my,world";
	
	for(int i=0;i<strlen(s);i++){
		if (s[i]!=','){ printf("%c",s[i]);} else {printf("\n");}
	}
	getchar();
	return 0;
}
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.02.2010, 14:09   #5
pale
 
Аватар для pale
 
Регистрация: 22.02.2010
Сообщений: 5
По умолчанию

Немного не так. Данная программа скопирует все слова, то есть если ввести "hello,ljkjk,world" то получится "hello,ljkjk,world" а нужно "hello,world". Но все равно спасибо за потраченное время
pale вне форума Ответить с цитированием
Старый 22.02.2010, 14:26   #6
Ozerich
Студент 1 курса
Форумчанин Подтвердите свой е-майл
 
Аватар для Ozerich
 
Регистрация: 27.06.2008
Сообщений: 959
По умолчанию

Код:
#include <string>
#include <iostream>
#include <vector>

using namespace std;

bool isGlasn(char ch)
{
	return (ch == 'a' || ch == 'i' || ch == 'e' || ch == 'o' || ch == 'y' || ch == 'u');
}

int main()
{
	string s,tmp;
	cout << "Vvedite stroku" << endl;
	cin >> s;
	int i;
	int cursgl = 0, curgl = 0;
	int beg = 0;
	bool flag = false;
	for(i = 0; i < s.size(); i++)
	{
		if(s[i] == ',')
		{
			if(cursgl > 0 && curgl > 0)
			{
				tmp.assign(s.begin() + beg, s.begin() + i);
				if(flag) 
					cout << ',';
				cout << tmp;
				flag = true;
			}
			beg = i + 1;
			cursgl = curgl = 0;
		}
		else
		{
			if(isGlasn(s[i]))
				curgl++;
			else 
				cursgl++;
		}
	}
	if(cursgl > 0 && curgl > 0)
	{
		tmp.assign(s.begin() + beg, s.begin() + i);
		if(flag) 
			cout << ',';
		cout << tmp;
	};
	return 0;
}
C++(STL, QT, WinInet) / DHTML(CSS) / JavaScript / PHP Developer

Последний раз редактировалось Ozerich; 22.02.2010 в 14:37.
Ozerich вне форума Ответить с цитированием
Старый 22.02.2010, 16:14   #7
pale
 
Аватар для pale
 
Регистрация: 22.02.2010
Сообщений: 5
По умолчанию

Спасибо! Вы очень помогли
pale вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление элементов строки s2 из строки s1 Ueshua Общие вопросы C/C++ 4 20.12.2009 13:06
Перенести символа с начала строки в место перед запятой этой же строки. Zhiltsov Microsoft Office Excel 4 05.06.2009 13:10
Строки. Как вывести часть строки? Anfall Общие вопросы Delphi 7 26.02.2009 09:10
считать из файла две строки, вывести на экран символы первой строки, которые отсутствуют во второй gotex Помощь студентам 4 08.05.2008 02:27
как вывести строку поочередно сначала первая буква первой строки потом первая буква второй строки и т.д. vitalik007 Помощь студентам 1 25.09.2007 20:45