Delgado, o Gordo Posted October 24, 2007 at 10:11 PM Report Share #142744 Posted October 24, 2007 at 10:11 PM 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 Link to comment Share on other sites More sharing options...
Rui Carlos Posted October 24, 2007 at 10:16 PM Report Share #142747 Posted October 24, 2007 at 10:16 PM Faltam os & nos segundos scanfs. Rui Carlos Gonçalves Link to comment Share on other sites More sharing options...
Delgado, o Gordo Posted October 25, 2007 at 06:54 AM Author Report Share #142775 Posted October 25, 2007 at 06:54 AM Obrigado. Que estupidez ? Link to comment Share on other sites More sharing options...
Delgado, o Gordo Posted October 25, 2007 at 07:01 AM Author Report Share #142777 Posted October 25, 2007 at 07:01 AM 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; } Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now