• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Kriptosgeek

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

6 mensagens neste tópico

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu compilei e não deu erro nenhum, mas convinha dizeres o que pretendes com o programa...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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 ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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!  :mad:

Mas pelo menos as potencialidades compensam os erros!! ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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... ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

!!!

O C é provavelmente a linguagem menos sensível entre as 7 que eu programo/programei.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora