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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.80
PozZziTiW
3 / 3 / 0
Регистрация: 10.05.2009
Сообщений: 17
#1

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

17.12.2009, 23:21. Просмотров 1918. Ответов 3
Метки нет (Все метки)

Всем вечер добрый.
Хотелось бы, чтоб кто-нибудь помог с прогой. Её текст ниже:
Дан текстовый файл. Заменить окончание 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++ Дан текстовый файл, в котором записана последовательность целых чисел. Записать в новый файл только четные из них
Дан текстовый файл с действительными числами. Найти сумму его элементов с четными номерами и записать в новый файл C++
C++ Скопировать текстовый файл в новый файл, заменив в каждой строке слова «ok» на «*»
Дан символ 'C' (прописная латинская буква) и текстовый файл. Создать строковый файл, содержащий все слова из исходного файла C++
C++ Дан символ 'C' (прописная латинская буква) и текстовый файл. Создать строковый файл, содержащий все слова из исходного файла, начинающиеся этой буквой
Текстовый файл UTF-8 сохранить как текстовый файл ANSI C++
Дан текстовый файл. Получить новый, образованный заменой всех строчных букв прописными C++
Дан текстовый файл. Вывести все слова, начинающиеся с заданной буквы C++
C++ Дан текстовый файл. Вывести на экран количество предложений в нём и количество слов в каждом предложении
C++ Дан текстовый файл. Вывести на экран количество предложений в нём и количество слов в каждом предложении.
C++ Записать в новый текстовый файл для каждого числа из оригинального файла само число, произведение его цифр
C++ В словах, которые заканчиваются сочетанием букв ing, заменить это окончание на ed

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
PozZziTiW
3 / 3 / 0
Регистрация: 10.05.2009
Сообщений: 17
20.12.2009, 11:12  [ТС]     Дан текстовый файл. Заменить окончание ing каждого слова, встречающегося в заданном предложении на ED и сохранить результат в новый файл. #2
Ещё забыл добавить, что слова читаем из текстового файла и после изменения окончания, если такое имеется, записываем результат в новый файл.
PozZziTiW
3 / 3 / 0
Регистрация: 10.05.2009
Сообщений: 17
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
Сообщений: 17
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 и сохранить результат в новый файл.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru