Ir ao conteúdo
  • Cadastre-se
EvertonPlive

C Consertar código em C

Recommended Posts

Gostaria de saber se alguém pode me ajudar a resolver esse problema e me explicar o erro, compila mas não roda completo, ele não termina quando digita "fim" e não sei se está mostrando o último printf. 

A proposta do exercício é a seguinte: Elaborar uma aplicação console que peça o nome e sexo de uma pessoa. Apresentar no final quantas pessoas são do sexo masculino e quantas são do sexo feminino. O programa encerra quando o usuário digitar FIM no nome da pessoa.

 

Segue meu código abaixo e um anexo da mensagem de erro no compilador:

 

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

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[])
 {
     char sexo;
    char nome[20];
     int qtdhomem, qtdmulher;
     printf("digite o nome da pessoa ");
     scanf("%s", &nome);
     while(nome!='fim')
     {
     
     
     printf("\ndigite a letra do sexo da pessoa (m/f) ");
     scanf("%s", &sexo);
     if(sexo='f')
     {
         qtdmulher++;
     }
     else
     if(sexo="m")
     {
         qtdhomem++;
          }
          else
          printf("sexo digitado errado");     
     printf("digite o nome da pessoa ");
     scanf("%s", &nome);
     
     }
     printf("\n%5.2d pessoas sao do sexo masculino e %5.2d sao do sexo feminino\n", qtdhomem, qtdmulher);
     system("pause");
    return 0;
}

image.thumb.png.6bd003b772492bea7ba041949123bcbb.png

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@EvertonPlive     voce precisa colocar o do   antes do while la em cima antes do primeiro printf  e para guardar os nomes precisa ser um vetor. assim. :  nome[30] [20];    e use aspas dupla e no while use strcmp  assim.   :    while(strcmp(nome,"fim")!=0);

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@devair1010 só tive tempo de testar no fim de semana, obrigado pela ajuda até agora.

 

O código está assim agora: 

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

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[])
 {
     char nome[30][20];
    char sexo;
     int qtdhomem, qtdmulher;
     do
     printf("digite o nome da pessoa ");
     scanf("%s", &nome);
     while(strcmp(nome,"fim")!=0);
     {
     
     
     printf("\ndigite a letra do sexo da pessoa (m/f) ");
     scanf("%c", &sexo);
     if(strcmp(sexo,"f")=0)
     {
         qtdmulher++;
     }
     else
     if(strcmp(sexo,"m")=0)
     {
         qtdhomem++;
          }
          else
          printf("sexo digitado errado");     
     printf("digite o nome da pessoa ");
     scanf("%s", &nome);
     
     }
     printf("\n%5.2d pessoas sao do sexo masculino e %5.2d sao do sexo feminino\n", qtdhomem, qtdmulher);
     system("pause");
    return 0;
}

 

e apresenta o seguinte erro: 

 

image.thumb.png.f263ad2ec7cb01d93251a450d618456d.png

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@EvertonPlive     na linguagem c / c++ java etc...  costuma se usar abre chaves e fecha chaves , {  }  ,  em alguns comandos como em while , do/while  , if , for , assim como no início e no final das funções , e ali nesse código na linha 11 tem um do e precisa colocar esse abre chaves depois dele , e lá em baixo na linha  14 coloque o fecha chaves antes do while .    então seu código poderia ser assim    :

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[]){
    char sexo;
    char nome[20];
    int qtdhomem=0, qtdmulher=0;
    while( 1 ){
        printf("Digite O Nome Da Pessoa ");
        fflush(stdin);
        scanf("%s",nome);
        if(strcmp(nome,"fim") != 0 ){
            do{
                printf("Digite A Letra Do Sexo Da Pessoa (m/f) ");
                fflush(stdin);
                scanf("%c",&sexo);
                if(sexo  == 'f'){
                    qtdmulher++;
                }
                else
                    if(sexo == 'm'){
                        qtdhomem++;
                    }
                    else
                        printf("Sexo Digitado Errado\n\n");     
            }while(sexo!='m' && sexo !='f');
        }
        else break;
    }
    if(qtdhomem == 1) printf("\n  1 Pessoa eh ");
    else printf("\n%3d Pessoas Sao ",qtdhomem);
    printf("Do Sexo Masculino\n");
    printf("                 e\n");
    if(qtdmulher == 1) printf("  1 Pessoa eh ");
    else printf("\n%3d Pessoas Sao ",qtdmulher);
    printf("Do Sexo Feminino\n\n");
    system("pause");
    printf("\n\n");
    return 0;
} 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×