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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.05.2010, 23:20   #1
Katte
Пользователь
 
Регистрация: 04.04.2010
Сообщений: 14
По умолчанию Не могу подобрать правильный код

Задача такова:
Написать программу, которая считывает английский текст из файла, и выводит его на экран, заменяя каждую первую букву слов начинающихся с гласной буквы на прописную. Есть скелет
Нашла на форме похожую тему
Код:
int main() {

	setlocale( LC_ALL, "Russian" );

	// открытие файла на чтение
	FILE *f;
	f = fopen( "English.txt", "rt" );
	if( f == NULL ) {
		printf( "Не могу открыть 'English.txt' на чтение. Нажмите клавишу...\n" );
		_getch();
		return -1;
	}
	int N=1000;//можно использовать и другое выделение памяти как вам удобнее
	string str[N];	
	// работа с файлом
	printf( "Просматривается файл 'English.txt':\n\n" );
	while( true )  {
		int n = fscanf( f, "%s",str );
		// n - число успешно считанных аргументов fscanf
		if( n<3 ) break; // самый удобный контроль конца файла		
	}
	string LCASE(str);//string LCASE( str string ) string возвращает строку str, заменив в ней все заглавные буквы на прописные. Поддерживает многобайтовые символы
	
		//или можно изменить прям в файловом потоке std::transform(str.begin(), str.end(), str.begin(), toupper);
	for(int i=0;i<sizeof(str);i++)
{
	printf("Текст без Заглавных букв%s",str[i]);
}			
	// закрытие файла
	fclose(f);	
	_getch();
}
не хочет компилировать, выделает _getch();

Последний раз редактировалось MaTBeu; 08.06.2010 в 18:14.
Katte вне форума Ответить с цитированием
Старый 23.05.2010, 23:45   #2
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Создаете массив констант - гласных букв.
Код:
const char Glasn[6] = {'a', 'e', 'i', 'o', 'u', 'y'};
Сравниваете первую букву каждого слова с ними. Если совпадает - меняете эту букву с помощью функции toupper (ну или можете создать второй массив - прописных гласных букв и менять i-ю букву из массива строчных гласных на i-ю букву массива прописных гласных).
Вот фактически и весь инструментарий, который вам нужен.

P.S. И используйте тег CODE для оформления кода.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 08.06.2010, 17:34   #3
Katte
Пользователь
 
Регистрация: 04.04.2010
Сообщений: 14
По умолчанию

Цитата:
Сообщение от Гром Посмотреть сообщение
Создаете массив констант - гласных букв.
Код:
const char Glasn[6] = {'a', 'e', 'i', 'o', 'u', 'y'};
Сравниваете первую букву каждого слова с ними. Если совпадает - меняете эту букву с помощью функции toupper (ну или можете создать второй массив - прописных гласных букв и менять i-ю букву из массива строчных гласных на i-ю букву массива прописных гласных).
Вот фактически и весь инструментарий, который вам нужен.

P.S. И используйте тег CODE для оформления кода.
Вы не подскажите как это сделать? Давно с этим бьюсь , о не получается, как правильно задать такой массив и куда его соотв. вставить?
Katte вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Код не всегда выдает правильный результат Maxx Microsoft Office Excel 2 18.02.2010 15:59
Правильный ли код? anomals PHP 4 10.02.2010 14:06
Не могу придумать или подобрать формулу! Помогите! Gnom70 Microsoft Office Excel 4 30.01.2008 11:01
Не могу подобрать компонент. validoll Компоненты Delphi 8 22.11.2007 14:25
Копирование строк. Правильный ли код? LinuxUser Общие вопросы C/C++ 12 06.11.2007 17:33