Jump to content

Descobrir palavra de maior comprimento numa string


Recommended Posts

Posted

Boa noite a todos.

Estava a tentar fazer o seguinte programa e neste momento não estou a conseguir descobrir como consigo encontrar a palavra de maior comprimento, estou à procura de soluções. O programa que tenciono fazer é o seguinte

Escreva um programa que pede ao utilizador para escrever uma frase e apresenta no ecrã quantas palavras constituem a frase, a palavra de maior comprimento e o comprimento médio das palavras. Para simplificar assuma que as palavras são separadas por um único carácter de espaço.

E neste momento o código que tenho é este

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

main()
{

char frase[100];
int i, counter=0, countdig=0; //n=1, MP=0;

printf("Introduza a sua frase:\n");
gets(frase);

for(i=0; frase[i]!='\0'; i++)
{
if(frase[i]==' '){
                counter++;
                }
                }
printf("a frase e constituida por %d palavras\n", counter+1);

for(i=0; frase[i]!='\0'; i++)
{
          countdig++;
          }
printf("O comprimento medio das palavras da frase e de:  %.2f \n", float(countdig-counter)/(counter+1));




system("pause");
}
Posted

não tenho a certeza se isto funciona mas achas que consegues contar os espaços?

Dpois só tens de somar os espaços +1 pois a primeira palavra que escrevi não tinha um espaço anteriormente.

Tenta fazer um ciclo que compare cada valor da string e compare com um (espaço) ' '

Em seguida fazes um if que incrementa um contador cada vez que o espaço é encontrado. No fim disso tudo aumentas mais 1 unidade para a primeira palavra.

Eu acho que deve funcionar...mas não tenho a certeza.

Espero que tenha ajudado.

“The trouble with programmers is that you can never tell what a programmer is doing until it’s too late.”(Seymour Cray)

Posted

Fazes um ciclo que corra a string toda e grava o local onde encontrou espacos.

Quando encontrar o primeiro, calculas a diferenca entre 0 e o primeiro local onde encontrou espaco.

Depois continuas o ciclo, até encontrares outro espaco. Aí fazes a diferenca entre a posicão actual e a posicão encontrada anteriormente. Se for maior, guardas esse tamanho, e podes também guardar o inicio e fim para posteridade. E continuas a percorrer o array até ao fim.

percebeste?

include <ai se te avio>

Mãe () {

}

Posted

LOL Eu escrevi isto:

e podes também guardar o inicio e fim para posteridade.

Para posteridade seria mostrares o que está entre esses dois indices. Ou seja,

for (i= inicio; i<fim; i++)
printf("%c", vector[i];

Tás a ver a ideia agora?

include <ai se te avio>

Mãe () {

}

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.