infernal Posted January 20, 2011 at 10:37 PM Report #364728 Posted January 20, 2011 at 10:37 PM 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"); }
Elyst Posted January 20, 2011 at 11:34 PM Report #364739 Posted January 20, 2011 at 11:34 PM 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)
bubulindo Posted January 20, 2011 at 11:47 PM Report #364743 Posted January 20, 2011 at 11:47 PM 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 () { }
infernal Posted January 20, 2011 at 11:55 PM Author Report #364746 Posted January 20, 2011 at 11:55 PM 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
bubulindo Posted January 21, 2011 at 06:28 AM Report #364758 Posted January 21, 2011 at 06:28 AM 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 () { }
Localhost Posted January 21, 2011 at 07:20 PM Report #364894 Posted January 21, 2011 at 07:20 PM @bubulindo, não deveria ser: i <= fim? here since 2009
bubulindo Posted January 21, 2011 at 09:53 PM Report #364940 Posted January 21, 2011 at 09:53 PM Sim... Responder à meia noite dá nisto. :$ include <ai se te avio> Mãe () { }
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now