Jump to content
Sign in to follow this  
infernal

Descobrir palavra de maior comprimento numa string

Recommended Posts

infernal

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");
}

Share this post


Link to post
Share on other sites
Elyst

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)

Share this post


Link to post
Share on other sites
bubulindo

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 () {

}

Share this post


Link to post
Share on other sites
infernal

Mas depois como faço para imprimir a maior palavra?

dizer o tamanho, "numero de caracteres", da maior palavra é relativamente simples, mas imprimir essa é que me está a atrofiar :wallbash:

Share this post


Link to post
Share on other sites
bubulindo

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 () {

}

Share this post


Link to post
Share on other sites
bubulindo

Sim...

Responder à meia noite dá nisto. :$


include <ai se te avio>

Mãe () {

}

Share this post


Link to post
Share on other sites

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
Sign in to follow this  

×
×
  • 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.