Форум программистов, компьютерный форум CyberForum.ru

Дан текстовый файл. Заменить окончание ing каждого слова, встречающегося в заданном предложении на ED и сохранить результат в новый файл. - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.80
PozZziTiW
3 / 3 / 0
Регистрация: 10.05.2009
Сообщений: 16
17.12.2009, 23:21     Дан текстовый файл. Заменить окончание ing каждого слова, встречающегося в заданном предложении на ED и сохранить результат в новый файл. #1
Всем вечер добрый.
Хотелось бы, чтоб кто-нибудь помог с прогой. Её текст ниже:
Дан текстовый файл. Заменить окончание ing каждого слова, встречающегося в заданном предложении на ED и сохранить результат в новый файл.
Видел, что подобная прога была решена на данном форуме, но там она была без использования файла.
У меня некоторые наброски есть + ещё с той темы, что-то важное выцепил.
Вот наброски:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# include <stdio.h>
# include <conio.h>
# include <iostream.h>
# include <string.h>
# include <alloc.h>
 
FILE *ved;
 
int sozdmat ()
{
        char *str;
        int i,j,n;
        ved = fopen ("file.txt","r");
        if (ved == NULL)
        return -1;
/*Ниже приведено, наверное, не правильное взятие символа из строки файла, с последующей проверкой окончания ing и заменой его на ed. */
        fscanf (ved,"%d ",&str);
        for (i=0;i<strlen(str);i++)
                if (*(str+i)=='i')
                if (*(str+i+1)=='n')
            if (*(str+i+2)=='g')
            if(*(str+i+3)=='.'||*(str+i+3)==','||*(str+i+3)=='!'||*(str+i+3)=='?'||
                *(str+i+3)==';'||*(str+i+3)==':'||*(str+i+3)=='-'||*(str+i+3)==' '||*(str+i+3)=='\0')
            {
                    *(str+i)='e';
                    *(str+i+1)='d';
                    for (j=i;j<strlen(str);j++)
                    *(str+j+2)=*(str+j+3);
            }
                   fclose(ved);
/* Честно - не знаю, как сделать, что бы действие выше прошло удачно и сразу же записалось во второй файл */
        ved = fopen ("file2.txt","w");
        if (ved == NULL)
        return 1;
        .................
        fclose (ved);
        return 0;
}
 
void main ()
{
 
        switch (sozdmat ())
        {
                case -1 : cout << "File file.txt ne otkrit."; break;
                case 0 : cout << "File file2.txt sozdan."; break;
                case 1 : cout << "File file2.txt ne sozdan."; break;
        }
        getch();
}
Прога сама не сложная - даже элементарная, но для меня пока сложно всё вместе слепить в единое целое.
Заранее всем спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.12.2009, 23:21     Дан текстовый файл. Заменить окончание ing каждого слова, встречающегося в заданном предложении на ED и сохранить результат в новый файл.
Посмотрите здесь:

Дан файл целых чисел. Создать новый файл, содержащий те же элементы, что и исходный файл, но в обратном порядке C++
Текстовый файл UTF-8 сохранить как текстовый файл ANSI C++
C++ Скопировать текстовый файл в новый файл, заменив в каждой строке слова «ok» на «*»
Дан текстовый файл, содержащий целые числа. Определить в каждой четной строке максимальное число и записать результаты в новый текстовый файл C++
C++ Дан текстовый файл, в котором записана последовательность целых чисел. Записать в новый файл только четные из них
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
PozZziTiW
3 / 3 / 0
Регистрация: 10.05.2009
Сообщений: 16
20.12.2009, 11:12  [ТС]     Дан текстовый файл. Заменить окончание ing каждого слова, встречающегося в заданном предложении на ED и сохранить результат в новый файл. #2
Ещё забыл добавить, что слова читаем из текстового файла и после изменения окончания, если такое имеется, записываем результат в новый файл.
PozZziTiW
3 / 3 / 0
Регистрация: 10.05.2009
Сообщений: 16
24.12.2009, 18:20  [ТС]     Дан текстовый файл. Заменить окончание ing каждого слова, встречающегося в заданном предложении на ED и сохранить результат в новый файл. #3
Вот изменил малясь код. Но он всё равно не работает =(
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# include <stdio.h>
# include <conio.h>
# include <iostream.h>
# include <string.h>
 
FILE *ved;
FILE *ved2;
int sozdmat ()
{
        char s[256];
        int i,j,n;
        ved = fopen ("file.txt", "r");
        if (ved == NULL)
        return -1;
        for (i=0; i < strlen(s); i++)
        fscanf (ved, "%s ", &s[i]);
                if (s[i] == 'i')
                if (s[i+1] == 'n')
                if (s[i+2] == 'g')
                if (s[i+3] == '.' || s[i+3] == ',' || s[i+3] == '!' || s[i+3] == '?'||
                s[i+3] == ';' || s[i+3] == ':' || s[i+3] == '-' || s[i+3] == ' ' || s[i+3] == '\0')
                {
                        s[i] = 'e';
                        s[i+1] = 'd';
                        for (j=i; j < strlen(s); j++)
                        s[j+2] = s[j+3];
                }
        fclose(ved);
        ved2 = fopen ("file2.txt","w");
        if (ved2 == NULL)
        return 1;
/*Уверен, что ошибка в следующей строке. Смысл таков - нужно взять строку символов с полученным результом и запихнуть их в файл.*/
        fputs(s);
        fclose(ved2);
        return 0;
}
 
void main ()
{
 
        switch (sozdmat ())
        {
                case -1 : cout << "File file.txt ne otkrit."; break;
                case 0 : cout << "File file2.txt sozdan."; break;
                case 1 : cout << "File file2.txt ne sozdan."; break;
        }
        getch();
}
PozZziTiW
3 / 3 / 0
Регистрация: 10.05.2009
Сообщений: 16
25.12.2009, 21:40  [ТС]     Дан текстовый файл. Заменить окончание ing каждого слова, встречающегося в заданном предложении на ED и сохранить результат в новый файл. #4
Всё - написал программу. Прога рабочая. Если кому нужна, то смотрите ниже:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# include <stdio.h>
# include <conio.h>
# include <iostream.h>
 
 
FILE *ved;
FILE *ved2;
 
int sozdmat ()
{
        char s[256];
        int i,j,n;
        ved = fopen ("file.txt", "r");
        if (ved == NULL)
            return -1;
        ved2 = fopen ("file2.txt","w");
        if (ved2 == NULL)
            return 1;
        while(!feof(ved))
        {
            fscanf(ved, "%s", s);
            for (i = 0; i < strlen(s); i++)
                if (s[i] == 'i')
                    if (s[i+1] == 'n')
                        if (s[i+2] == 'g')
                            if (s[i+3] == '.' || s[i+3] == ',' || s[i+3] == '!' || s[i+3] == '?'||
                                 s[i+3] == ';' || s[i+3] == ':' || s[i+3] == '-' || s[i+3] == ' ')
                            {
                                    s[i] = 'e';
                                    s[i+1] = 'd';
                                    for (j = i; j < strlen(s); j++)
                                    s[j+2] = s[j+3];
                            }
            fprintf(ved2, "%s", s);
        }
        fclose(ved);
        fclose(ved2);
        return 0;
}
 
void main ()
{
 
        switch (sozdmat ())
        {
                case -1 : cout << "File file.txt ne otkrit."; break;
                case 0 : cout << "File file2.txt sozdan."; break;
                case 1 : cout << "File file2.txt ne sozdan."; break;
        }
        getch();
}
Yandex
Объявления
25.12.2009, 21:40     Дан текстовый файл. Заменить окончание ing каждого слова, встречающегося в заданном предложении на ED и сохранить результат в новый файл.
Ответ Создать тему
Опции темы

Текущее время: 19:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru