[Мы решаем ваши проблемы с Си и Паскалем ]
Главная » Статьи » Задачи из заказов » Заказ 09.11.07

Из введённого текста распечатать все слова наименьшей длинны.
// 5.26
// Из введённого текста распечатать все слова наименьшей длинны

#include <stdio.h>
#include <conio.h>
#include <string.h>

void main()
{
    clrscr();

    char* str;
    char ch, ans;
    int len, beg, l, i, j, minl;

    do
    {
        printf("Vvedite tekst\n");
        gets(str);

        len = strlen(str);

        minl = 0;
        beg = -1;

        for (i = 0; i < len; i++)
            if (str[i] != ' ')
            {
                if (i == 0 || str[i - 1] == ' ')
                    beg = i;
                if ((i == len - 1 || str[i + 1] == ' ') && beg != -1)
                {
                    l = i - beg + 1;
                    if (minl == 0 || minl > l)
                        minl = l;
                }
            }


        printf("Minimalnaya dlinna slova: %d\n", minl);
        if (minl != 0)
        {
            printf("Slova s takoy dlinnoy:\n");

            for (i = 0; i < len - minl + 1; i++)
                if ((str[i] != ' ') && (i == 0 || str[i - 1] == ' ') && (i + minl == len || str[i + minl] == ' '))
                {
                    for (j = 0; j < minl; j++)
                        printf("%c", str[i + j]);
                    printf("\n");
                    i += minl - 1;
                }
        }

        printf("Esho raz?(Y/N)\n");
        ans = getch();
        printf("%c\n", ans);
    }
    while (ans == 'Y' || ans == 'y');
}

Категория: Заказ 09.11.07 | Добавил: solver (09.11.2007)
Просмотров: 853