Ir ao conteúdo

Posts recomendados

Postado

 

Devo fazer um programa em C que peça ao usuário para digitar uma frase. O programa deverá então indicar quantas palavras tem na frase, além de mostrar a maior e a menor palavra (se houver mais de uma palavra que tem o tamanho mínimo e máximo, indicar apenas a primeira).

As duas funções da biblioteca string,h que podem ser usadas são a strlen() e strcpy().

 

Fiz o seguinte programa, mas está dando erro na hora de imprimir a maior palavra, poderia me ajudar?

 

CODE<

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

/* Programa para indicar quantas palavras tem na frase e qual a maior e a menor palavra_Kaylane Luiza Moreira Viegas*/


 int main (void){
char frase[50];
int i, flag=0, total=0;
char palavra[200];


//Nessa parte do programa o usuário insere a frase que deseja//
printf("Insira a frase\n");
fgets(frase,51,stdin);

for(i=0;frase[i]!='\0';i++) {
    if(!flag && frase[i]!=' ') {
        flag=1;
        total++;
    }
    else if(flag && frase[i]==' ')
        flag=0;
}

//Nesse momento o programa imprime quantas palavras a frase posssui//
printf("A quantidade  de palavras é: %d\n",total);

 strcpy();
     int tamanho = strlen(palavra);
    int maior=0, ini=0; //variaveis da maior palavra
    int cont=0, temp_ini=0; //variaveis do temporario
    
    
    for (i = 0; i <=tamanho; i++){
       
        //se a frase terminou ou a palavra terminou
        if(i==tamanho || palavra[i] == ' '){
            if(maior<cont){
                maior=cont;
                ini=temp_ini;
            }
            cont=0;
            temp_ini=i+1;
        }
        else{
            cont++;
        }
    }   

    printf("\nMaior palavra: ", ini);{
     for (i = ini; i <ini+maior; i++)
        printf("%c", palavra[i]);
 }
   
    for (i = ini; i <ini+maior; i++){
        printf("%c", palavra[i]);
 }
    

return 0;
}

>

  • Obrigado 1
Postado

@Filipe7338      a parte  da contagem das palavras da frase está certa , mas está bem confuso e usando muitas linhas , e apesar de que você colocou a função strcpy sem nada para ela fazer , e assim seu código não está compilando , e então  seu código com algumas modificações poderia ser assim  :

#include <iostream>                                                    // biblioteca para usar os comandos da Linguagem C++
#include <stdio.h>                                                     // biblioteca para usar os comandos da Linguagem C
#include <windows.h>                                                   // biblioteca para usar os comandos da API do windows
#include <stdlib.h>
#include <string.h>                                                    // biblioteca para usar os comandos das funções sobre string
/*  Programa para indicar quantas palavras tem na
    frase e qual a maior e a menor palavra_Kaylane
    Luiza Moreira Viegas
*/
void getch();                                                          //  uma pausa até precionar alguma tecla
int main()
{
    char frase[50],maior_palavra[50],
         palavra[50],menor_palavra[50];
    int i,total=0,tamanho,menor,
        maior=0, ini=0,j,                                              //  variaveis da maior palavra
        cont=0, temp_ini=0;                                            //  variaveis do temporario
                                                                       //  Nessa parte do programa o
                                                                       //  usuário insere a frase que deseja//
    printf("Insira a frase ");
    fgets(frase,51,stdin);                                             //  pega dados do teclado até 50 caracteres e \0 e \n
    for( i=0; frase[i] != '\0'; i++ )                                  //  percorre a frase toda até encontrar o caractere nulo \0
        if( frase[i] == ' ' || frase[i+1] == '\0' )                    //  cada espaço e \0 é uma palavra
            total++;                                                   //  incrementa a quantidade de palavras
                                                                       //  Nesse momento o programa imprime
                                                                       //  quantas palavras a frase posssui//
    printf("\nA Quantidade  de Palavras eh --: %d\n\n",total);         //  mostra a quantidade de palavras
    for( i=0; frase[i] != '\0'; i++ )                                  //  percorre a frase toda até encontrar o caractere nulo \0
    {
        j=0;                                                           //  posição dos caracteres na palavra copiada
        while(frase[i] != ' ' && frase[i+1] != '\0' )                  //  percorre a frase toda até encontrar um espaço ou o caractere nulo \0
        {
            palavra[j] = frase[i];                                     //  copia o caractere da frase para a palavra
            j++;                                                       //  incrementa a posição na frase
            i++;                                                       //  incrementa a posição na palavra
        }
        palavra[j] = '\0';                                             //  valida a palavra colocando o finalizador de string  \0
        tamanho = strlen(palavra);                                     //  pega o tamanho dessa palavra
        if(tamanho > maior)                                            //  se essa palavra maior que a anterior
        {
            maior = tamanho;                                           //  variável maior passa a ter o tamanho dessa
            strcpy(maior_palavra,palavra);                             //  coloca essa palavra na variavel maior_palavra
        }
        else                                                           //  senão
        {
            if(tamanho < menor)                                        //  se essa palavra for menor qua a anterior
            {
                menor = tamanho;                                       //  a variável menor passa a ter o tamanho dessa
                strcpy(menor_palavra,palavra);                         //  coloca a palavra na variável menor_palavra
            }
        }
    }
    //se a frase terminou ou a palavra terminou
    printf("A Maior palavra ------------------: %s\n",maior_palavra ); //  mostra a maior palavra da frase
    printf("Com Tamanho De %d Caracteres .\n\n"      ,maior         );
    printf("A Menor palavra ------------------: %s\n",menor_palavra ); //  mostra a menor palavra da frase
    printf("Com Tamanho De %d Caracteres .\n\n"      ,menor         );
    getch();                                                           //  uma pausa até precionar alguma tecla do teclado
    return 32768;                                                      //  para ver se ocorreu tudo certo ele mostra esse valor no final
}
void	getch()                                                        //  função para pausar
{
  FlushConsoleInputBuffer(GetStdHandle(STD_INPUT_HANDLE));             //  funções da API  do windows
  WaitForSingleObject(GetStdHandle(STD_INPUT_HANDLE), INFINITE);       //  funções da API  do windows
}

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!