• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Delgado, o Gordo

Area de um trapezio

4 mensagens neste tópico

Olá!

Comecei há pouco tempo a programar em C e estou a ter algumas dificuldades num programa.

Este programa devia calcular a área de um trapézio. Isso é fácil mas queria que este programa "evitasse" alguns erros. Por exemplo o de introduzir um valor <= a 0.

Até agora tenho isto:

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

int main()
{
   double b, B, h, a;

   printf("Introduza o comprimento da base menor do trapezio: ");
   scanf("%lf", &b);
   while (b<=0)
   {
      printf("O valor que introduziu (%lf) nao e valido!\nIntroduza o valor da base menor novamente: ", b);
      scanf("%lf", b);
   }

   printf("Introduza o comprimento da base maior do trapezio: ");
   scanf("%lf", &B);
   while (B<=0)
   {
          printf("O valor que introduziu (%lf) nao e valido!\nIntroduza o valor da base maior novamente: ", B);
          scanf("%lf", B);

          while (b>B)
          {
                printf("A base menor (%lf) nao pode ser maior que a base maior (%lf)\nIntroduza o valor da base menor novamente: ");
                scanf("%lf", b);
                printf("Introduza o valor da base maior novamente: ");
                scanf("%lf", B);
          }
   }

   printf("Introduza a altura do trapezio: ");
   scanf("%lf", &h);
   while (h<=0)
   {
           printf("O valor que introduziu (%lf) nao e valido!\nIntroduza o valor novamente:", h);
           scanf("&lf", h);
   }

   a = ((b + B) * h) / 2;
               printf("A area do trapezio e: %lf\n", a);             

   system("PAUSE");	
   return 0;
}

O meu problema é que o programa crasha cada vez que eu introduzo novamente um valor. Porquê? Depois de corrigir este erro também queria o queria por a avisar quando a base maior era menor que a base menor. Mas acho que isso consigo, se souber como por este a funcionar

Já agora o que é que tenho de fazer para por acentos no programa?

Delgado, o Gordo

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já está corrigido e a funcionar.

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

int main()
{
double b, B, h, a;

printf("Introduza o comprimento da base menor do trapezio: ");
scanf("%lf", &b);
while (b<=0)
{
   printf("O valor que introduziu (%lf) nao e valido!\nIntroduza o valor da base menor novamente: ", b);
   scanf("%lf", &b);
}

printf("Introduza o comprimento da base maior do trapezio: ");
scanf("%lf", &B);
while (B<=0)
{
	   printf("O valor que introduziu (%lf) nao e valido!\nIntroduza o valor da base maior novamente: ", B);
	   scanf("%lf", &B);
}

while (b>B)
{
	   printf("A base menor (%lf) nao pode ser maior que a base maior (%lf)\nIntroduza o valor da base menor novamente: ", b, B);
	   scanf("%lf", &b);
	   printf("Introduza o valor da base maior novamente: ");
	   scanf("%lf", &B);
}

printf("Introduza a altura do trapezio: ");
scanf("%lf", &h);
while (h<=0)
{
	   printf("O valor que introduziu (%lf) nao e valido!\nIntroduza o valor da altura novamente: ", h);
	   scanf("%lf", &h);
}

a = ((b + B) * h) / 2;
			printf("A area do trapezio e: %lf\n", a);			

system("PAUSE");	
return 0;
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora