thranduil Posted July 28, 2005 at 10:15 PM Report #2316 Posted July 28, 2005 at 10:15 PM bom.. dei-me aqui com um problema que acho que alguem me deve poder ajudar. nao quero que me escrevam o codigo. so que me ajudem a intrepertar o problema para ver se eu o percebo porque nao entendi que o homem queria dizer :S. bom, aqui vai: pag. 191 ex. 5. Citação Implemente a seguinte funçao float val(float x, int n, float t) devolve o val (valor actual liquido) para n anos, a*acento* taxa t e e*acento* definido atraves da seguinte formula: val=x/(1+t) + x/(1+t)^2 + x/(1+t)^3 + ...... + x/(1+t)^n Sugestao: utilize a funçao pot, implementada anteriormente (exercicios resolvidos) pag. 183 (funçao pot) Citação Implemente a funçao float pot(float x, int n) devolve o valor de x^n x^0 = 1.0 x^n = x*........*x (n vezes) float pot(float x, int n){ float res; int i; for (i=1,res=1.0 ; i<=n ; i++) res*=x; return res; } main(){ printf("%f %f %f",pot(2.0,4), pot(1.234,3), pot(3.0,0); } se alguem me puder ajudar agradecia muito 🙂 e desculpem a confusao dos acentos :S ------------- e ja agora, como e que se poe o codigo para aparecer formatado nas cores como aparece, por exemplo, no php mas numa versao c?
Gurzi Posted July 29, 2005 at 12:39 AM Report #2320 Posted July 29, 2005 at 12:39 AM [syntax=c] acho eu
thranduil Posted July 29, 2005 at 11:58 PM Author Report #2341 Posted July 29, 2005 at 11:58 PM thank you 🙂 mas tou a ver que ninguem percebeu o problema :S
thranduil Posted July 30, 2005 at 09:28 AM Author Report #2361 Posted July 30, 2005 at 09:28 AM pelos vistos ninguem respondeu aquele exercicio... mas pronto. agora tenho ainda outra duvida, dois exercicios a frente 🙂 no exercicio 7 ele pede-nos para fazermos um programa que adquira um numero de horas e um tipo de representaçao e que depois faça a converçao de horas para horas,minutos ou segundos. e temos que o fazer com uma funçao, de 3 maneiras diferentes: switch com break, switch sem break e if-else. bom, o programa que eu fiz foi este: #include <stdio.h> /* switch sem break long int num(int n_horas, char tipo){ switch(tipo){ case 's': n_horas*=60; case 'm': n_horas*=60; case 'h': n_horas*=1; } return n_horas; } */ /* switch com break long int num(int n_horas, char tipo){ switch(tipo){ case 'h': n_horas*=1; break; case 'm': n_horas*=60; break; case 's': n_horas*=3600; break; } return n_horas; } */ /* if-else long int num(int n_horas, char tipo){ if(tipo='h') return n_horas*1; else if(tipo='m') return n_horas*60; else if(tipo='s') return (n_horas*3600); } */ main(){ int n_horas; char tipo; printf("Insira um numero de horas e um modo de representaçao:"); scanf("%d %c",&n_horas, &tipo); printf("%d h ---> %ld %c",n_horas,num(n_horas,tipo),tipo); getchar(); getchar(); } o meu problema e que quando eu peço o modo de representaçao, o programa deve aceita-lo como sendo o enter ou o espaço do numero de horas e passa isso a frente. logo a funçao vai dar sempre o default.. se alguem me pude-se ajudar agradecia 😉 edit: ja mudei o codigo para funcar direito 😄 edit2: mudei o codigo porque troquei, na funçao de switch sem break, as horas pelos segundos
deathseeker25 Posted July 30, 2005 at 10:35 AM Report #2363 Posted July 30, 2005 at 10:35 AM Exacto está tudo muito bem menos o problema do modo de representação. Tambem tive problemas parecidos a resolver um desses exercícios e consegui resolvê-los.Como disseste, o programa quando pedes um caracter está a ler o <enter> ou o <space>, logo visto que não é um dos caracteres que entra no ciclo sai do programa ou mostra e default. Experimenta dar um espaço entre o "%" e o "c" no local onde está "%c". Acho que a resolução é essa apesar de não ter a certeza. Vou investigar melhor no entanto confirma isso. Cumps
MaXiMuS Posted July 30, 2005 at 10:50 AM Report #2366 Posted July 30, 2005 at 10:50 AM Experimenta dar um espaço entre o "%" e o "c" no local onde está "%c". quase correcto.. 🙂 então já se esqueceram do que leram umas 100 páginas atrás? 😉 o espaço é antes do %c, não entre :roll:
deathseeker25 Posted July 30, 2005 at 10:56 AM Report #2367 Posted July 30, 2005 at 10:56 AM Experimenta dar um espaço entre o "%" e o "c" no local onde está "%c". quase correcto.. 🙂 então já se esqueceram do que leram umas 100 páginas atrás? 😉 o espaço é antes do %c, não entre :roll: Exactamente...estive a rever umas páginas e é isso mesmo. ;)
thranduil Posted July 30, 2005 at 12:37 PM Author Report #2370 Posted July 30, 2005 at 12:37 PM sim eu lembro-me disso. mas se repararem bem isso esta la. eu ate adicionei varios espaços para ver se funcava mas nada... edit: pois.. nao sei porque mas agora funcou, porque tirei os espaços a mais que la tinha 🙂 edit2: hmmm continua a haver algo mal no switch sem break. mesmo depois de trocar os segundos e as horas, aquilo nao me esta a mandar o 'h' para o sitio dele. esta a contar desde o inicio... :S edit3: bem.. aquilo umas vezes sai bem outras nao.. deixem la 😉 edit4 8) : o if-else esta a mandar-me sempre o valor das horas... ja escrevi long int num(int n_horas, char tipo){ if(tipo='h') n_horas*=1; else if(tipo='m') n_horas*=60; else if(tipo='s') n_horas*=60; return n_horas; } e tambem ja experimentei o que esta no post acima mas mesmo assim de nenhuma das maneiras funcou.. tenho que abrir parentesis rectos ou assim??? :S
deathseeker25 Posted July 30, 2005 at 01:03 PM Report #2373 Posted July 30, 2005 at 01:03 PM Não é parentesis rectos é chavetas ('[]'!='{') :o Experimenta abrindo chavetas que pode ser que dê.... :roll:
MaXiMuS Posted July 30, 2005 at 02:55 PM Report #2376 Posted July 30, 2005 at 02:55 PM sim eu lembro-me disso. mas se repararem bem isso esta la. eu ate adicionei varios espaços para ver se funcava mas nada... qdo for assim sempre podes usar o fflush(stdin) ;)
thranduil Posted July 30, 2005 at 06:02 PM Author Report #2386 Posted July 30, 2005 at 06:02 PM sim eu sei que e chavetas.. confundi 🙂 mas tento isso do fflush para o if-else? :S nao percebi..
MaXiMuS Posted July 30, 2005 at 06:09 PM Report #2388 Posted July 30, 2005 at 06:09 PM em vez do espaço, que dizes s vezes dar problemas, podes usar a função fflush(stdin) para limpar o buffer do teclado printf("introduza 1: "); scanf("%d",&a); fflush(stdin); printf("introduza 2: "); scanf("%d",&b);
thranduil Posted July 31, 2005 at 02:01 AM Author Report #2426 Posted July 31, 2005 at 02:01 AM mas a duvida ja nao e essa 😛 para isso ja solucionei o problema 😛 a duvida ta que o if-else nao funciona...
deathseeker25 Posted July 31, 2005 at 11:01 AM Report #2441 Posted July 31, 2005 at 11:01 AM mas a duvida ja nao e essa 😛 para isso ja solucionei o problema 😛 a duvida ta que o if-else nao funciona... Experimenta retirar os "else" e coloca apenas if em cada uma das condições. long int num(int n_horas, char tipo){ if(tipo='h'|| tipo='H') n_horas*=1; if(tipo='m'|| tipo='M') n_horas*=60; if(tipo='s'|| tipo='S') n_horas*=60; return n_horas; } Alem de que coloquei tambem a letra maiuscula correspondente visto que o utilizador pode ter o CAPS LOCK ligado quando responde.... 😄
SLider3 Posted July 31, 2005 at 11:13 AM Report #2443 Posted July 31, 2005 at 11:13 AM o if-else não funcionava provavelmente porque te faltavam { }. long int num(int n_horas, char tipo){ if(tipo='h') n_horas*=1; else { if(tipo='m') n_horas*=60; else { if(tipo='s') n_horas*=60; } } return n_horas; } De qualquer modo este código devia ser substituido por um switch.
thranduil Posted July 31, 2005 at 08:37 PM Author Report #2470 Posted July 31, 2005 at 08:37 PM slider tambem suspeitava que o problema era esse. mas o desafio do problema e que tem que ser feito com if-else, switch com break e switch sem break...
MaXiMuS Posted July 31, 2005 at 09:02 PM Report #2474 Posted July 31, 2005 at 09:02 PM já te safaste?
thranduil Posted July 31, 2005 at 10:15 PM Author Report #2479 Posted July 31, 2005 at 10:15 PM nao. o problema mantem-se...
deathseeker25 Posted July 31, 2005 at 10:27 PM Report #2483 Posted July 31, 2005 at 10:27 PM nao. o problema mantem-se... Assim funciona na perfeição: #include <stdio.h> long int num(int n_horas, char tipo){ if(tipo=='h'|| tipo=='H'){ n_horas*=1; } if(tipo=='m'|| tipo=='M'){ n_horas*=60; } if(tipo=='s'|| tipo=='S'){ n_horas*=60; } return n_horas; } main(){ int n_horas; char tipo; printf("Insira um numero de horas e um modo de representaçao:"); scanf("%d %c",&n_horas, &tipo); printf("%d h ---> %ld %c\n",n_horas,num(n_horas,tipo),tipo); system("PAUSE"); } As alterações que fiz são mais que visíveis. São poucas mas funcionam. Cumps
thranduil Posted August 8, 2005 at 12:17 PM Author Report #2706 Posted August 8, 2005 at 12:17 PM sim mas repara, eu preciso de um if-else e nao so if...
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