Ir ao conteúdo
  • Cadastre-se

Dúvida - Exercício na linguagem C


Ir à solução Resolvido por Midori,

Posts recomendados

Então gente, sou iniciante em programação e estou tendo dificuldades em fazer o seguinte exercício:

Escreva um programa que leia alternadamente números positivos e negativos. Se o usuário digitar um número positivo, o próximo deve ser negativo e vice-versa (começando com um número positivo). Os números digitados corretamente geram a impressão de uma mensagem “Aceito” na tela, enquanto números digitados incorretamente devem fazer com que o programa imprima “Rejeitado”. O programa deve ser interrompido quando o usuário digitar 0. Por exemplo:

9

Aceito: 9

10

Rejeitado: 10

-2

Aceito: -2

4

Aceito: 4

0

 

Já tentei fazer várias vezes mas sempre acaba faltando alguma coisa:

#include <stdio.h>int main(){    int num;    printf("Digite um numero positivo ou negativo inteiro, respectivamente.\n[Digite 0 para encerrar]\n");    scanf("%i", &num);    if (num > 0)        printf("Aceito: %i\n", num);    else        printf("Digite um numero positivo.\n");    while (num!=0){    scanf("%i", &num);    if (num < 0)    {        printf("Aceito: %i\n", num);        scanf("%i", &num);        if (num > 0)            printf("Aceito: %i\n", num);        else            printf("Rejeitado: %i\n", num);    }    else if (num > 0)    {        printf("Rejeitado: %i\n", num);        scanf("%i", &num);        if (num < 0)            printf("Aceito: %i\n", num);        else            printf("Rejeitado: %i\n", num);    }}    return 0;}

Se alguém puder ajudar, eu agradeço!

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Como eu fiz:

#include <stdio.h>int main(){    int num, conta=0, proximo;    printf("Digite um numero positivo ou negativo inteiro, respectivamente.\n[Digite 0 para encerrar]\n");    scanf("%i", &num);        while (num!=0){          conta++;          //verificar o primeiro número digitado          if(conta == 1){                  printf("Aceito: %i\n", num);                  if(num > 0)                         proximo = -1; // guarda se próximo número deve ser positivo ou negativo                  else                      proximo = 1;            }          else{               if (proximo == -1){                  if(num < 0 ){                         printf("Aceito: %i\n", num);                         proximo = 1;                       }                  else                      printf("Digite um numero negativo.\n\n");               }               else if (proximo == 1){                  if(num > 0 ){                         printf("Aceito: %i\n", num);                         proximo = -1;                       }                  else                      printf("Digite um numero positivo.\n\n");               }          }                                                     printf("\n\nDigite um numero positivo ou negativo inteiro, respectivamente.\n[Digite 0 para encerrar]\n");          scanf("%i", &num);              }    return 0;}
Link para o comentário
Compartilhar em outros sites

  • Solução

Uma forma de simplificar o problema, é usar uma variável para controlar quando a validação deve ser feita entre positivo/negativo.

Isso pode ser feito usando negação, a cada caso aceito, por exemplo.

#include <stdio.h>int main(){    int n, positivo = 1;    while(scanf("%d%*c", &n)){        if(!n) break;        if((positivo && n > 0) || (!positivo && n < 0)){            printf("Aceito: %d\n", n);            positivo = !positivo;        }else{            printf("Rejeitado: %d\n", n);        }    }        return 0;}
Link para o comentário
Compartilhar em outros sites

Alguém poderia me ajudar no que estou errando???

 

todas as médias resultam "0.00" (zero) obgda  ^_^

 

 

#include <stdio.h>

#include <stdlib.h>

 

 

/* Olá prof.a. Adriana, meu computador é 64 bits, e apresenta erro com conio.h, estou seguindo suas orientações sem utilizar conio.h,

eliminando gotoxy e getch */

 

struct enem {

       int cod, cpf;

       char nome [50];

       float renda, n1, n2, n3, n4, redacao, media;

             }aluno[2];

 

main()

{

 

 

      int i, soma_objetivas, soma_redacao, media_objetivas=0, media_redacao=0;

 

      for (i=0; i<2; i++){

      printf ("\n ********* BOLSAS PROUNI ********* \n");

      printf ("\n Registro do %i aluno: \n", i+1);

 

      printf ("\n Digite nome do aluno: \n");

      fflush(stdin);

      fgets (aluno.nome,50,stdin);

 

 

      printf ("\n Digite cpf do aluno: \n");

      fflush(stdin);

      scanf  ("%i", &aluno.cpf);

 

      printf ("\n Digite renda familiar per capta do aluno: \n");

      fflush(stdin);

      scanf  ("%.2f", &aluno.renda);

 

      printf ("\n Digite codigo da escola: 1-Ensino medio em escola publica/privada com bolsa integral ou 2-Ensino medio em escola privada \n");

      fflush(stdin);

      scanf  ("%i", &aluno.cod);

 

      printf ("\n Digite 1 nota do aluno: \n");

      fflush(stdin);

      scanf  ("%.2f", &aluno.n1);

 

      printf ("\n Digite 2 nota do aluno: \n");

      fflush(stdin);

      scanf  ("%.2f", &aluno.n2);

 

      printf ("\n Digite 3 nota do aluno: \n");

      fflush(stdin);

      scanf  ("%.2f", &aluno.n3);

 

      printf ("\n Digite 4 nota do aluno: \n");

      fflush(stdin);

      scanf  ("%.2f", &aluno.n4);

 

      printf ("\n Digite nota de redacao do aluno: \n");

      fflush(stdin);

      scanf  ("%.2f", &aluno.redacao);

 

 

      aluno.media=(aluno.n1 + aluno.n2 + aluno.n3 + aluno.n4)/4;

      media_objetivas = media_objetivas + aluno.media;

      media_redacao = media_redacao + aluno.redacao;

      }

 

 

 

 

          for (i=0; i<2; i++){

 

 

            if (aluno.cod==1 && aluno.renda<=2300 && aluno.redacao>0 && aluno.media>450){

 

            printf ("\n  Aluno(a) %s com media %.2f e nota de redacao %.2f, poderá concorrer a uma bolsa do PROUNI \n", aluno.nome, aluno.media, aluno.redacao, i++);

            }else{

            printf ("\n  Aluno(a) %s com media %.2f e nota de redacao %.2f, nao poderá concorrer a uma bolsa do PROUNI \n \n", aluno.nome, aluno.media, aluno.redacao);

            }

          }

 

            printf ("\n %i alunos podem participar do PROUNI", i);

            printf ("\n A media geral das notas objetivas e: %.2f", media_objetivas/2);

            printf ("\n A media geral das notas de redacao e: %.2f", media_redacao/2);

 

 

 

 

  system("PAUSE");

  return 0;

}
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

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