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

Нахождение слова минимальной длины

16.11.2016, 20:11. Показов 4620. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброе время суток
Имеется такой код просто вывода текста из файла на экран(Слов в файле несколько строк.), нужно сделать так, что бы еще выводилось слово(-а) минимальной длины. Но как это сделать - не понимаю.


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
#include "stdafx.h"
#include <conio.h>
#include <stdint.h>
#include <math.h>
#include <stdio.h>
#include <iostream>
#include <string>
#include <sstream>
#include <ctype.h>
#include <fstream>
#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable: 4996)
using namespace std;
int main()
 
{
    FILE *f1;
    setlocale(LC_ALL, "RUS");
    char *str = ",. !?:;:'\n\0"; // str – Константа с разделителями.
    char ch = ' ';
    char st[81], sr[81]; // sr – для строки из файла.
                         // st – для слова из строки.
    int k = -1, i;
    system("cls");
    f1 = fopen("1.txt", "r");
    do
    {
        fgets(sr, 80, f1); // Ввод строки из файла.
        for (i = 0; i < strlen(sr); i++) // Начало цикла по i.
        {
            ch = sr[i];
            if (strchr(str, ch)) // Если символ не разделитель, то иди на формирование слова.
            {
                if (k != -1) // Если слово сформировано, значение k не равно –1.
                {
                    k++; // Определяем индекс для символа \0 (конец строки).
                    st[k] = '\0'; // Из массива символов st формируем строку.
                                  //___________________________________________________________
                    cout << "\n" << st; // Вывод слов на экран.
                    k = -1; // Устанавливаем k = –1.
                }
            }
            else
            { // Формируем слово.
                k++; // Определяем индекс k для текущего символа слова.
                st[k] = ch; // В массив для слова st засылаем текущий символ.
            }
        } // Конец цикла по i.
 
 
    } while (!feof(f1)); // Конец цикла по считыванию текста из файла.
    fclose(f1);
 
 
    _getch();
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.11.2016, 20:11
Ответы с готовыми решениями:

Строки. Поиск слова минимальной длины, вывод этой длины, номер слова и само слово
Как организовать решение такой задачи? Может как-то через создание массивов, в ячейках которых...

В файле заменить все слова максимальной длины на слова минимальной длины
Нужно в считанном из файла тексте заменить все слова максимальной длины на слова минимальной длины,...

Нахождение К путей Минимальной суммарной длины Во взвешенном графе с неотрицательными весами(Алгоритм Йена).
Нахождение К путей Минимальной суммарной длины Во взвешенном графе с неотрицательными...

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

4
43 / 43 / 20
Регистрация: 08.12.2010
Сообщений: 342
16.11.2016, 20:35 2
1. Создал массив string;
2. Сохранил туда все слова;
3. Потом обработал по длине каждое слово и нашел минимальное;
Старый дедовский метод =)
0
4 / 4 / 1
Регистрация: 18.01.2016
Сообщений: 163
18.11.2016, 16:26  [ТС] 3
Что то не могу сообразить. Может кто набросать примерный код ?
0
43 / 43 / 20
Регистрация: 08.12.2010
Сообщений: 342
18.11.2016, 16:57 4
Лучший ответ Сообщение было отмечено sajokarife как решение

Решение

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
{
    FILE *f1;
    setlocale(LC_ALL, "RUS");
    char *str = ",. !?:;:'\n\0"; 
    char ch = ' ';
    char st[81], sr[81];
    string minSlovo;                    
    int k = -1, i, min=9999999;
    system("cls");
    f1 = fopen("1.txt", "r");
    do
    {
        fgets(sr, 80, f1);
        for (i = 0; i < strlen(sr); i++) 
        {
            ch = sr[i];
            if (strchr(str, ch)) 
            {
                if (k != -1) 
                {
                    k++; 
                    st[k] = '\0'; 
                        if ((k-1) < min) {
                            minSlovo = st;
                            min = k-1;
                          } 
                    cout << "\n" << st; 
                    k = -1; 
                }
            }
            else
            {
                k++; 
                st[k] = ch; 
            }
        } 
 
 
    } while (!feof(f1));
    fclose(f1);
 
    cout << "minSlovo:" << minSlovo;
    _getch();
    return 0;
}
1
4 / 4 / 1
Регистрация: 18.01.2016
Сообщений: 163
18.11.2016, 17:15  [ТС] 5
Большое спасибо!
0
18.11.2016, 17:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.11.2016, 17:15
Помогаю со студенческими работами здесь

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

Работа с файлами. Определить и напечатать слова минимальной длины
Определить и напечатать слова минимальной длины.

В тексте найти слова минимальной длины и записать их в файл
Закончить программу, которая будет определять и печатать СЛОВА минимальной длины из текста в файл...

Поменять местами слова максимальной и минимальной длины в строке
Задание: Дана строка. Подсчитать количество символов в каждом слове. Сформировать новую строку,...


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

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