С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Liori
4 / 4 / 1
Регистрация: 30.08.2012
Сообщений: 155
#1

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

30.06.2015, 11:35. Просмотров 344. Ответов 5
Метки нет (Все метки)

Использовать только функции 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");
}
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.06.2015, 11:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти самое длинное слово в тексте и количество его повторений (C++):

Строки. В заданном тексте найти самое длинное слово и самое длинное предложение. - C++
Задача: В заданном тексте найти самое длинное слово и самое длинное предложение. Помогите решить На СИ++ в Visual Studio.

Найти в тексте самое длинное слово и самое длинное предложение - C++
вписать текст с клавиатуры и найти в этом тексте самое длинное слово и самое длинное предложение.Предложения должны быть разделены точкой.

Найти самое длинное слово в файле и определить количество его вхождений - C++
Помогите пожалуйста с програмой. Не могу понять как ето зделать: Написать программу, которая считывает текст из файла, находит самое...

Найти самое короткое слово в заданном текстовом файле и количество его повторений - C++
Дан код, который выводит самое короткое слово в заданном текстовом файле и считает кол-во повторений этого слова в тексте. Нужно сделать...

Найти самое длинное и самое короткое слово в тексте - C++
найти самое длинное и самое короткое слово в тексте #include &quot;stdafx.h&quot;endl; #include &lt;iostream&gt; #include &lt;string&gt; #include...

Найти самое длинное слово в заданном тексте - C++
Помогите пожалуйста!!! задан текст, найти самое длинное слово.

5
zss
Модератор
Эксперт С++
6583 / 6145 / 2024
Регистрация: 18.12.2011
Сообщений: 16,020
Завершенные тесты: 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);
                }
0
Liori
4 / 4 / 1
Регистрация: 30.08.2012
Сообщений: 155
30.06.2015, 11:47  [ТС] #3
zss, спасибо большое. Только подскажите, почему на строке
C++
1
while (f>>buffer)
возникает ошибка "выражение должно относиться к целочисленному типу или типу перечисления без области видимости"? Я раньше пробовала тоже с помощью while (f>>buffer) написать, но возникала такая же ошибка..(
0
zss
Модератор
Эксперт С++
6583 / 6145 / 2024
Регистрация: 18.12.2011
Сообщений: 16,020
Завершенные тесты: 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");
}
0
Liori
4 / 4 / 1
Регистрация: 30.08.2012
Сообщений: 155
30.06.2015, 11:56  [ТС] #5
zss, а как это сделать именно сишным вводом-выводом? Вот эту функцию применить?
C++
1
while (fread(&buffer, sizeof buffer, strlen(buffer), f))
0
zss
Модератор
Эксперт С++
6583 / 6145 / 2024
Регистрация: 18.12.2011
Сообщений: 16,020
Завершенные тесты: 1
30.06.2015, 11:57 #6
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
C
1
fscanf(f,"%s",buffer);
0
30.06.2015, 11:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.06.2015, 11:57
Привет! Вот еще темы с ответами:

Во введённом тексте найти самое длинное слово - C++
Во введённом тексте найти самое длинное слово и вывести его на экран.

Найдите самое длинное слово в тексте и подсчитайте количество гласных букв в нем - C++
Найдите самое длинное слово в тексте и подсчитайте количество гласных букв в нем.

Найти во введённом тексте самое длинное симметричное слово - C++
1. Дана строка. Удвоить каждую встречающуюся «о» и «а». 2. В заданном тексте удалить из текста пробелы и подсчитать длину...

Во введенном тексте найти самое длинное симметричное слово - C++
Здравствуйте! Помогите, пожалуйста, с задачей: в строке нужно найти самое длинное симметричное слово.


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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