Сведения о вопросе

DUNKER

01:43, 22nd August, 2020

Теги

C    

Найти минимальную длину слова на C

Просмотров: 325   Ответов: 2

Запоролся на простой задаче.
На вход подается txt со строкой (до 200 символов), необходимо найти минимальную длину слова в этой строке. За слово считается последовательность английских букв (вот тут вопрос, последовательностью ведь не может быть одиночный символ?).

Наваял по-быстрому следующее:
#include "stdafx.h"
#include <stdio.h>

int main()
{
freopen("input.txt","r",stdin);

char c;
int n = 0;
int min = 1000;

while (scanf("%c", &c) == 1)
{
if(isalpha©)
n++;
else
{
if(n<min && n>1)
min=n;
n=0;
}
}
printf("%d", min);
fclose (stdin);

return 0;
}

Обычное предложение типа «Hello, the world!» считает нормально (the специально добавил). Однако если строка начинается не с буквы, или заканчивается буквой, или ещё какая-нибудь неестественная фигня, то считается криво. А надо, чтоб считались все последовательности, в независимости от их местонахождения.



  Сведения об ответе

9090

10:49, 6th August, 2020

Не смог воспроизвести ошибки «считается криво»:

#include <stdio.h>
#include <ctype.h>
 
int main()
{
    freopen("input.txt","r",stdin);
    
    char c;
    int n = 0;
    int min = 1000;
    
    while (scanf("%c", &c) == 1)
    {
        if(isalpha©)
            n++;
        else
        {
            if(n<min && n>1)
                min=n;
            n=0;
        }
    }
    printf("%d", min);
    fclose (stdin);
         
    return 0;
}


[frol:~]$ cat input.txt; c++ qq.c -o qq; ./qq
_Hello worldq
5
[frol:~]$ cat input.txt; c++ qq.c -o qq; ./qq
Hello worldq
5
[frol:~]$ cat input.txt; c++ qq.c -o qq; ./qq
Hello, worldq
5
[frol:~]$ cat input.txt; c++ qq.c -o qq; ./qq
Hello, the worldq
3
[frol:~]$ cat input.txt; c++ qq.c -o qq; ./qq
Hello, the world!
3


  Сведения об ответе

lourence

07:11, 12th August, 2020

А где здесь C++?


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться