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

Найти самое длинное слово в тексте и количество его повторений - C++

Восстановить пароль Регистрация
 
Liori
 Аватар для Liori
3 / 3 / 1
Регистрация: 30.08.2012
Сообщений: 155
30.06.2015, 11:35     Найти самое длинное слово в тексте и количество его повторений #1
Использовать только функции cstdio
В чём ошибка? Выводит не самое длинное слово, а определенное кол-во символов с начала текста

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 "stdafx.h"
#include <iostream> 
#include <fstream> 
#include <cstdio>
#include <stdio.h> 
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "rus");
    int l_size = 0;
    char buffer[100];
    int size = 0, max = 0, p = 0, n;
    char word[20];
 
    
                FILE* f = fopen("Text.txt", "r");
                if (!f)
                    printf("Ошибка");
                else
                {
                    fseek(f, 0, SEEK_END);
                    l_size = ftell(f);
                    rewind(f);
            
                    while (fread(&buffer, l_size,1, f))
                
                    {
                        size = strlen(buffer);
                        if (size > max)
                        {
                            strncpy_s(word, buffer, _TRUNCATE);
                            p = 1;
                            max = size;
                            continue;
                        }
                        if (strcmp(word, buffer) == 0)
                            p++;
                    }
                    fclose(f);
                    cout << "Самое длинное слово: " << word << endl;
                    cout << "Количество повторений: " << p << endl;
 
                }
                getchar();
            }
 
    system("pause");
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.06.2015, 11:35     Найти самое длинное слово в тексте и количество его повторений
Посмотрите здесь:

Поменять местами самое длинное слово и самое короткое слово в тексте C++
найти самое длинное слово в тексте которое состоит из цифр C++
C++ Найти во введённом тексте самое длинное симметричное слово
Во введённом тексте найти самое длинное слово C++
Найти самое длинное и самое короткое слово в тексте C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,164
Завершенные тесты: 1
30.06.2015, 11:36     Найти самое длинное слово в тексте и количество его повторений #2
Найти самое длинное слово в заданном тексте

А в принципе, зачем Вы читаете в бинарном режиме?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 FILE* f = fopen("Text.txt", "r");
 
                if (!f)
                    printf("Ошибка");
                else
                {
                    max=0;
                    while (f>>buffer)
                    {
                        int size = strlen(buffer);
                        if (size > max)
                        {
                            strncpy_s(word, buffer, _TRUNCATE);
                            max = size;
                            p=1;
                        }else
                           if (strcmp(word, buffer) == 0)
                              p++;
                    }
                    fclose(f);
                }
Liori
 Аватар для Liori
3 / 3 / 1
Регистрация: 30.08.2012
Сообщений: 155
30.06.2015, 11:47  [ТС]     Найти самое длинное слово в тексте и количество его повторений #3
zss, спасибо большое. Только подскажите, почему на строке
C++
1
while (f>>buffer)
возникает ошибка "выражение должно относиться к целочисленному типу или типу перечисления без области видимости"? Я раньше пробовала тоже с помощью while (f>>buffer) написать, но возникала такая же ошибка..(
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,164
Завершенные тесты: 1
30.06.2015, 11:53     Найти самое длинное слово в тексте и количество его повторений #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
#include <iostream> 
#include <fstream> 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "rus");
    char buffer[100];
    int size = 0, max = 0, p = 0;
    char word[20];
    ifstream f("Text.txt");
    if (!f)
        cout<<"Ошибка\n";
    else
    {
        while (f>>buffer)
        {
            size = strlen(buffer);
            if (size > max)
            {
                strncpy_s(word, buffer, _TRUNCATE);
                p = 1;
                max = size;
                continue;
            }
            if (strcmp(word, buffer) == 0)
                p++;
        }
        f.close();
        cout << "Самое длинное слово: " << word << endl;
        cout << "Количество повторений: " << p << endl;
    }
    system("pause");
}
Liori
 Аватар для Liori
3 / 3 / 1
Регистрация: 30.08.2012
Сообщений: 155
30.06.2015, 11:56  [ТС]     Найти самое длинное слово в тексте и количество его повторений #5
zss, а как это сделать именно сишным вводом-выводом? Вот эту функцию применить?
C++
1
while (fread(&buffer, sizeof buffer, strlen(buffer), f))
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,164
Завершенные тесты: 1
30.06.2015, 11:57     Найти самое длинное слово в тексте и количество его повторений #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C
1
fscanf(f,"%s",buffer);
Yandex
Объявления
30.06.2015, 11:57     Найти самое длинное слово в тексте и количество его повторений
Ответ Создать тему
Опции темы

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