Jump to content
Fórum Script Brasil
  • 0

Dúvida em exercícios


Ihannah

Question

Estou tentando fazer alguns exercícios em C mas não estou tendo sucesso, alguém pode me ajudar?

Essa foi a tentativa frustrada de fazer esse exercício, fora esses tem mais uns 3, mas quero focar nesse primeiro...

Alguém pode me ajudar? Não sei o que eu estou fazendo de errado :/

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

int main (void)
{
    //Exercício 5
    /*Um marciano chegou a uma floresta e se escondeu atrás de uma das 50 árvores
    quando viu um caçador. O caçador só tinha cinco balas em sua espingarda. Cada
    vez que ele atirava, e não acertava, é claro, o marciano dizia: estou mais à
    direita ou mais à esquerda. Se o caçador não conseguir acertar o marciano,
    ele será levado para Marte. Faça este jogo em Linguagem C para dois jogadores,
    onde um escolhe a árvore em que o marciano irá se esconder, e o outro tenta acertar.*/
    
    int arvore1, arvore2, balas;
    printf("Um marciano chegou a uma floresta e se escondeu atras de uma das 50 arvores quando viu um cacador. O cacador so tinha cinco balas em sua espingarda.");
    printf("\nJogador 1, voce sera o marciano, em que arvore vai se esconder? ");
    scanf("%d", &arvore1);
    printf("\nJogador 2, voce sera o cacador e tem que adivinhar onde o marciano se esconde. Boa sorte!");
    printf("\n\nMarciano: Haha, duvido voce me achar!!!");
     
      for (balas==5; balas==0; balas--) { //abre for
           do { //abre do
                 printf("\n\nQual o numero da arvore onde o marciano esta? ");
                 scanf("%d", &arvore2);
             if (arvore1 == arvore2){ //abre if
               printf("Marciano: Oh, não! Voce me pegou!! :((");
                  } //fecha if
             else { //abre else
               printf("Haha, estou mais a"); //fecha else

             if (arvore1 < arvore2){ //abre if
               printf("esqueda e voce tem mais %d chance(s)!", balas);
                   } //fecha if
             else  {} //abre e fecha else
           
            if (arvore2 < arvore1) { //abre if
                printf("direita e voce tem mais %d chance(s)!", balas); } //fecha if
             else {}} //abre e fecha else
                    }  while ((arvore1!=arvore2) || (balas>0)); //fecha do
                    } //fecha for
          
           printf("\n\n");
           system ("pause");
           return 0;
}

Obg, Ihannah

Link to comment
Share on other sites

12 answers to this question

Recommended Posts

  • 0

Tente isso:

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

int main ()
{   
    int arvore1=0, arvore2=0, balas=0 ,tentativas=4;
    
    printf("Um marciano chegou a uma floresta e se escondeu atras de uma das 50 arvores\n");
    printf("quando viu um cacador. O cacador so tinha cinco balas em sua espingarda.\n");
    printf("\nJogador 1, voce sera o marciano, em que arvore vai se esconder?\n ");
    scanf("%d", &arvore1);
    printf("\nJogador 2, voce sera o cacador e tem que adivinhar onde o marciano se esconde.\n Boa sorte!");
    printf("\n\nMarciano: Haha, duvido voce me achar!!!");
    
    while(balas <=4)
    {
                                   
                 printf("\n\nQual o numero da arvore onde o marciano esta? ");
                 scanf("%d", &arvore2);
                 
                 if (arvore1 == arvore2)
                 { 
                     printf("Marciano: Oh, não! Voce me pegou!! :((\n\n");
                     system ("pause");
                     return 0;
                 }
                 
                 else if (arvore1 != arvore2)
                 { 
                     printf("Haha, estou mais a ");  
                     
                     if (arvore1 < arvore2)
                     printf("esqueda e voce tem mais %d chance(s)!", tentativas);
                     
                     else
                     printf("direita e voce tem mais %d chance(s)!", tentativas);
                 }    
           balas ++;    
           tentativas --;  
    }
    
          printf("\n\nVoce não encontrou o marciano.Tente novamente!!!!!\n\n");                 
          system ("pause");
          return 0;
}

Edited by Binder
Link to comment
Share on other sites

  • 0

Meu deus, você é o mestre!

Vou postar aqui os enunciados dos outros exercícios (aqueles que eu não tenho nem ideia de como fazer). Se você não puder ou não tiver saco pra me ajudar, tudo bem.

Muito obrigada! :D

4) Em uma pesquisa de campo, uma editora solicitou os seguintes dados para os entrevistados: sexo (1-masculono e 2-feminino), idade e quantidade de livros que leu no ano de 2008. Faça um programa em Linguagem C que leia os dados digitados pelo usuário, sendo que deverão ser solicitados dados até que a idade digitada seja um valor negativo. Depois, calcule e imprima:

a)A quantidade total de livros lidos pelos entrevistados menores de 10 anos.

B)A quantidade de mulheres que leram 5 livros ou mais.

c)A média de idade dos homens que leram menos que 5 livros.

d) O percentual de pessoas que não leram livros.

5)Faça um programa em Linguagem C que leia um intervalo da entrada (início e fim)

e um número (num). O programa deve imprimir os múltiplos de num entre início e fim.

Exemplo:

valores lidos: 1 15 3(num)

impressão: 3 6 9 12 15

10)Faça um programa em C que gerencie as contas correntes do 1000 clientes do

Banco Oir Cup, um banco ítalo-anglo-afro-luso-nipo-brasileiro. O programa

deverá ler, para cada cliente o código do cliente (tipo inteiro), saldo

anterior (tipo real) e as movimentações da conta.

Cada movimentação é composta por um código (tipo inteiro indicando

1-Crédito, 3-Débito ou 9-Fim das movimentações deste cliente) e um valor

(tipo float). Deverá ser impresso, para cada cliente, o seu código e o saldo

atual (após o processamento das movimentações). Ao final, deverá ser impresso

o total de dinheiro em caisa no banco (soma dos saldos de todos os clientes)

e o código do cliente que possui maios saldo.

Obs. o menor saldo possível é de R$1.000,00 (negativos).

Link to comment
Share on other sites

  • 0

Opa, fiz seu exercicio n10. Pelo o que entendi acho que é isso. Como te falei anteriormente, só praticando que você conseguirá evoluir e aprender. Não importa se errar, isso faz parte do aprendizado...

Essa parte deixo para você tentar fazer:

Ao final, deverá ser impresso:
* O total de dinheiro em caisa no banco (soma dos saldos de todos os clientes)
* E o código do cliente que possui maios saldo.

Obs. o menor saldo possível é de R$1.000,00 (negativos).
Seu exercicio:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

struct banco {
       
   int   codigo;
   char  nome[30];
   float saldodebito,saldocredito;

};

   int  main() {      
            
    banco vet[1000];
    int op=0,ultimo=0,i=0,achoucodigo=0,cdperacao=0,cc=0,cd=0,fc=0;
    float debito=0,novocredito=0,novodebito=0;
    
          
            
    while(op!=5){
                  
      printf("\n====================================MENU=================================\n");            
      printf("1-Cadastrar cliente no banco: \n");                    
      printf("2-Listar todos clientes no banco: \n");  
      printf("3-Listar cliente de codigo igual a: \n");
      printf("4-Fazer operacao bancaria:\n");                          
      printf("5-Sair\n\n\n");
      scanf("%d",&op);
     
        if(op==1) 
        {
               printf("informe codigo do cliente:");         
               scanf("%d",&vet[ultimo].codigo);        
               printf("informe nome do cliente:");
               fflush(stdin);   
               fgets(vet[ultimo].nome,30,stdin);
               fflush(stdin);                
               printf("informe valor inicial para abertura da conta:");         
               scanf("%f",&vet[ultimo].saldocredito);        
               ultimo ++;   
               system("cls");     
        }           


        if(op==2)
        {
               if(ultimo == 0){
                    printf("Nenhum cliente foi cadastrado ainda no banco.Favor verificar!\n");
                    system("pause");          
                    return main();}
               else{               
                    for(i=0;i<ultimo;i++){        
                    printf("=================================\n");
                    printf("codigo do cliente: = %d\n",vet[i].codigo);
                    printf("nome do cliente: = %s\n",vet[i].nome);
                    printf("saldo atual credito = %.2f\n",vet[i].saldocredito);}}
        }      
        
        
        if(op==3)
        {
                printf("=================================\n");
                printf("informe codigo:");       
                scanf("%d",&achoucodigo);        
                 
                for(i=0;i<ultimo;i++){       
            
                if(vet[i].codigo == achoucodigo){
                   printf("=================================\n");
                   printf("codigo do cliente: = %d\n",vet[i].codigo);
                   printf("nome do cliente: = %s\n",vet[i].nome);
                   printf("saldo atual do cliente = %.2f\n",vet[i].saldocredito);}}                                 
            
         }         

        
         if(op==4)
         {
                   printf("=================================\n");
                   printf("informe codigo da transacao bancaria: 1-Credito, 2-Debito, 3-Fim da conta:\n");       
                   scanf("%d",&cdperacao);        
                 
                   for(i=0;i<ultimo;i++){
                   
                   if(cdperacao ==1){
                       printf("Informe codigo do cliente:\n");             
                       scanf("%d",&cc);      
                       for(i=0;i<ultimo;i++){
                               if(vet[i].codigo == cc){
                                     printf("nome do cliente: = %s\n",vet[i].nome); 
                                     printf("saldo atual: = %.2f\n",vet[i].saldocredito);
                                     printf("Informe novo credito:");
                                     scanf("%f",&novocredito);
                                     vet[i].saldocredito = vet[i].saldocredito + novocredito;
                                     printf("Conta alterada apos credito: = %.2f\n",vet[i].saldocredito);}
                       }
                   } 
                       
                                                     
                   if(cdperacao ==2){
                       printf("Informe codigo do cliente:\n");             
                       scanf("%d",&cd);      
                        for(i=0;i<ultimo;i++){
                                if(vet[i].codigo == cd){
                                     printf("nome do cliente: = %s\n",vet[i].nome);            
                                     printf("saldo atual: = %.2f\n",vet[i].saldocredito);
                                     printf("Informe valor para sacar:");
                                     scanf("%f",&novodebito);   
                                     vet[i].saldocredito = (vet[i].saldocredito  -  novodebito);
                                     printf("Conta alterada apos debito: = %.2f\n",vet[i].saldocredito);}
                        }
                   }     
                       
                   if(cdperacao ==3){
                      printf("=================================\n");
                      printf("Informe codigo do cliente:\n");             
                      scanf("%d",&fc); 
                      for(i=0;i<ultimo;i++){       
                                 if(vet[i].codigo == fc){
                                       if(vet[i].saldocredito > 0){
                                             vet[i].saldocredito = 0;
                                             printf("Conta encerrada com sucesso!\n");}             
                                       else{
                                             printf("Sua conta esta negativa,favor verificar antes de encerrar a conta!\n");}}}}}
          }             
           
                if(op==5){
                    printf("Encerrando Programa...\n");
                    system("pause");        
                    exit(0);} 
       
  system("pause"); 
  }
}

Edited by Binder
Link to comment
Share on other sites

  • 0

Uma coisa na sua primeira questão, era 50 arvores e não duas, você puderia fazer um vetor de int, chamado arvores[50, onde se tiver o valor de zero está vazia, se tiver o valor de um o marciano está atrás. esse é ou não o objeivo do jogo? Ficaria mais difícil e o primeiro jogador só iria digitar o numero uma vez, e teria cinco chances para acertar uma das 50 arvores, seria mais legal, pois de 50% de chance o jogador dois teria 10% de chance;

Link to comment
Share on other sites

  • 0

Bom, obrigada pelo código, vou por aquele obs e estudá-lo melhor depois.

Sobre o 5, eu concordo, ia ser ótimo fazer um jogo mais legal, mas eu não sei fazer vetores ainda.... Só sei o que tem de mais básico, por exemplo, esses códigos aqui da sua 10, eu vou estudar em casa, porque eu naõ sei usar, nem conhecia, além do char (que eu ouvi falar, mas não aprendi a usar)

-> #include<string.h>

-> struct

-> char

-> vet

-> fflush

-> fgets

-> system ("cls");

-> exit (0);

-> e quando você colocou

scanf("%f",&vet[ultimo].saldocredito);

ultimo ++;

esse ultimo ++ significa o que? que a variável ultimo vai crescendo de um em um a partir do valor digitado?

Obrigada, denovo :D

E.... eu tentei rodar, mas não vai, ele trava no

int main () {

banco vet[1000];

:/

Que será que deu errado?

Edited by Ihannah
Link to comment
Share on other sites

  • 0

Olá, segue abaixo algumas explicações sobre meu código:

1) Sobre a biblioteca #include<string.h> voce pode ver melhor por aqui: http://www.cplusplus.com/reference/clibrary/cstring/

2) Structs : Estruturas servem para armazenar dados relacionados. É a base das Estruturas de Dados. Ou seja você pode armazenar mais de um dado dentro de uma mesmo índice dentro de um array(vetor).Exemplo : Cria um vetor de 2 posições e coloca as seguintes informações dentro de cadas índice:

vet[0] = 1;        //codigo
vet[0] = "joao";   //nome 
vet[0] = 12.5      //valor

vet[1] = 2;    
vet[1] = "maria";  
vet[1] = 2.6    

vet[2] = 3;    
vet[2] = "jose";   
vet[2] = 5.9
3) Sobre char: aqui tem uma boa explicação : http://www.adonai.eti.br/wordpress/2009/11...po-char-no-cc/# 4) "vet", seria um nome dado a minha variável do tipo vetor, mas poderia ser qualquer nome desde que seja do tipo array(vetor). 5) a instrução fflush(stdin), que serve para limpar o buffer do teclado. 6) fgets : A função lê a string até que um caracter de nova linha seja lido ou tamanho-1 caracteres tenham sido lidos. Se o caracter de nova linha ('\n') for lido, ele fará parte da string, o que não acontecia com gets. A string resultante sempre terminará com '' (por isto somente tamanho-1 caracteres, no máximo, serão lidos). A função fgets é semelhante à função gets(), porém, além dela poder fazer a leitura a partir de um arquivo de dados e incluir o caracter de nova linha na string, ela ainda especifica o tamanho máximo da string de entrada. Como vimos, a função gets() não tinha este controle, o que poderia acarretar erros de "estouro de buffer".
char nome[30];     //declara uma variavel chamada nome, que tem o tamanho 30.

 fflush(stdin);               //limpa o buffer
 fgets(nome,30,stdin);       //le o nome mesmo contendo espaço ex: "joao da silva"
 fflush(stdin);             //limpa o buffer

7) system ("cls") serve para limpar a tela.

8) Sobre a variável "ultimo ++;", serve para incrementar.Ou seja, você criou um vetor de 1000 registros. toda vez que o usuario cadastrar um novo registro(na opçao 1) vai incrementar o seu vetor. Sendo a primeira posição começando em zero e indo até 999.

E também uma boa prática de programação, ou seja, você poderia substituir a variável "ultimo" pela variável "i<1000".

Exemplo: quando você usar um laço de repetição ele iria de 0 até 999, e com a váriavel "ultimo", você iria fazer o laço de repetição de 0 até onde estiver preenchido",ou seja se seu vetor estivesse apenas 10 registros, iria de 0 até 9, e não precisaria percorrer todo vetor(1000)posições.

Uma variável auxiliar para melhorar a performace e desempenho.

9) Aqui rodei no Dev_C ++ 4.9.9.2 e funcionou perfeitamente. Esse compilador pode ser baixado free na internet(procura no google).

Espero poder te ajudado! :)

Edited by Binder
Link to comment
Share on other sites

  • 0

Eu fiz uma melhoria do exercício 1 para todo mundo que não tem amigos tipo eu poder jogar sozinho.

Este código faz um numero aleatório para a arvore do marciano.

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

int main()
{   
    int arvore1, arvore2=0, balas=0 ,tentativas=4;
    system("cls");
    printf("Um marciano chegou a uma floresta e se escondeu atras de uma das 50 arvores\n");
    printf("quando viu um cacador. O cacador so tinha cinco balas em sua espingarda.\n");
    srand(time(NULL));
    arvore1=rand()%49+1;
    printf("\nVoce sera o cacador e tem que adivinhar onde o marciano se esconde.\n Boa sorte!");
    printf("\n\nMarciano: Haha, duvido voce me achar!!!");
    
    while(balas <=4)
    {
                                   
                 printf("\n\nQual o numero da arvore onde o marciano esta? ");
                 scanf("%d", &arvore2);
                 
                 if (arvore1 == arvore2)
                 { 
                     printf("Marciano: Oh, não! Voce me pegou!! :((\n\n");
                     system ("pause");
                     return main();
                 }
                 
                 else if (arvore1 != arvore2)
                 { 
                     printf("Haha, estou mais a ");  
                     
                     if (arvore1 < arvore2)
                     printf("esqueda e voce tem mais %d chance(s)!", tentativas);
                     
                     else
                     printf("direita e voce tem mais %d chance(s)!", tentativas);
                 } 
           balas ++;    
           tentativas --;  
    }
    
          printf("\n\nVoce não encontrou o marciano.Tente novamente!!!!!\n\n");                 
          system ("pause");
          return main();
}

Edited by athoslive
Link to comment
Share on other sites

  • 0

#include<stdio.h> typedef struct{ char sexo; int idade, livro; }entrevistados; main(){ entrevistados ent[3]; int i, total_l=0, mulher=0, homem=0, media_h=0, tansos=0; for(i=0;i<10;i++) { printf("informe o seu sexo: "); fflush(stdin); scanf("%s", &ent[i].sexo); printf("informe a sua idade: "); scanf("%d", &ent[i].idade); printf("informe o numero de livros em 2016: "); scanf("%d", &ent[i].livro); if(ent[i].idade<12){ total_l=total_l+ent[i].livro; } if(ent[i].sexo=='f' && ent[i].livro>=5){ mulher++; } if(ent[i].sexo=='m' && ent[i].livro<5){ media_h++; homem++; } if(ent[i].livro=0){ tansos++; } } printf("Total de livros lidos por pessoa abaixo de 12 anos: %d", total_l); printf("Total de mulheres que leram 5 lidos ou mais: %d", mulher); printf("Media de homens que leram menos que 5: %d", homem/media_h); printf("O percentual de pessoas que não leram livros foram: %d", (tansos/3)*100); }

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...