0 / 0 / 0
Регистрация: 27.11.2019
Сообщений: 2
1

Найти слово наименьшей длины

27.11.2019, 14:18. Показов 1903. Ответов 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
90
91
92
93
94
95
#include <iostream>
#include <fstream>
#include <string>
#include <windows.h>
using namespace std;
//поиск слова наименьшей длины
string minLen(char a[80])
{
    string word = "";
    string res = "";
    for (int i = 0; i < strlen(a); i++)
    {
        if (a[i] >= 'а' && a[i] <= 'я')
        {
            word += a[i];
 
        }
        else
        {
            if (word.length() < res.length() || res == "")
                res = word;
            word = "";
        }
    }
    //проверка последнего слова
    if (word.length() < res.length())
        res = word;
    return res;
}
string maxLen(char a[80])
{
    string word = "";
    string res = "";
    for (int i = 0; i < strlen(a); i++)
    {
        if (a[i] >= 'а' && a[i] <= 'я')
        {
            word += a[i];
 
        }
        else
        {
            if (word.length() > res.length())
                res = word;
            word = "";
        }
    }
    //проверка последнего слова
    if (word.length() > res.length())
        res = word;
    return res;
}
int main()
{
    setlocale(LC_ALL, "Rus");
    char s[80];
    string all[10];
    string forSize[10];
    int numbers[10];
    int k = 0;
    fstream in("D:\\in.txt");
        while (!in.eof())
    {
        in.getline(s, 80);
        all[k] = minLen(s);
        forSize[k] = maxLen(s);
        numbers[k] = k + 1;
        k++;
    }
    in.close();
    //сортировка массива строк с наименьшей длиной по возрастанию
    //методом пузырька
    for (int i = 0; i < k; i++)
    {
        int max = all[i].length();
        int n = i;
        for (int j = i; j < k; j++)
            if (all[j].length() < max)
            {
                max = all[j].length();
                n = j;
            }
        string tmp = all[i];
        all[i] = all[n];
        all[n] = tmp;
        int num = numbers[i];
        numbers[i] = numbers[n];
        numbers[n] = num;
        //вывод результата
        cout << "Слово наименьшей длины - " << all[i] << " Номер строки - " << numbers[i] << " Количество букв в самом длинном слове строки " << forSize[numbers[i] - 1].length() << endl;
    }
    system("pause");
    return 0;
 
}
Проблема в том, что он не выводит Слово наименьшей длины и Количество букв в самом длинном слове строки. Не могу понять почему это происходит.
Миниатюры
Найти слово наименьшей длины  
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.11.2019, 14:18
Ответы с готовыми решениями:

Вывести последнее слово текста наименьшей длины
Дан текстовый файл. Вывести последнее слово текста наименьшей длины. Словом считать набор символов,...

Надо последнее слово текста наименьшей длины( с++)
Дан текстовый файл. Вывести последнее слово текста наименьшей длины. Словом считать набор...

Найти отрезок наименьшей длины, удовлетворяющий указанным ограничениям
В парке города Питсбурга есть чудесная аллея, состоящая из N посаженных в один ряд деревьев, каждое...

Найти отрезок наименьшей длины, удовлетворяющий указанным ограничениям
В парке города Питсбурга есть чудесная аллея, состоящая из N посаженных в один ряд деревьев, каждое...

2
6574 / 4559 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
27.11.2019, 15:08 2
Цитата Сообщение от Markywa Посмотреть сообщение
Проблема в том, что он не выводит Слово наименьшей длины и Количество букв в самом длинном слове строки. Не могу понять почему это происходит.
Проверь кодировку файла, должна быть 1251
Вот так отрабатывает
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    char s[80] = "ааа бббб вввввв";
    all[k] = minLen(s);
    forSize[k] = maxLen(s);
    numbers[k] = k + 1;
    k++;
    //fstream in("D:\\in.txt");
    //while (!in.eof())
    //{
    //  in.getline(s, 80);
    //  all[k] = minLen(s);
    //  forSize[k] = maxLen(s);
    //  numbers[k] = k + 1;
    //  k++;
    //}
    //in.close();
Добавлено через 3 минуты
У тебя в файле только русские символы, маленькие?
0
0 / 0 / 0
Регистрация: 27.11.2019
Сообщений: 2
27.11.2019, 18:09  [ТС] 3
Да, только русские и все маленькие.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.11.2019, 18:09
Помогаю со студенческими работами здесь

Найти в каждой строке текста слова наименьшей длины и вывести на экран
Здравствуйте! Подскажите, пожалуйста, как исправить код, чтобы программа находила в каждой...

В trie-дереве найти слово с наименьшей длиной
привет. пожалуйста помогите с задачи. как искать слово с наименьшей длиной. #include...

Определить слова наибольшей и наименьшей длины и величину длины.
Дано предложение (символьная строка, где слова отделяются друг от друга запятой). Определить слова...

Слово максимальной длины заменить на слово минимальной длины
Задача: Создать 2 объекта разработанного класса. Одной из компонент класса является символьная...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru