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

Работа с текстовыми файлами - C++

Восстановить пароль Регистрация
 
Virolaynen
0 / 0 / 0
Регистрация: 24.05.2011
Сообщений: 21
08.06.2011, 11:38     Работа с текстовыми файлами #1
Дай текстовы файл F. Группы символов, розделены пропусками (одним или нескольками) или вообще их не имеют (будем как и раньше называть их словами). Удалить из файла все слова, которые состоят из одинаковых букв, и лишние пробелы. Результат записать в файл Q.

Добавлено через 1 минуту
Это просто вводим текст и оно из него удаляет лишние пробелы! А мне надо именно работа с файлами.
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
#include <stdio.h>
#include <locale.h>
#include <string.h>
#include <stdlib.h>
 
int main(int argc, char *argv[]) 
{
    setlocale(LC_ALL,"");
    char str[101] = "";
    char res[101] = "";
printf("Vvedite text:");
     
    fgets (str, 101, stdin);
      int j = 0;
    int i;
    for (i = 0; i<strlen(str) ; i++) {
        if (str[i] == ' ') 
                {
          if (j==0) continue;
          if (str[i+1] == ' ') continue;
                }
        res[j] = str[i];
        j++;
    }
        i=strlen(res);
        if(res[i-2] == ' ')
                res[i-2] = '\0';
 
        printf("\nРезультат:%s", res);
        
 
    getchar();
}
помоги пожалуйста..завтра екзамен 4 из 5 задач сделал - а с этой морока...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.06.2011, 11:38     Работа с текстовыми файлами
Посмотрите здесь:

C++ Работа с текстовыми файлами
C++ Работа с текстовыми файлами.
Работа с текстовыми файлами C++
C++ Работа с текстовыми файлами
C++ Работа с текстовыми файлами
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
08.06.2011, 13:53     Работа с текстовыми файлами #2
Это ничего не удаляет, тупо выборочно переписывает в файл
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
#include <stdio.h>
#include <string.h>
#define size 1000
int is(const char * str){
    while (*++str)
        if (*str!=*(str-1)) return 1;
    return 0;
}
void erase(char * x){
    while (*x)
        *x=*(x+++1);
}
int main(){
    FILE *F=fopen("F.txt","r"),*Q=fopen("Q.txt","w");
    char str[size];
    while (fgets(str,size,F))
        for(char * pch=strtok(str," "),x[size];;){
            while (char * x=strchr(pch,'\n')) erase(x);
            if (!*pch) break;
            strcpy(x,pch);
            pch=strtok(0," ");
            printf("%s - %d\n",x,is(x));
            if (!pch) {if (is(x)) fprintf(Q,"%s",x); fprintf(Q,"\n"); break;}
            if (is(x)) fprintf(Q,"%s ",x);
        }
    return 0;
}
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
08.06.2011, 14:59     Работа с текстовыми файлами #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
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
 
#define MAX_STR_LEN 512
#define SEP " "
 
int main()
{
    char str[MAX_STR_LEN], *p;
    FILE *fin, *fout;
    if ((fin = fopen("F.txt", "r")) == NULL) {
        fprintf(stderr, "Cannot open input file!\n");
        exit(1);
    }
    if ((fout = fopen("output.txt", "w")) == NULL) {
        fprintf(stderr, "Cannot open output file!\n");
        exit(1);
    }
    size_t i;
    while (!feof(fin)) {              //цикл обрабоки строк
        fgets(str, MAX_STR_LEN, fin);
        char* n = strrchr(str, '\n'); //удаление символа '\n'
        if (n != NULL)
            *n = '\0';
        for (p = strtok(str, SEP); p != NULL; p = strtok(NULL, SEP)) { //цикл обработки слов
            int f = 1; //флаг
            for (i = 1; i < strlen(p); ++i) // обработка очередного слова
                if (tolower(p[i]) != tolower(p[0]))
                    f = 0;
            if (f)
                continue;
            fputs(p, fout);
            fputc(' ', fout);
        }
        fputc('\n', fout);  
    }
    exit(0);
}
Virolaynen
0 / 0 / 0
Регистрация: 24.05.2011
Сообщений: 21
08.06.2011, 15:10  [ТС]     Работа с текстовыми файлами #4
Смотри...я создаю 2 текстовы файла
в 1 пишу свой текст....а во 2 оно что выводит!?

как именно оно работает..в какой последовательности...

p.s. спасибо что выручил!

Добавлено через 9 минут
Net_Wanderer, код понятен) а вообще к нему реально составить блок-схему???
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
08.06.2011, 15:10     Работа с текстовыми файлами #5
Цитата Сообщение от Virolaynen Посмотреть сообщение
Смотри...я создаю 2 текстовы файла
в 1 пишу свой текст....а во 2 оно что выводит!?

как именно оно работает..в какой последовательности...

p.s. спасибо что выручил!
В моем коде во 2й файл перенесутся все слова (но не символы, т.к. они состоят из одинаковых символов=) ), лишние пробелы,пустые строки и слова, состоящих из одинаковых символ сотрутся.
А вообще лучше проверьте, я на скорую руку делал, поэтому не уверен.
Да, и уберите 22 строку, она отладочная)
Virolaynen
0 / 0 / 0
Регистрация: 24.05.2011
Сообщений: 21
08.06.2011, 15:18  [ТС]     Работа с текстовыми файлами #6
У меня вопросы по коду, где и что обьясняет...
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
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
 
#define MAX_STR_LEN 512 // что это?
#define SEP " " // что это?
 
int main()
{
        char str[MAX_STR_LEN], *p;
        FILE *fin, *fout;
        if ((fin = fopen("F.txt", "r")) == NULL) {
                fprintf(stderr, "Cannot open input file!\n");
                exit(1);
        }
        if ((fout = fopen("output.txt", "w")) == NULL) {
                fprintf(stderr, "Cannot open output file!\n");
                exit(1);
        }
        size_t i;
        while (!feof(fin)) {              //цикл обрабоки строк
                fgets(str, MAX_STR_LEN, fin); // что это???
                char* n = strrchr(str, '\n'); //удаление символа '\n'
                if (n != NULL)
                        *n = '\0';
                for (p = strtok(str, SEP); p != NULL; p = strtok(NULL, SEP)) { //цикл обработки слов
                        int f = 1; //флаг
                        for (i = 1; i < strlen(p); ++i) // обработка очередного слова
                                if (tolower(p[i]) != tolower(p[0]))
                                        f = 0;
                        if (f)
                                continue;
                        fputs(p, fout); // и что делает fputs и чуть ниже fputc
                        fputc(' ', fout);
                }
                fputc('\n', fout);      
        }
        exit(0);
}
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
08.06.2011, 15:31     Работа с текстовыми файлами #7
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
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
 
#define MAX_STR_LEN 512 // размер массива символов(строки) str, 
                        // в которую мы будем считывать строки из файла F.txt с помощью fgets
#define SEP " " // разделитель для фунуции strtok, которая будет делить строку на слова
 
 
int main()
{
        char str[MAX_STR_LEN], *p;
        FILE *fin, *fout;
        if ((fin = fopen("F.txt", "r")) == NULL) {
                fprintf(stderr, "Cannot open input file!\n");
                exit(1);
        }
        if ((fout = fopen("output.txt", "w")) == NULL) {
                fprintf(stderr, "Cannot open output file!\n");
                exit(1);
        }
        size_t i;
        while (!feof(fin)) {              //цикл обрабоки строк
                fgets(str, MAX_STR_LEN, fin);  // считываем строку из файла в str
                char* n = strrchr(str, '\n'); //удаление символа '\n'
                if (n != NULL)
                        *n = '\0';
                for (p = strtok(str, SEP); p != NULL; p = strtok(NULL, SEP)) { //цикл обработки слов
                        int f = 1; //флаг
                        for (i = 1; i < strlen(p); ++i) // обработка очередного слова, если после     
                                if (tolower(p[i]) != tolower(p[0])) //прохождения всего цикла, флаг не изменится
                                        f = 0;  //то значит слово состоит из одниковых букв
                        if (f)
                                continue;
                        fputs(p, fout); // пишет в выходной файл очередное слово p 
                        fputc(' ', fout); // пишет в файл пробел
                }
                fputc('\n', fout);      
        }
        exit(0);
}
Virolaynen
0 / 0 / 0
Регистрация: 24.05.2011
Сообщений: 21
08.06.2011, 15:44  [ТС]     Работа с текстовыми файлами #8
int f = 1; //флаг
А что подразумевается "флаг" =))) ??)

сижу и думаю, а к этой проге реально блок-схему сделать =))) уже в отчёте по заданию всё сделал =))) кроме блок-схемы =))))
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
08.06.2011, 15:54     Работа с текстовыми файлами #9
Eсли после прохождения цикла обработки слова, f останется равным 1, то условие
C++
1
2
if (f)
        continue;
выполнится и мы перейдем на следующую итерацию, пропустив запись слова в файл.
Virolaynen
0 / 0 / 0
Регистрация: 24.05.2011
Сообщений: 21
08.06.2011, 16:10  [ТС]     Работа с текстовыми файлами #10
А вот вопрос на счёт блок-схемы парит меня всё больше!

А ты случайно не умеешь их рисовать!? И как нить криво косо по этому коду набросать....
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.06.2011, 16:13     Работа с текстовыми файлами
Еще ссылки по теме:

C++ Работа с текстовыми файлами
C++ Работа с текстовыми файлами
C++ Работа с текстовыми файлами

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

Или воспользуйтесь поиском по форуму:
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
08.06.2011, 16:13     Работа с текстовыми файлами #11
Цитата Сообщение от Virolaynen Посмотреть сообщение
А вот вопрос на счёт блок-схемы парит меня всё больше!

А ты случайно не умеешь их рисовать!? И как нить криво косо по этому коду набросать....
К сожалению нет
Yandex
Объявления
08.06.2011, 16:13     Работа с текстовыми файлами
Ответ Создать тему
Опции темы

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