Kriptosgeek Posted November 5, 2006 at 12:18 AM Report #62145 Posted November 5, 2006 at 12:18 AM Tenho algum erro no seguinte código so não sei qual! Ora Vejam: #include <stdio.h> //Blioteca com funções de entrada e saida #include <conio.h> //Biblioteca que contem o getch() main(){ //Abre o nosso programa int numero[5], aux; int i; int verdade; for (i=1;i<6;i++) { printf ("Escreve o %d: ",i); scanf("%D ",&numero[i]);} verdade=0; while (verdade=1) {verdade=0; for (i=1; i<5; i++) { if (numero[i]<numero[i+1]) { aux=numero[i]; numero[i]=numero[i+1]; numero[i+1]=aux; verdade=1;; } } } printf ("\n Vector ordenado:"); for (i=0; i<6; i++) { printf (" %D", numero[i]); } getchar(); } Alguem Sabe ode esta o erro? Nota: Sou inicante em C. Melhor browser game do Mundo!---> Travian Regista-te!
Hipnoted Posted November 5, 2006 at 02:21 AM Report #62155 Posted November 5, 2006 at 02:21 AM Eu compilei e não deu erro nenhum, mas convinha dizeres o que pretendes com o programa... "Nunca discutas com um idiota. Eles arrastam-te até ao seu nível e depois ganham-te em experiência"
TheDark Posted November 5, 2006 at 04:20 AM Report #62165 Posted November 5, 2006 at 04:20 AM Começando pelo príncipio: - no for (i=1;i<6;i++) devias estar a inicializar i com 0 e a terminar quando i for menor que 5, pois os arrays sao indexados a partir de 0; devia ser for(i=0;i<5;i++); - no scanf("%D ",&numero[ i ]) tens que ter atenção à string de formatação, que é muito precisa: o %d tem que ser minúsculo, e se tens um espaço à frente do %d a função só vai aceitar o valor quando este tiver um espaço à sua frente; se escreveres "5" o valor não vai ser lido, mas se escreveres "5 " deixando ali um espaço à frente do 5, o valor já é aceite. Assim, a instrução correcta seria scanf("%d", &numero[i]); - Em seguida, existem ali umas confusões com a variável verdade. Primeiro que tudo, no while(verdade=1) a condição vai dar sempre verdadeira (ou diferente de 0); o que pretenderias era while(verdade==1). Mas com esta alteração, o programa nunca entra no ciclo while, porque estás a dizer à partida que verdade=0. Por isso, o que deves querer é verdade=1; while (verdade==1) - no for (i=1; i<5; i++) continuas a iniciar i com 1 em vez de 0, e a condição de paragem devia ser i<4, pois estás sempre a tentar aceder à posição a seguir à actual: for (i=0; i<4; i++) - No ultimo for (i=0; i<6; i++) já inicializas correctamente o i, mas a condição de terminação devia ser i<5: for (i=0; i<5; i++) Não analisei o algoritmo que utilizaste para ordenar o vector, mas parece que funciona para ficar com o array por ordem decrescente 😉 Desaparecido.
Kriptosgeek Posted November 5, 2006 at 08:09 PM Author Report #62317 Posted November 5, 2006 at 08:09 PM Exclarecido! Uma das coisas que eu não gosto no C é que é uma linguagem muito sensivel!!!!!!! Uma coisinha fora do sitio e da logo erro! Um dos erros que eu demorei uns 3 minutos a descobrir foi no scanf! scanf ("%d ", a); Deveria ser scanf ("%d ",&a); Mas por causa deste erro minusculo o programa deu erro e o WIndows pedio para enviar o relatorio de erro! ? Mas pelo menos as potencialidades compensam os erros!! 😉 Melhor browser game do Mundo!---> Travian Regista-te!
Hipnoted Posted November 5, 2006 at 08:21 PM Report #62319 Posted November 5, 2006 at 08:21 PM Exclarecido! Uma das coisas que eu não gosto no C é que é uma linguagem muito sensivel!!!!!!! Uma coisinha fora do sitio e da logo erro! Isso não é só em C. E mesmo assim quando o compilador não detecta os erros o programa pode estar cheio de bugs... 😉 "Nunca discutas com um idiota. Eles arrastam-te até ao seu nível e depois ganham-te em experiência"
Warrior Posted November 5, 2006 at 10:06 PM Report #62337 Posted November 5, 2006 at 10:06 PM !!! O C é provavelmente a linguagem menos sensível entre as 7 que eu programo/programei.
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