rand() Posted May 31, 2012 at 06:36 PM Report #459533 Posted May 31, 2012 at 06:36 PM (edited) Alguém me pode dizer porque é que o código abaixo imprime coisas a mais? Exemplo de input: 23 4 5 6 output: VZYZTZTTZV V V ZYSZYXXZYCOCYYZV ZYSZKCZKSSZGZZJZQQSXXSZZZQXZZZZV V FGGGYGXGGKGXYSYW W S #include <stdio.h> #include <stdlib.h> int main () { int x[4096]; int i=0; int len; printf("Dá-me os números\n"); while (scanf ("%d", &x[i]) != EOF) len=sizeof(x)/sizeof(int); for (i=0; i<len; i++) { if(x[i] == 26) printf ("A"); else if(x[i] == 25) printf ("B"); else if(x[i] == 24) printf ("C"); else if(x[i] == 23) printf ("D"); else if(x[i] == 22) printf ("E"); else if(x[i] == 21) printf ("F"); else if(x[i] == 20) printf ("G"); else if(x[i] == 19) printf ("H"); else if(x[i] == 18) printf ("I"); else if(x[i] == 17) printf ("J"); else if(x[i] == 16) printf ("K"); else if(x[i] == 15) printf ("L"); else if(x[i] == 14) printf ("M"); else if(x[i] == 13) printf ("N"); else if(x[i] == 12) printf ("O"); else if(x[i] == 11) printf ("P"); else if(x[i] == 10) printf ("Q"); else if(x[i] == 9) printf ("R"); else if(x[i] == 8) printf ("S"); else if(x[i] == 7) printf ("T"); else if(x[i] == 6) printf ("U"); else if(x[i] == 5) printf ("V\n"); else if(x[i] == 4) printf ("W\n"); else if(x[i] == 3) printf ("X"); else if(x[i] == 2) printf ("Y"); else if(x[i] == 1) printf ("Z"); } return 0; } P.S.: O 1º printf não funciona correctamente, a mensagem apresentada é "Dß-me os n.meros" como posso corigir isto? EDIT1: o output parece ser o mesmo independentemente to input Edited June 1, 2012 at 08:39 AM by pmg LP adicionada ao GeSHi
bsccara Posted May 31, 2012 at 07:18 PM Report #459548 Posted May 31, 2012 at 07:18 PM Estás a usar a função scanf para preencher sempre o elemento 0 do array 'x'. A variável 'i' nunca muda. E falta um ';' no fim da linha senão vai executar a linha seguinte como parte de ciclo. Como não inicializas o resto do array o código tenta converter o que lá encontrar (lixo). Deverias inicializar o array a zeros e parar o ciclo 'for' quando aparecer um valor 0 para converter, em vez da variável 'len'. Obviamente o último elemento do array nunca pode ser preenchido. Quanto ao primeiro printf tens algum problema de configuração do sistema na parte da língua (página de caracteres errada ou mistura com Unicode).
n2wb1e Posted May 31, 2012 at 10:08 PM Report #459594 Posted May 31, 2012 at 10:08 PM (edited) Refiz o teu codigo: #include <stdio.h> #define MAX 3 int main(void) { int x[MAX], i=0, temp; printf("Dame os numeros:\n"); for(; i < MAX;) { scanf("%d", &temp); if(temp > 0 || temp < 27) { x[i] = temp; i++; } else printf("Valor invalido"); } for(i=0; i < MAX; i++) { if(x[i] == 26) printf ("A"); else if(x[i] == 25) printf ("B"); else if(x[i] == 24) printf ("C"); else if(x[i] == 23) printf ("D"); else if(x[i] == 22) printf ("E"); else if(x[i] == 21) printf ("F"); else if(x[i] == 20) printf ("G"); else if(x[i] == 19) printf ("H"); else if(x[i] == 18) printf ("I"); else if(x[i] == 17) printf ("J"); else if(x[i] == 16) printf ("K"); else if(x[i] == 15) printf ("L"); else if(x[i] == 14) printf ("M"); else if(x[i] == 13) printf ("N"); else if(x[i] == 12) printf ("O"); else if(x[i] == 11) printf ("P"); else if(x[i] == 10) printf ("Q"); else if(x[i] == 9) printf ("R"); else if(x[i] == 8) printf ("S"); else if(x[i] == 7) printf ("T"); else if(x[i] == 6) printf ("U"); else if(x[i] == 5) printf ("V\n"); else if(x[i] == 4) printf ("W\n"); else if(x[i] == 3) printf ("X"); else if(x[i] == 2) printf ("Y"); else if(x[i] == 1) printf ("Z"); } return 0; } Edited May 31, 2012 at 10:18 PM by n2wb1e
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