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

Текстовый файл - C++

Восстановить пароль Регистрация
 
Artnoiser
0 / 0 / 0
Регистрация: 14.11.2010
Сообщений: 8
12.12.2010, 16:48     Текстовый файл #1
Доброго времени суток
была поставлена задача,а сам,к сожалению разобратся не могу ибо не имею и малейшегоп редставления с чего начинать.
Задача:Открыть заданый текстовый файл,и записать количество слов с одинаковым количеством букв в другой файл в виде:
Количество букв - количество слов с таким количеством букв

Всю задачу решить не прошу,ибо дальше будет сложнее и нужно понять самому
Подскажите синтаксис как открывать заданый файл ,считывать строку и считать количество букв в строке.
Заранее спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.12.2010, 16:48     Текстовый файл
Посмотрите здесь:

Текстовый файл UTF-8 сохранить как текстовый файл ANSI C++
C++ Скопировать текстовый файл в новый файл, заменив в каждой строке слова «ok» на «*»
C++ Текстовый файл перевести в двоичный, а потом полученный двоичный файл перевести обратно в текстовый
Дан текстовый файл, содержащий целые числа. Определить в каждой четной строке максимальное число и записать результаты в новый текстовый файл C++
Даны натуральное , символьный файл и текстовый файл . Файл содержит 30 слов , каждое из которых будем называть ключевым C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Artnoiser
0 / 0 / 0
Регистрация: 14.11.2010
Сообщений: 8
14.12.2010, 18:52  [ТС]     Текстовый файл #2
Актуально..немогу досихпор разобратся
Artnoiser
0 / 0 / 0
Регистрация: 14.11.2010
Сообщений: 8
18.12.2010, 15:37  [ТС]     Текстовый файл #3
актуально
Василий-Робот
TECHNO
 Аватар для Василий-Робот
26 / 26 / 5
Регистрация: 04.11.2009
Сообщений: 366
18.12.2010, 17:40     Текстовый файл #4
Объясни: "Открыть заданый текстовый файл,и записать количество слов с одинаковым количеством букв в другой файл в виде:
Количество букв - количество слов с таким количеством букв"
Artnoiser
0 / 0 / 0
Регистрация: 14.11.2010
Сообщений: 8
18.12.2010, 18:12  [ТС]     Текстовый файл #5
К примеру в файле есть три слова
Дождь Снег Слякоть

результат обработки должен быть:
"
7 - 1
5 - 1
4 - 1

"
Василий-Робот
TECHNO
 Аватар для Василий-Робот
26 / 26 / 5
Регистрация: 04.11.2009
Сообщений: 366
18.12.2010, 22:13     Текстовый файл #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 <conio.h>
#include <stdio.h>
#include <string.h>
int main()
{
    char filename[20],st1[100],st2[100],*stbuf;
    puts("input name file:");
    gets(filename);
    FILE *f1=fopen(filename,"r");
    FILE *f2=fopen("buffer.txt","w");
    fscanf(f1,"%s",st1);
    strcpy(st2.st1);
    stbuf=strtok(st1," ");
    fclose(f1);
    int k=1;
    while (strptr != NULL)
    {
          stbuf=strtok(NULL," ");
          k++;
    }
    int *kolb = new int [k];
    int *pro  = new int [k];
    stbuf=strtok(st2," ");
    kolb[0]=strlen(stbuf);
    int j,i=0,d=0;
    while (strptr != NULL)
    {
          stbuf=strtok(NULL," ");
          i++;
          kolb[i]=strlen(stbuf);
    }
    for(i=0;i<k;i++)
    {
    kolb[i]=pro[i];
    for(j=k;j>i;j--)
    if(kolb[i]==kolb[j]) d++;
    if(d==0) fprintf(f2,"%d - 1\n",kolb[i]);
    if(d>0 && ) 
    {
            fprintf
Надо продумать алгоритм, как это сделать...
Artnoiser
0 / 0 / 0
Регистрация: 14.11.2010
Сообщений: 8
18.12.2010, 22:34  [ТС]     Текстовый файл #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
#include <tchar.h>
#include "stdio.h"
#include "conio.h"
int main()
{
    FILE *fp = fopen("D:\\olol.txt","r");
    char mas[100];
    char *schet = mas;
    int i=0,n=0;
    if(fp==NULL)
    {
        printf("error");
        return 0;
    }
    while(!feof(fp))
    {
        fgetc(mas,100,fp);
        if(mas[i] == " ")
        n++;
    }
    printf("Kolichestvo slov = %d",n+1);
    fclose(fp);
    getch();
}
Но ещё много ньюансов..

Добавлено через 6 минут
Эм.Вопрос
а зачем в вашем коде открываем два потока?
Василий-Робот
TECHNO
 Аватар для Василий-Робот
26 / 26 / 5
Регистрация: 04.11.2009
Сообщений: 366
18.12.2010, 22:45     Текстовый файл #8
Можешь говорить со мной на "ты"
Я открыл два файла
Один - для считывания строки со словами
Второй - для вывода результатов
Artnoiser
0 / 0 / 0
Регистрация: 14.11.2010
Сообщений: 8
18.12.2010, 23:04  [ТС]     Текстовый файл #9
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
#include <tchar.h>
#include "stdio.h"
#include "conio.h"
 
int main()
{
    
    FILE *fp = fopen("D:\\olol.txt","r");
    char mas[100],n;
    int i=0,c=0;
    char *schet = mas;
    if(fp==NULL)
    {
        printf("error");
        return 0;
    }
    while((n=getc(fp))!=EOF)
    {
        i++;
        if(n == 32)
        c+=1;
    }
    printf("Kolichestvo slov = %d",c+1);
    fclose(fp);
    getch();
}
Исправил код.теперь действительно считает слова
но есть проблема.сделал кривым образом,найдя что код пустоты "32"
если поставить просто
C
1
n==" "
то не удаётся

Добавлено через 12 минут
Кажется понял уже как построить структуру,но нужна ещё одна подсказка как реализовать условие
"если предидущий считанный элемент-любая буква алфавита,а последующий буквой не является,тогда прибавить +1 к счётчику слов"
ибо задан текст где специально используется по несколько пробелов подряд ,чтоб запутать
knkd
37 / 36 / 2
Регистрация: 08.08.2010
Сообщений: 162
19.12.2010, 00:12     Текстовый файл #10
Цитата Сообщение от Artnoiser Посмотреть сообщение
но есть проблема.сделал кривым образом,найдя что код пустоты "32"
если поставить просто
C
1
n==" "
то не удаётся
Используйте одинарные кавычки.
Сейчас вы сравниваете n с указателем на знак пробела, а не с самим пробелом.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.12.2010, 17:31     Текстовый файл
Еще ссылки по теме:

C++ Дано число k (< 10) и текстовый файл, содержащий более k строк. Создать новый текстовый файл, содержащий k последних строк исходного файла
дан текстовый файл.определить количество нечетных чисел и записать их в др текст файл C++
C++ Задан текстовый файл, необходимо по нему сформировать двоичный файл индексов

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

Или воспользуйтесь поиском по форуму:
Artnoiser
0 / 0 / 0
Регистрация: 14.11.2010
Сообщений: 8
19.12.2010, 17:31  [ТС]     Текстовый файл #11
Решил таки задачу.Коряво,но кому-то может и полезно будет
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include <tchar.h>
#include "stdio.h"
#include "conio.h"
 
int main()
{
        
        FILE *fp = fopen("D:\\wtf.txt","r");
        FILE *fp2 = fopen("D:\\rezultat.txt","w");
        char mas[600],alfavit[23]={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','s','t','w','y','f','x','z'};
        int i=0,c=0,n=0,j=0,n1=0,kolb=0;
        int sum1=0,sum2=0,sum3=0,sum4=0,sum5=0,sum6=0;
        int sum7=0,sum8=0;
        char *schet = mas;
        if(fp == NULL)
        {
                printf("error");
                return 0;
                getch();
        }
        while((mas[n]=getc(fp))!=EOF)
        {   
            if (mas[n]!=' ')
            {
            kolb+=1;
            }
            for (j=0;j<23;j++)
            {
                if(mas[n] == ' ' &&  mas[n-1]==alfavit[j])
            {
                c+=1;
                switch(kolb)
            {
                case 1:
                    sum1+=1;
                case 2:
                    sum2+=1;
                case 3:
                    sum3+=1;
                case 4:
                    sum4+=1;
                case 5:
                    sum5+=1;
                case 6:
                    sum6+=1;
                case 7:
                    sum7+=1;
                case 8:
                    sum8+=1;
            }
                kolb=0;
            }
            }
            n++;
        }
        fclose(fp);
        fopen("D:\\rezultat.txt","w");
        fprintf(fp2,"Kolichestvo slov = %d\n",c+1);
        fprintf(fp2,"1 bykv = %d\n",sum1);
        fprintf(fp2,"2 bykv = %d\n",sum2);
        fprintf(fp2,"3 bukv = %d\n",sum3);
        fprintf(fp2,"4 bukv = %d\n",sum4);
        fprintf(fp2,"5 bukv = %d\n",sum5);
        fprintf(fp2,"6 bukv = %d\n",sum6);
        fprintf(fp2,"7 bukv = %d\n",sum7);
        fprintf(fp2,"8 bukv = %d\n",sum8);
        fclose(fp2);
getch();
}
Считает количество букв в словах и количество самих слов и записывает в отдельный текстовый файл.
разделитель- пустое место.
Yandex
Объявления
19.12.2010, 17:31     Текстовый файл
Ответ Создать тему
Опции темы

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