Alcap Posted July 12, 2006 at 04:24 AM Report #37726 Posted July 12, 2006 at 04:24 AM Boas, Estava a fazer um dos exercicios resolvidos do Linguagem C (sem olhar pra soluçao 😉). O problema pode ser encontrado na pagina 148. Escreva um programa em C que escreva no ecrã, toda a tavela ASCII (0..255 chars) escrevendo em cada linha o codigo ASCII e o caracter correspondente. EXEMPLO ... 65 -->A 66 -->B 67 -->C ... A resoluçao dada pelo livro é a seginte: #include <stdio.h> main() { int i; for (i=0;i<=255;i++) printf("%3d --> %c\n",i, (char) i); } A resoluçao criada por mim é: #include <stdio.h> main() { int x; char y; for(x=0;x<=255;x++, y++) printf("%d ---> %c\n",x,y); } O erro aqui é que nenhum dos dois programas me da a tabela de ASCII. Muitos numeros nao tem correspondente e, por exemlo, o caracter C esta no numero 140 quando deveria estar no numero 67. Isto acontece tambem com a resoluçao que estava no livro, dai eu estar tao intrigado. Estou a compilar isto com o GCC, e a usar o KATE como editor(nao sei se isto é relevante 😛 ) Desde ja agradecido pela ajuda
Rui Carlos Posted July 12, 2006 at 09:23 AM Report #37738 Posted July 12, 2006 at 09:23 AM não falta inicializar a variável y? EDIT no exemplo do livro tem lá um parentesis a mais (no printf). Rui Carlos Gonçalves
Alcap Posted July 12, 2006 at 01:35 PM Author Report #37793 Posted July 12, 2006 at 01:35 PM Falta sim. Mas agora é que a porca torce o rabo. Compilei isto em Windows e ja funciona ?. Mesmo sem inicializar a variavel y da-me o ASCII todo e nos numeros correctos. Ja o exemplo do Damas da erro a compilar. PS: Tambem és de Braga 😉 EDIT: Deu erro a compilar porque eu me enganei ao escrever o codigo aqui no forum e depois fiz copy/paste para o IDE. No entanto o codigo compilado em Linux, tanto a minha resoluçao como a do Damas da aquele erro estupido
Rui Carlos Posted July 12, 2006 at 01:46 PM Report #37796 Posted July 12, 2006 at 01:46 PM qual é o erro que está a dar? compilei com o gcc e não deu problemas... Rui Carlos Gonçalves
Alcap Posted July 12, 2006 at 01:55 PM Author Report #37798 Posted July 12, 2006 at 01:55 PM Ve o meu edit 😉. Escrevemos ao mesmo tempo O erro que me da em linux é que o ASCII esta todo trocado. Exemplo: 140 --> C Em Windows isto ja nao acontece, embora esteja a usar o mesmo codigo. Fica bem
Rui Carlos Posted July 12, 2006 at 02:19 PM Report #37801 Posted July 12, 2006 at 02:19 PM Ve o meu edit 😄 . Escrevemos ao mesmo tempo O erro que me da em linux é que o ASCII esta todo trocado. Exemplo: 140 --> C Em Windows isto ja nao acontece, embora esteja a usar o mesmo codigo. Fica bem eu já usei várias vezes um código semelhante em Linux e funcionava... a única diferença é que eu normalmente não faço o casting para 'char' (no printf). Rui Carlos Gonçalves
Alcap Posted July 13, 2006 at 09:03 AM Author Report #37972 Posted July 13, 2006 at 09:03 AM Quando for a linux volto a postar. Devo ter feito qq coisa mal... Ja agora: Qual é a diferença entre fazer o casting e nao fazer o casting?
Rui Carlos Posted July 13, 2006 at 10:05 AM Report #37986 Posted July 13, 2006 at 10:05 AM Ja agora: Qual é a diferença entre fazer o casting e nao fazer o casting? em principio não deve ser nenhuma (acho eu...). uma vez que usamos um '%c', ele vai imprimir o valor como sendo um caracter. Rui Carlos Gonçalves
Alcap Posted July 14, 2006 at 07:16 PM Author Report #38300 Posted July 14, 2006 at 07:16 PM Curtia saber o que esta mal com isto lol. Se compilar este programa em linux da-me isto: http://img332.imageshack.us/img332/2746/snapshot93vu.png Se compilar em windows da-me a tabela ASCII correcta. Não percebo isto... Alguem me pode ajudar? Desde ja agradecido
TheDark Posted July 15, 2006 at 04:17 AM Report #38328 Posted July 15, 2006 at 04:17 AM Isso começa a escrever em que número? No 0? Desaparecido.
Alcap Posted July 15, 2006 at 02:16 PM Author Report #38389 Posted July 15, 2006 at 02:16 PM Ya, começa no 0
Guest id194 Posted July 15, 2006 at 03:55 PM Report #38398 Posted July 15, 2006 at 03:55 PM o typecasting que ali tens, não está ali a fazer nada, é desnecessário. exprimenta sem ele, talvez o erro esteja ai, se n tiver, n tou a ver...
TheDark Posted July 15, 2006 at 04:21 PM Report #38407 Posted July 15, 2006 at 04:21 PM Se em vez de int x; utilizares unsigned char x; acontece o mesmo? Vais ter é que mudar a condição do for para x<=254 senão nunca mais sais do ciclo... mas só para teste, experimenta! Desaparecido.
Alcap Posted July 16, 2006 at 09:56 PM Author Report #38545 Posted July 16, 2006 at 09:56 PM ok, vou exprimentar isso
entering Posted July 16, 2006 at 10:13 PM Report #38546 Posted July 16, 2006 at 10:13 PM porque usar 2 variáveis, mesmo que funcione não é eficiente
Alcap Posted July 17, 2006 at 01:35 PM Author Report #38626 Posted July 17, 2006 at 01:35 PM É pouco eficiente, mas eu so soube isso depois... Ja tentei com apenas 1 variavel com casting e sem casting e as duas me dao este erro estupido. Em windows nao acontece isto
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