Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 15.01.2022
Сообщений: 3
1

Найти самое длинное слово, вывести его и определить, сколько раз оно встретилось в тексте

15.01.2022, 22:44. Показов 1252. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Найти самое длинное слово, вывести его и определить, сколько раз оно встретилось в тексте. Если таких слов несколько, то вывести все слова. Помогите решить задачу на основе уже выполненно
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.01.2022, 22:44
Ответы с готовыми решениями:

В тексте из файла найти самое длинное слово и определить, сколько раз оно встретилось
Пожалуйста помогите решить мне эту задачу?????????????? Написать программу, которая считывает...

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

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

Определить сколько раз оно встретилось в тексте самое длинное слово
Мне нужно здать програму но я не знаю как ее объяснить. Напишыте пожалуйста коменты к програе. Буду...

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

4
0 / 0 / 0
Регистрация: 15.01.2022
Сообщений: 3
15.01.2022, 22:58  [ТС] 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
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#include <iostream>
#include <string>
#include <conio.h>
#include <Windows.h>
 
using namespace std;
 
//функция удваивания буквы
void doub(char* str1, char a)
{
    int m = (strlen(str1)*2); //переменная для создания нового массива
    int i, j, k;
    char* massch = new char[m]; //новый массив для записи готового варианта
    i = 0;
    for (k = 0; k < strlen(str1); k++) //цикл для заполнения massch
    {
        if (str1[k] == a)
        {
            massch[i] = str1[k];
            i++;
            massch[i] = a;
            i++;
        }
        else
        {
            massch[i] = str1[k];
            i++;
        }
        if (strlen(str1)-k==1)
        {
            massch[i] = '\0'; //постановка терминирующего нуля, чтобы вывод работал исправно
            break;
        }
    }
    // вывод massch
    cout << "Результат: " << endl;
    j = 0;
    while (massch[j] != '\0')
    {
        cout << massch[j];
        j++;
    }
    delete[] massch;
}
 
//функция поиска самого длинного слова
void text(char* str2)
{
 ???
}
 
int main()
{
    setlocale(LC_ALL, "");
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    //интерфейс
    cout << "Добрый день!" << endl;
    cout << "Вы находитесь в редакторе строк" << endl;
    cout << endl;
    cout << "Выберите вариант: " << endl;
    cout << "Напишите 1 или 2 " << endl;
    cout << "1. Удвоить вхождение некоторой буквы в текст " << endl;
    cout << "2. Вывести самое длинное слово и сколько раз оно встретилось " << endl;
    //выбор варианта
    int variant;
    cin >> variant;
    if (variant == 1)
    {
        char str1[256]; //массив, в который вкладывают строку
        char a;
        cout << "Введите предложение размером не более 256 символов с ; в конце, в котором нужно удвоить некоторую букву " << endl;
        cin.getline(str1, 256, ';'); //функция для взятия строки
        cout << "Введите букву, которую нужно удвоить в введенном тексте " << endl;
        cin >> a;
        doub(str1,a); //вызов функции для обработки строки для 1 варианта
    }
    else if (variant == 2)
    {
        char str2[1024]; //массив, в который вкладывают строку
        cout << "Введите текст размером не более 1024 символа с ; в конце, в котором нужно найти самое длинное слово " << endl;
        cin.getline(str2, 1024, ';'); //функция для взятия строки
        text(str2); //вызов функции для обработки строки для 2 варианта 
    }
    else
    {
        cout << " Ошибка ввода." << endl;
    }
}
0
111 / 74 / 39
Регистрация: 16.05.2020
Сообщений: 292
17.01.2022, 10:16 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
49
50
51
52
53
54
#include <iostream>
#include <string.h>
#include <vector>
#include <algorithm>
#include <windows.h>
using namespace std;
 
void text(char * str)
{
    char strM[strlen(str)];
    strcpy(strM, str);
//-------------------------------
    char * pch;
    int intMax = 0;
    pch = strtok(str, " .?!,:;-\"()");
    int i = 0;
    while (pch != NULL) {
        if (i == 0) {
            intMax = strlen(pch);
            i++; continue;
        }
        if (strlen(pch) > intMax)
            intMax = strlen(pch);
        i++;
        //cout << pch << " --> " << strlen(pch) << endl;
        pch = strtok(NULL, " .?!,:;-\"()");
    }
    str[0] = 0;
    strcpy(str, strM);
//-------------------------------
    vector<string> wordMax;
    pch = strtok(strM, " .?!,:;-\"()");
    while (pch != NULL) {
        if (strlen(pch) == intMax)
            wordMax.push_back(pch);
        pch = strtok(NULL, " .?!,:;-\"()");
    }
//-------------------------------
    sort(wordMax.begin(), wordMax.end());
    string s;
    int counter = 0;
    cout << endl << "-------------" << endl;
    for (int j = 0; j < wordMax.size(); j++)
    {
        if (j == 0) s = wordMax[j];
        if (s != wordMax[j]) {
            cout << wordMax[j-1] << " (" << counter << ")\n";
            s = wordMax[j]; counter = 0; };
        if (j == wordMax.size()-1)
            cout << wordMax[j] << " (" << counter+1<< ")\n";
        counter++;
    }
    cout << "-------------" << endl;
}
1
0 / 0 / 0
Регистрация: 15.01.2022
Сообщений: 3
17.01.2022, 12:26  [ТС] 4
ivikis, выдает ошибку в строке 10: "Выражение должно иметь константное значение. Значение параметр str невозможно использовать как константу".
0
4064 / 3318 / 924
Регистрация: 25.03.2012
Сообщений: 12,493
Записей в блоге: 1
17.01.2022, 12:31 5
Цитата Сообщение от ivikis Посмотреть сообщение
char strM[strlen(str)];
SandroMorro, потому что так писать нельзя - убери это.
C++
1
char* strM = new char[strlen(str) + 1];
1
17.01.2022, 12:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.01.2022, 12:31
Помогаю со студенческими работами здесь

Найти самое длинное число и опредлить, сколько раз оно встретилось в тексте
подскажите что нужно исправить 6 заданрие 15 вариант Написать програму которая считывает текст с...

Найти самое длинное слово и определить, сколько раз оно встретилось в тексте.
Использовать текстовые файлы для ввода/вывода Написать программу, которая считывает текст из...

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

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

Найти самое длинное слово и определить, сколько раз оно встретилось в тексте
помогите пожалуйста. есть задание &quot;Написать программу, которая считывает текст из файла, находит...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru