eyeonyou Posted November 16, 2005 at 10:48 AM Report Share #6754 Posted November 16, 2005 at 10:48 AM Boas ppl! este é o meu 1º post e ja venho pedir ajuda.Tenho este work pra fazer e precisava de umas dicas.Ate ag fiz dentro de um ciclo do-while um switch com cases e dentro de cada case peço ao utilizador pra introduzir os valores.Ag axo q a seguir,ainda dentro do 1º case tenho de por uma funçao que faça os calculos.Estou a ir bem?umas dicas sff,é q sou mm rookie 😛 Em baixo vai o enunciado do work: Trabalho 1 − Triângulos Considere um triângulo de lados a, b e c e de ângulos ab, ac e bc. Faça um programa que execute as vezes que o utilizador desejar qualquer das seguintes tarefas: ─ Ler um lado de um triângulo e os dois ângulos adjacentes a esse lado e calcular os outros dois lados e o restante ângulo interno. Para isso, atender a: Dados: Lado a e ângulos ab e ac. Cálculos: (sao formulas dadas) ─ Ler dois lados de um triângulo e o ângulo por eles formado e calcular o outro lado e os outros dois ângulos internos. Para isso, atender a: Dados: Lados a e b e ângulo ab. Cálculos: (sao formulas dadas) ─ Ler os três lados de um triângulo e calcular os ângulos internos. Para isso, atender a: Dados: Lados a, b e c. Cálculos: (sao formulas dadas) Nota 1: A entrada dos ângulos deve ser dada em graus e a saída deve ser visualizada também em graus. Nota 2: Verifique a coerência dos dados introduzidos, ou seja, estes têm de permitir a formação de um triângulo. [/code] Link to comment Share on other sites More sharing options...
vbmaster Posted November 16, 2005 at 01:51 PM Report Share #6759 Posted November 16, 2005 at 01:51 PM os valores do lados do triangulo já vêm dados? Ou seja tu não tens de desenhar o triangulo pois não? ele já vem dado right? se sim, é só usar trigonometria my friend...😛 Link to comment Share on other sites More sharing options...
eyeonyou Posted November 16, 2005 at 02:27 PM Author Report Share #6765 Posted November 16, 2005 at 02:27 PM vbmaster - o utilizador é que decide os valores,dps disso consoante a opçao escolhida o programa calcula o resto.Nao é preciso desenhar o triangulo,so saber as medidas de lados e angulos consoante o que é pedido. tofas - eu nao kero que me façam o work,simplesmente umas dicas.Ja fiz o menu com o ciclo do-while e pus as opçoes.Ag dentro de cada opçao tenho de por funçoes pra calcular o pretendido.Aki é que esta o problema!!!n percebo mt de funçoes e ta-me sp a dar erros Link to comment Share on other sites More sharing options...
vbmaster Posted November 16, 2005 at 05:05 PM Report Share #6781 Posted November 16, 2005 at 05:05 PM SOHCAHTOA com esta palavra sabes toda a trigonometria Sin=Oposto/Hipotenusa Coseno=Adjacente/Hipotenusa Tangente=Oposto/Adjacente. Link to comment Share on other sites More sharing options...
saramgsilva Posted November 16, 2005 at 05:47 PM Report Share #6790 Posted November 16, 2005 at 05:47 PM tofas - eu nao kero que me façam o work,simplesmente umas dicas.Ja fiz o menu com o ciclo do-while e pus as opçoes.Ag dentro de cada opçao tenho de por funçoes pra calcular o pretendido.Aki é que esta o problema!!!n percebo mt de funçoes e ta-me sp a dar erros entao e pq nao apresentas o codigo..tv se encontre o erro ... no codigo do outro moço encontrei 1 erro na "regra de 3 simples" .... www.saramgsilva.com As minhas apps no WP7 Marketplace Youtube : Galinho - Windows Phone 7.5 Link to comment Share on other sites More sharing options...
eyeonyou Posted November 16, 2005 at 06:31 PM Author Report Share #6796 Posted November 16, 2005 at 06:31 PM vbmaster - n tem nada a haver com essas formulas de trigonometria pois o prof deu outras formulas pra serem usadas.O problm esta em fazer as funçoes e a sua ligaçao ao programa.Disso é sei pouco e dai as minhas dificuldades.Inda vou dar mais umas voltas nakilo e dp ponho aki o codigo ja ag fika aki o enunciado direito pra me perceberem melhor : http://img145.imageshack.us/img145/7995/enunciadopag16rz.jpg http://img145.imageshack.us/img145/3263/enunciadopag26vo.jpg thx Link to comment Share on other sites More sharing options...
saramgsilva Posted November 16, 2005 at 07:02 PM Report Share #6800 Posted November 16, 2005 at 07:02 PM desculpa nao vejo qual a tua dificuldade...pois tens as formulas todas!e esta td defenido...é so escreveres o codigo..agora tens k ter cuidado com os parentesis...mostra la o teu codigo sff ;) www.saramgsilva.com As minhas apps no WP7 Marketplace Youtube : Galinho - Windows Phone 7.5 Link to comment Share on other sites More sharing options...
eyeonyou Posted November 17, 2005 at 08:32 AM Author Report Share #6829 Posted November 17, 2005 at 08:32 AM boas! aki ta o codigo que ja fiz.Ta so pra case 1 pq fazendo bem um,tb devo fazer sem dificuldade os outros.Este ta a dar um erro na linha do main(),n sei pq :shock: #include<stdio.h> #include<conio.h> #include<math.h> #define FIM '0' float funcao1(float lado_a,float angulo_ab,float angulo_ca) main() { int op; float lado_a,lado_b,lado_c,angulo_ab,angulo_bc,angulo_ca; do { printf("\t\t\t\tMENU PRINCIPAL\n"); printf("\n1-Calcular 2 lados de um triangulo e 1 angulo interno restante.\n"); printf("\n2-Calcular 1 lado de um triangulo e 2 angulos internos restantes.\n"); printf("\n3-Calcular os 3 angulos internos do triangulo\n"); printf("\n0-sair\n"); op= getchar(); fflush(stdin); switch(op) { case '1': printf("Introduza o valor de 1 lado do triangulo\n"); scanf("%ld",&lado_a); printf("Introduza o valor de 1 angulo adjacente a este lado\n"); scanf("%ld",&angulo_ab); printf("Introduza o valor de 1 outro angulo adjacente a esse lado\n"); scanf("%ld",&angulo_ca); lado_b=funcao1(lado_a,angulo_ab,angulo_ca); printf("O lado b do triangulo ‚ (((sin(%ld)/sin(%ld+%ld))*%ld))",angulo_ca,angulo_ab,angulo_ca,lado_a,lado_b); break; case '2': printf("segundo\n"); break; case '3': printf("terceiro\n"); break; case FIM: printf("Pediu pra terminar\n"); break; default:printf("opcao invalida\n"); break; } } while (op!=FIM); } float funcao1(float lado_a,float angulo_ab,float angulo_ca) { funcao1=(((sin(angulo_ca)/sin(angulo_ab+angulo_ca))*lado_a); return funcao1; } Link to comment Share on other sites More sharing options...
ouvi_dizer Posted November 17, 2005 at 11:34 AM Report Share #6833 Posted November 17, 2005 at 11:34 AM falta ";" na assinatura da função "funcao1" onde está : float funcao1(float lado_a,float angulo_ab,float angulo_ca) devia estar: float funcao1(float lado_a,float angulo_ab,float angulo_ca); PS: em C o compilador não sabe contar, normalmente o erro está acima da linha que o compilador indica. Link to comment Share on other sites More sharing options...
ouvi_dizer Posted November 17, 2005 at 11:41 AM Report Share #6834 Posted November 17, 2005 at 11:41 AM float funcao1(float lado_a,float angulo_ab,float angulo_ca) { funcao1=(((sin(angulo_ca)/sin(angulo_ab+angulo_ca))*lado_a); return funcao1; } isto não parece bem... tenta float funcao1(float lado_a,float angulo_ab,float angulo_ca) { return ((sin(angulo_ca)/sin(angulo_ab+angulo_ca))*lado_a; } Link to comment Share on other sites More sharing options...
ouvi_dizer Posted November 17, 2005 at 11:43 AM Report Share #6835 Posted November 17, 2005 at 11:43 AM case FIM: printf("Pediu pra terminar\n"); break; default:printf("opcao invalida\n"); break; } } while (op!=FIM); pode passar a case '0': printf("Pediu pra terminar\n"); break; default:printf("opcao invalida\n"); break; } } while (op!='0'); "FIM" não é um caracter Link to comment Share on other sites More sharing options...
eyeonyou Posted November 17, 2005 at 01:23 PM Author Report Share #6837 Posted November 17, 2005 at 01:23 PM boas,desde ja obrigado pela ajuda,mas n deu em nada 😛 fiz as alteraçoes que indicaste mas continua a dar um erro aki : while (op!='0'); } aki ta o codigo actualizado: #include<stdio.h> #include<conio.h> #include<math.h> float funcao1(float lado_a,float angulo_ab,float angulo_ca); main() { int op; float lado_a,lado_b,lado_c,angulo_ab,angulo_bc,angulo_ca; do { printf("\t\t\t\tMENU PRINCIPAL\n"); printf("\n1-Calcular 2 lados de um triangulo e 1 angulo interno restante.\n"); printf("\n2-Calcular 1 lado de um triangulo e 2 angulos internos restantes.\n"); printf("\n3-Calcular os 3 angulos internos do triangulo\n"); printf("\n0-sair\n"); op= getchar(); fflush(stdin); switch(op) { case '1': printf("Introduza o valor de 1 lado do triangulo\n"); scanf("%ld",&lado_a); printf("Introduza o valor de 1 angulo adjacente a este lado\n"); scanf("%ld",&angulo_ab); printf("Introduza o valor de 1 outro angulo adjacente a esse lado\n"); scanf("%ld",&angulo_ca); lado_b=funcao1(lado_a,angulo_ab,angulo_ca); scanf("%ld",&lado_b); printf("O lado b do triangulo e %ld",lado_b); break; case '2': printf("segundo\n"); break; case '3': printf("terceiro\n"); break; case '0': printf("Pediu pra terminar\n"); break; default:printf("opcao invalida\n"); break; } } while (op!='0'); } float funcao1(float lado_a,float angulo_ab,float angulo_ca) { return ((sin(angulo_ca)/sin(angulo_ab+angulo_ca))*lado_a; } Link to comment Share on other sites More sharing options...
ouvi_dizer Posted November 17, 2005 at 01:53 PM Report Share #6838 Posted November 17, 2005 at 01:53 PM Ok.... Este código foi testado em Fedora c3, não sei como se comportará em windows. Compila bem, embora o resultado das tuas contas esteja errado. Alterei isso tambem #include<stdio.h> #include<math.h> float funcao1 (float lado_a,float angulo_ab,float angulo_ca); int main() { int op; float lado_a,lado_b,lado_c,angulo_ab,angulo_bc,angulo_ca; do { printf("\t\t\t\tMENU PRINCIPAL\n"); printf("\n1-Calcular 2 lados de um triangulo e 1 angulo interno restante.\n"); printf("\n0-sair\n"); op= getchar(); fflush(stdin); switch(op) { case '1': printf("Introduza o valor de 1 lado do triangulo\n"); scanf("%f",&lado_a); printf("Introduza o valor de 1 angulo adjacente a este lado\n"); scanf("%f",&angulo_ab); printf("Introduza o valor de 1 outro angulo adjacente a esse lado\n"); scanf("%f",&angulo_ca); lado_b=funcao1(lado_a,angulo_ab,angulo_ca); //scanf("%f",&lado_b); printf("O lado b do triangulo e %f",lado_b); break; case '0': printf("Pediu pra terminar\n"); break; default:printf("opcao invalida\n"); break; } } while (op!='0'); return 0; } float funcao1 (float lado_a,float angulo_ab,float angulo_ca) { float sub_total = sin(angulo_ca)/sin(angulo_ab+angulo_ca); float total = sub_total*lado_a; return total; } Não sei se ajuda, mas a compilação em Fc3 não leva o include da lib math.h isto compila e executa. espero que ajude edit: Para ler e escrever floats podes usar a directiva "f" mas não a "ld". Link to comment Share on other sites More sharing options...
saramgsilva Posted November 17, 2005 at 02:49 PM Report Share #6844 Posted November 17, 2005 at 02:49 PM olha tive a ver o codigo e pos a minha maneira.... :roll: pra ver se conseguia resolver o problema... #include<stdio.h> #include<math.h> float funcao1 (float a,float n,float m) { return (sin(m)/sin(n+m))*a; } int main() { int op; float lado_a,lado_b,lado_c,angulo_ab,angulo_bc,angulo_ca; do { printf("\t\t\t\tMENU PRINCIPAL\n"); printf("\n1-Calcular 2 lados de um triangulo e 1 angulo interno restante.\n"); printf("\n0-sair\n"); scanf("%d",&op); fflush(stdin); switch(op) { case 1: { printf("Introduza o valor do lado a do triangulo\n"); scanf("%f",&lado_a); printf("Introduza o valor de um angulo adjacente a este lado\n"); scanf("%f",&angulo_ab); printf("Introduza o valor de um outro angulo adjacente a esse lado\n"); scanf("%f",&angulo_ca); lado_b=funcao1(lado_a,angulo_ab,angulo_ca); lado_c=funcao1(lado_a,angulo_ca,angulo_ab); //angulo_bc=acos(((lado_b*lado_b)+(lado_c*lado_c)-(lado_a*lado_a))/2*lado_b*lado_c); // estamos em grau, portanto nao usamos o pi ( isso era em radianos...) angulo_bc=180-(angulo_ab+angulo_ca); printf("O lado b do triangulo e %f",lado_b); printf("O lado c do triangulo e %f",lado_c); printf("O angulo bc tem a amplitude de %f graus",angulo_bc); break; } case 0: { printf("Pediu pra terminar\n"); break; } default: { printf("opcao invalida\n"); break; } } } while (op!=0); return 0; } // fim do main "resolvi a 1 parte"...mas... humm ...nao verifikei se o valores estao bem!! verifica... eu axo que nao...ha qq coisa que nao esta bem, eu tava agora para passar todo pra double, pelo facto de sen(double i)...mas n tou c tempo...muda isso!pode ser o erro, ha e nao te eskeca que o tipo a ler double nao é %f nem %d...(mas tb nao me recordo) .... ja no outro programa de triangulo, dava me erro nos resultados finais...deve ser mm dos double's... :evil: www.saramgsilva.com As minhas apps no WP7 Marketplace Youtube : Galinho - Windows Phone 7.5 Link to comment Share on other sites More sharing options...
will09 Posted November 17, 2005 at 11:05 PM Report Share #6875 Posted November 17, 2005 at 11:05 PM tofas disse:"nao te eskeca que o tipo a ler double nao é %f nem %d...(mas tb nao me recordo) " decimal --» m/M double --» d/D float --» f/F long --» l/L PEnso k seja axiM! axo que %d é para double... PEACE ;) Link to comment Share on other sites More sharing options...
eyeonyou Posted November 18, 2005 at 10:40 AM Author Report Share #6888 Posted November 18, 2005 at 10:40 AM boas ppl! actualizei o codigo e ja tem pekenos progressos,Ja compila 😄 mas a funçao n ta a funcionar 😛 aki fica o codigo actual: #include<stdio.h> #include<conio.h> #include<math.h> float funcao1(float lado_a,float angulo_ab,float angulo_ca); main() { int op; float lado_a,lado_b,lado_c,angulo_ab,angulo_bc,angulo_ca; clrscr(); do { printf("\t\t\t\tMENU PRINCIPAL\n"); printf("\n1-Calcular 2 lados de um triangulo e 1 angulo interno restante.\n"); printf("\n2-Calcular 1 lado de um triangulo e 2 angulos internos restantes.\n"); printf("\n3-Calcular os 3 angulos internos do triangulo.\n"); printf("\n0-sair\n"); op= getchar(); fflush(stdin); switch(op) { case '1': printf("Introduza o valor de 1 lado do triangulo.\n"); scanf("%f",&lado_a); printf("Introduza o valor de 1 angulo adjacente a este lado.\n"); scanf("%f",&angulo_ab); printf("Introduza o valor de 1 outro angulo adjacente a esse lado.\n"); scanf("%f",&angulo_ca); lado_b=funcao1(lado_a,angulo_ab,angulo_ca); scanf("%f",&lado_b); printf("O lado b do triangulo ‚ %f",lado_b); break; case '2': printf("segundo\n"); break; case '3': printf("terceiro\n"); break; case '0': printf("Pediu pra terminar\n"); break; default:printf("opcao invalida\n"); break; } } while (op!='0'); return 0; } float funcao1(float lado_a,float angulo_ab,float angulo_ca) { float sub_total=sin(angulo_ca)/sin(angulo_ab+angulo_ca); float total=sub_total*lado_a; return total; } Link to comment Share on other sites More sharing options...
ouvi_dizer Posted November 18, 2005 at 10:55 AM Report Share #6889 Posted November 18, 2005 at 10:55 AM O código que coloquei a função devolvia um valor, se era correcto ou não não sei. Quando dizes que a função n funciona é o q exactamente? Link to comment Share on other sites More sharing options...
eyeonyou Posted November 18, 2005 at 11:01 AM Author Report Share #6890 Posted November 18, 2005 at 11:01 AM o codigo actual faz o seguinte: escolho a opçao 1(que é a q tem alguma coisa) pede-me os 3 dados pra inserir(ate aki td bem) dp dos dados introduzidos a funçao deveria fazer o calculo e imprimir o valor do lado_b mas nepia,n aparece nada.Curioso é q dps de introduzir os 3 dados introduzo um nº qq e dp aparece imprimido "o lado b é "nº qq"" :shock: Link to comment Share on other sites More sharing options...
ouvi_dizer Posted November 18, 2005 at 11:10 AM Report Share #6891 Posted November 18, 2005 at 11:10 AM Fizeste mal as alterações... Tinhas um scanf a mais, e no que eu coloquei ja o tinha tirado, mas n deves ter reparado: Onde tens: lado_b=funcao1(lado_a,angulo_ab,angulo_ca); scanf("%f",&lado_b); printf("O lado b do triangulo ‚ %f",lado_b); devias ter: lado_b=funcao1(lado_a,angulo_ab,angulo_ca); printf("O lado b do triangulo ‚ %f",lado_b); Link to comment Share on other sites More sharing options...
eyeonyou Posted November 18, 2005 at 11:18 AM Author Report Share #6892 Posted November 18, 2005 at 11:18 AM é pah! thx era mm isso 😛 outra coisa,o utilizador tem de introduzir os angulos em graus mas estes tem de ser convertidos pra radianos pra ser feito o calculo e dps o resultado a imprimir tem de ser outra vex em graus.O q aconselhas a fazer?fazer a conversao ainda no CASE ou faço isso na funçao? 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