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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C++] Стринги, преобразование текста 
:(
    Опции темы
Temka
Дата 8.1.2007, 05:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Задана фраза - последовательность, содержащая от 2 до 30 слов, в каждой из которых от 2 до 30 латинских букв, между соседними словами - не менее 1 пробела, за последним словом точка. Напечатать все слова, отличные от последнего слова, предварительно преобразовав по правилу: удалить из слова все последующие вхождения 1-й буквы.
Программа должна читать текст из файла input.txt и выводить последовательность в файл output.txt.
Есть какие-либо варианты решения?  smile 
 


PM MAIL   Вверх
Dov
Дата 8.1.2007, 09:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

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



Temka, приведи пример входной и выходной строки.


--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
Temka
Дата 8.1.2007, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Dov @  8.1.2007,  09:23 Найти цитируемый пост)
Temka, приведи пример входной и выходной строки.

input.txt : тут томительный запах вечности.
output.txt : ту томиельный запах.

Примерно получилось вот что:
Код

#include <stdio.h>
#include <string.h>

int main()
{FILE *f1,*f2;
char Words[30][10];
int NumWords=0;
int i=0;
int j=0;
FILE* f=fopen("input.txt","rt");
    if (f==NULL)
    {printf("Fayl ne sozdan\n");
return;}
while (!feof(f))
    {
        fscanf(f,"%s",Words[NumWords]);
NumWords=NumWords+1;
    }
fclose(f);
FILE* g=fopen("output.txt","wt");
if (g==NULL)
    {printf("Fayl ne sozdan\n");
return;}
for (int i=0;NumWords<;i++)
    {
if (i==0)
        {
int WordLength=strlen(Words[NumWords-2]);
Words[NumWords-2][WordLength-2]='.';    
fprintf(g,"%s",Words[NumWords]);
        }
        else
        {
fprintf(g," %s",Words[NumWords]);
        }
if (Words[0]==Words[NumWords])
{Words[NumWords]=Words[NumWords+1];
}
while(Words[j]!='\0'
Words[j]=Words[j+1];

    }

fprintf(g,"%c",'.');
fclose(g);
getch();
}


Правда, проверить не удается из-за причуд компилятора. smile  Вопросы, дополнения и замечания об ошибках по ходу сабжа ...  smile 
PM MAIL   Вверх
Dov
Дата 9.1.2007, 01:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

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



Не знаю, что вышло. Что-то бестолковка сёдня совсем не фурычит.
Код
#include <stdio.h>
#include <string.h>

#define LENSTR 1000
#define LENWORD 31

int main()
{
    FILE* inFile;
    FILE* outFile;
    char  str[LENSTR];
    char  word[LENWORD];
    char  lastword[LENWORD];
    char* p;
    int   i, j;

    if((inFile = fopen("input.txt","rt")) == NULL)
    {
        printf("Fayl ne sozdan\n");
        return 1;
    }

    if((outFile = fopen("output.txt","wt")) == NULL)
    {
        printf("Fayl ne sozdan\n");
        return 1;
    }

    fgets(str, LENSTR, inFile);
    p = strrchr(str, ' ') + 1;
    strcpy(lastword, p);
    lastword[strlen(p) - 1] = '\0';
    str[p - str] = '\0';

    p = str;
    while(*p)
    { 
        i = 0;
        while(*p != ' ')
            word[i++] = *p++;
        word[i]    = '\0';

        if(strcmp(word, lastword))
        {
            j = 0;
            fprintf(outFile, "%c", word[j++]);
            while(word[j])
            {
                if(word[j] != word[0])
                    fprintf(outFile, "%c", word[j]);
                j++;
            }
        } 
        fprintf(outFile, "%c", *p++);
    }
    fprintf(outFile, "%c", '.');

    fclose(inFile);
    fclose(outFile);

    return 0;
}



--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

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

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


 




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


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

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