Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Редактирование с консоли текстового файла, Замена в файле всех первые букв в слове 
:(
    Опции темы
Garik1995
Дата 15.10.2014, 08:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 15.10.2014

Репутация: нет
Всего: нет



Составить программу на языке С++, позволяющую отредактировать заданный с консоли текстовый файл: заменить в нем на заглавные буквы все первые буквы в словах.Надо сделать так чтобы было (например "мама мыла раму", а станет "Мама Мыла Раму").Вот код.
Код

//---------------------------------------------------------------------------

#pragma hdrstop

//---------------------------------------------------------------------------
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<iostream>
#include <locale>
#include<cctype>
#include<cstring>
#include<string>
#include<vcl.h>
#pragma argsused
int main(int argc, char* argv[])
{
char help[100];
int n;
setlocale(LC_ALL, "russian_russian");
FILE *f1, *f2;
printf("Input file name\n");
gets(help);
f1 = fopen(help, "rt");
if ((!f1)) {
printf("File not found!");
}
else
{
    f2 = fopen("File2.txt", "wt");
{
    while (fgets(help,99,f1))
{
    help[n] = toupper(help[n]);
    fprintf(f2, "%s", help);
}
}
getch();
return 0;
}
}
//---------------------------------------------------------------------------


Это сообщение отредактировал(а) Garik1995 - 15.10.2014, 09:25

Присоединённый файл ( Кол-во скачиваний: 1 )
Присоединённый файл  Program_5.rar 111,63 Kb
PM MAIL   Вверх
xvr
Дата 15.10.2014, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Цитата(Garik1995 @  15.10.2014,  08:41 Найти цитируемый пост)
Код

int n;
...
help[n] = toupper(help[n]);


Это не все первые буквы в словах а какая то буква в каждой строке (если повезет)


Это сообщение отредактировал(а) xvr - 15.10.2014, 13:11
PM MAIL   Вверх
Garik1995
Дата 15.10.2014, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 15.10.2014

Репутация: нет
Всего: нет



Цитата(xvr @ 15.10.2014,  13:10)
Цитата(Garik1995 @  15.10.2014,  08:41 Найти цитируемый пост)
Код

int n;
...
help[n] = toupper(help[n]);


Это не все первые буквы в словах а какая то буква в каждой строке (если повезет)

Код

for(int n = 0; n<strlen(help); n++)
{
if((help[n-1]==' ') || ((n-1)<0))
help[n] = toupper(help[n]); 
}

Я уже разобрался,всё равно спасибо)написал проверку на символы после которой первые буквы слов преобразуются в верхний регистр)Там надо проверить на наличие нижнего регистра первый символ и символ после пробела.
PM MAIL   Вверх
math64
Дата 15.10.2014, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 12
Всего: 72



Цитата(Garik1995 @  15.10.2014,  13:20 Найти цитируемый пост)
Код

if((help[n-1]==' ') || ((n-1)<0))

сначала нужно проверить (n-1)<0, иначе help[n-1] приводит к выходу за пределы массива и программа может вылететь.

toupper() преобразовывает кириллицу?

PM   Вверх
Garik1995
Дата 16.10.2014, 02:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 15.10.2014

Репутация: нет
Всего: нет



Цитата(math64 @ 15.10.2014,  15:05)
Цитата(Garik1995 @  15.10.2014,  13:20 Найти цитируемый пост)
Код

if((help[n-1]==' ') || ((n-1)<0))

сначала нужно проверить (n-1)<0, иначе help[n-1] приводит к выходу за пределы массива и программа может вылететь.

toupper() преобразовывает кириллицу?

Да

Добавлено через 3 минуты и 15 секунд
Цитата(math64 @ 15.10.2014,  15:05)
Цитата(Garik1995 @  15.10.2014,  13:20 Найти цитируемый пост)
Код

if((help[n-1]==' ') || ((n-1)<0))

сначала нужно проверить (n-1)<0, иначе help[n-1] приводит к выходу за пределы массива и программа может вылететь.

toupper() преобразовывает кириллицу?

Ммм,у меня сначала проверяется условие [n-1] = '  '  , а потом (n-1)<0 и программа не вылетает, но попробую ваш вариант, спасибо!
PM MAIL   Вверх
math64
Дата 16.10.2014, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 12
Всего: 72



это простая программа, потому и не вылетает. массив help[] объявлен на стеке, поэтому help[-1] тоже на стеке и ипользуется только для чтения. Поэтому не вылетает. Если бы help выделялся на стеке или использовалось отображение файла на память, могла бы вылететь.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0715 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.