Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Thais Tesck

for e vetor

Recommended Posts

Ontem havia postado um problema que nao conseguia fazer com ajuda desse forum desenvolvi ele

 

A questao era ler numeros de 0 á 1000 e imprimi-los de 1 á 100 na forma crescente .

 

Até ai okay .

 

O problema é que agora quando digito dois numeros iguais , os mesmos aparecem , sendo que só poderá aparecer uma unica vez

 

Se voces puderem me ajudar novamente ficarei grata .

 

 

aqui está meu programa :

 

 

 

#include <stdio.h>
int main()
{
int vetor[10], i ,j ,x;
for(i=0; i<10; i++)
{
printf("Digite o valor %d : \n", i+1);
scanf("%d",&vetor);
fflush(stdin);
}
for(i=0; i<=8; i++)
for(j = i + 1; j<=9; j++)
if(vetor > vetor[j])
{
x = vetor;
vetor = vetor[j];
vetor[j] = x;
}
printf("\n");
for(i=0; i<9; i++)
{
if(vetor<=100 && vetor >=0 )
printf("%d\n",vetor);
}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

"A questao era ler numeros de 0 á 1000 e imprimi-los de 1 á 100 na forma crescente ." Tente explicar com mais detalhes sempre que possível.

Você também nao tá trabalhando com char, entao "nao precisa" de fflush(stdin); //Se alguem recomenda nesse caso que o programa soh trabalha com int, limpar o buffer, postem aqui embaixo. Dá uma olhada também aqui para resolver o problema de buffer do teclado:

-> http://forum.imasters.com.br/topic/336835-tutorial-systempause-e-fflushstdin/#entry1252041

 

Nessa parte, para testar voce pode fazer o seguinte:

for(i=0; i<10; i++) // Você quer testar vetor[9] também certo?
{
if(vetor<=100 && vetor >=0 )
printf("%d\n",vetor);
else putchar('*');
/*******************************************************************
/***Aí quando for testar vai saber qual posicao do vetor ele nao imprimiu.
/***depois se for necessidade do progama voce pode retirar. Eu acho que facilita os teste por isso
/***faco assim =)*/
}
e depois:
for(i=0; i<=8; i++)
for(j = i + 1; j<=9; j++)
if(vetor > vetor[j])
{
x = vetor;
vetor = vetor[j];
vetor[j] = x;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ops. :upset:

Acho q tá mais claro que meu anterio que nao consegui editar corretamente...

"A questao era ler numeros de 0 á 1000 e imprimi-los de 1 á 100 na forma crescente ." Tente explicar com mais detalhes sempre que possível. Nao sei se isso Resolverá seu problema mas pode ajudar..

Você também nao tá trabalhando com char, entao "nao precisa" de fflush(stdin); //Se alguem recomenda nesse caso que o programa soh trabalha com int, limpar o buffer, postem aqui embaixo. Dá uma olhada também aqui para resolver o problema de buffer do teclado:

-> http://forum.imasters.com.br/topic/336835-tutorial-systempause-e-fflushstdin/#entry1252041

Olhe a parte que voce imprime os numeros, voce quer imprimir somente até vetor[8] mesmo??

#include <stdio.h>

int main()
{
int vetor[10] , i , j , x ;

for(i = 0 ; i < 10 ; i++)
{
printf("Digite o %d numero: ",i+1);
scanf("%d" , &vetor);
}

for(i = 0 ; i < 9 ; i++) //bubble sort
{
for(j = i +1 ; j < 10 ; j++) // a cada i++, o vetor terá mais um item organizado, da esquerda para a direita.
{
if(vetor > vetor[j])
{
x = vetor;
vetor = vetor[j];
vetor[j] = x ;
}
}
}

putchar('\n');
x = -1 ;
for(i = 0 ; i < 10 ; i++)
{
if(vetor >= 0 )
{
if(vetor > 100)
break; // para o for.
if(x == vetor)
continue; //pula para a proxima iteracao.
//aqui, o numero da posicao do vetor a ser impressa é >= 0 , <= 100 , e nao é numero repetido.
printf("- %d ",vetor); // repare que nessa impressao, os numeros serao impressos na forma organizada anteriormente, crescente.
x = vetor ;

} // note que quando o 1° elemtendo começar a ser impresso, todos os elementos das proximas posicoes serão >= 0.
// se vetor[5] > 100, entao todos os demais vetor[6] - 7 - 8 - 9, sao maiores que 100.
}

return 0 ; // Nunca se esqueça de usar comentários..
acho que isso ajuda a resolver o seu problema...
}
:assobiando:

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu nao entendi uma coisa

 

 

putchar('\n');
x = -1 ; SE X = -1
for(i = 0 ; i < 10 ; i++)
{
if(vetor >= 0 )
{
if(vetor > 100)
break; // para o for.
if(x == vetor) E X == VETOR , COMO ELE NAO REPETIRÁ OS NUMEROS ?
continue; //pula para a proxima iteracao.

 

desculpa a ignorância sou nova nisso

 

aliás compilo perfeitamente , obrigada mas queria saber como fazer .

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.