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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.12.2015, 11:36   #1
Okayguys
Пользователь
 
Регистрация: 22.04.2013
Сообщений: 12
По умолчанию Строки

Всем доброго времени суток, задание таково:
Цитата:
В строке S все слова, которые начинаются на гласную букву, изменить следующим образом: поменять местами первый и последний символы. Слова разделены хотя бы одним пробелом.
Программа работает некорректно, она меняет местами, даже слова, начинающиеся на согласные буквы.
Помогите, пожалуйста, найти ошибку.
Код:
#include <iostream>
#include <string>
#include <cstdlib>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
bool find(char inp[],char srch[],int start,int end)
{
	setlocale(LC_ALL, "rus"); 
	bool flag=false;
	for (int i=start;i<end+1;i++)
	{
    for (int z=0;z<sizeof(srch)/sizeof(srch[0]);z++)
		{
	if (inp[i]==srch[z])
	flag=true;	
		}
	}
	if (flag==true)
	return true; else
	return false;
}
int main(int argc, char** argv) 
{
	setlocale(LC_ALL, "rus"); 
	using namespace std;
	char S[27]="арбуз апельсин омега снег";
	char Et[11]="аеёиоуыэюя";
	int mem,mem2;
	char memch;
	bool flag=false;
	bool flag2=false;
	mem=0;
	int i=0;
    cout<<S<<'\n';
	while (S[i]!='\0')
	{
	if (S[i]==' ')
		{
		if (find(S,Et,mem,i))
		{
			memch=S[mem];
			S[mem]= S[i-1];
			S[i-1]=memch;			
		}	
			
		mem = i+1;	
		}
		i+=1;
	}
	
	if (find(S,Et,mem,i))
		{
			memch=S[mem];
			S[mem]= S[i-1];
			S[i-1]=memch;			
		}
	
	cout<<S<<endl;
	system("pause");
	return 0;
}
Предварительное спасибо за помощь.
Изображения
Тип файла: jpg Безымянный3.jpg (23.3 Кб, 80 просмотров)
Okayguys вне форума Ответить с цитированием
Старый 08.12.2015, 12:26   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,528
По умолчанию

Цитата:
Программа работает некорректно, она меняет местами, даже слова, начинающиеся на согласные буквы.
точнее все слова в которых ЕСТЬ гласная.
Код:
for (int z=0;z<sizeof(srch)/sizeof(srch[0]);z++)
		{
	if (inp[i]==srch[z])
	flag=true;	 /// Нашли гласную на любом месте (а не только первую)
		}
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выводить только измененные строки. Перед каждой строкой записывать номер строки в исходном тексте.используя строки и текст.файл nero4ka C++ Builder 1 13.06.2015 07:14
C++ Упорядочить строки матрицы D (m. n) Лексикографически по неубыванию первых k элементов строки Анатолий171 Помощь студентам 123 04.07.2014 18:46
Задача на строки. Даны две строки. Определить можно ли из символов первой строки получить вторую строку.( написать подпрограммой и ANTON1994 Паскаль, Turbo Pascal, PascalABC.NET 5 09.02.2013 14:07
Программа на языке "Ассемблер" - ввод строки, анализ длины строки, добавление точки в конец строки Алексей_2012 Помощь студентам 1 05.04.2012 11:26
Перенести символа с начала строки в место перед запятой этой же строки. Zhiltsov Microsoft Office Excel 4 05.06.2009 13:10