Jump to content

[C] Ajuda: Erro que desconheço (Resolvido)


Recommended Posts

Posted

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!

Posted

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.

Posted

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!

Posted

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"

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.