problema com vetor

0 views
Skip to first unread message

DexterCesar

unread,
Dec 5, 2009, 2:43:23 PM12/5/09
to ccppbrasil
Ola pessoal estou bolando uns esquemas de um contador de
possibilidades que imprima a amostra de um jogo, porem antes de tudo
eu precisava elaborar uma função que pega-se um vetor de 9 slots e
fize-se a contagem

assim

0,0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0,1
0,0,0,0,0,0,0,0,2
...
9,9,9,9,9,9,9,9,7
9,9,9,9,9,9,9,9,8
9,9,9,9,9,9,9,9,9

inicialmente comecei fazendo com apenas 3 slots para ver como q eu
teria de fazer os loop
obs sei q o vetor[9] possui 10 slots por conta o 0 mas esse ultimo que
sobra como 9 esta destinado a outra informacao =] que vou colocar dps.

#include <stdio.h>

int main(){
int vetor[9];
printf("\n\n");
vetor[0]=0;
while ( vetor[0] <=9 ){
vetor[1]=0;
while ( vetor[1] <=9 ){
vetor[2]=0;
while ( vetor[2] <=9 ){
printf("\n %d %d %d",vetor[0],vetor[1],vetor[2]);
vetor[2]++;
}
vetor[1]++;
}
vetor[0]++;
}

printf("\n\n");
system("PAUSE");
}

e neca de funcionar tbm tentei utilizando for

for(vetor[0]=0;vetor[0]<=9;vetor[0]++){
for(vetor[1]=0;vetor[1]<=9;vetor[1]++){
for(vetor[2]=0;vetor[2]<=9;vetor[2]++){
printf("\n %d %d %d",vetor[0],vetor[1],vetor[2]);
}
}


tipo ele ja esta começando a contagem em 7,0,2 e indo ate 9,9,9 mas
cade o inicio 0,0,1 ate o 7,0,2? onde q esta se perdendo esse dados???
alguem saberia onde esta bugando o codigo??

Vellozo

unread,
Dec 5, 2009, 3:30:56 PM12/5/09
to ccppbrasil
Seu código está certinho. O que deve estar acontecendo é que as linhas
do "terminal" acabam, aí desaparecem as primeiras linhas... ponha num
arquivo de saida q vc verá q está funcionando!
Olhaí...

#include <stdlib.h>
#include <stdio.h>

int main(int argc, char *argv[]){
int vetor[9];

FILE *saida;
saida = fopen(argv[1],"w");
fprintf(saida,"\n\n");
vetor[0]=0;
while ( vetor[0] <=9 ){
vetor[1]=0;
while ( vetor[1] <=9 ){
vetor[2]=0;
while ( vetor[2] <=9 ){
fprintf(saida,"\n %d %d %d",vetor[0],vetor[1],vetor[2]);
vetor[2]++;
}
vetor[1]++;
}
vetor[0]++;
}

fprintf(saida,"\n\n");
return 0;

}

pra executar... no linux... ./<nome do programa> <arquivo de
saida>.<extensao qualquer>

Abs
Hugo Vellozo

Pedro d'Aquino

unread,
Dec 5, 2009, 8:00:27 PM12/5/09
to ccppb...@googlegroups.com
Você também pode redirecionar a saída utilizando "meuprograma > arquivosaida.txt". Isso funciona no Linux e no Windows.

2009/12/5 Vellozo <vel...@gmail.com>

Marcio Gil

unread,
Dec 6, 2009, 7:29:00 AM12/6/09
to ccppb...@googlegroups.com
Ou utilizar os comandos 'head' e 'tail' para ver o início e o final da saída. Exemplo:
 
$ gcc -Wall -Wextra -pedantic -O3 contador.c
$ ./a.out | head
{ 0, 0, 0, 0, 0 }
{ 0, 0, 0, 0, 1 }
{ 0, 0, 0, 0, 2 }
{ 0, 0, 0, 0, 3 }
{ 0, 0, 0, 0, 4 }
{ 0, 0, 0, 0, 5 }
{ 0, 0, 0, 0, 6 }
{ 0, 0, 0, 0, 7 }
{ 0, 0, 0, 0, 8 }
{ 0, 0, 0, 0, 9 }
$ ./a.out | tail
{ 9, 9, 9, 9, 0 }
{ 9, 9, 9, 9, 1 }
{ 9, 9, 9, 9, 2 }
{ 9, 9, 9, 9, 3 }
{ 9, 9, 9, 9, 4 }
{ 9, 9, 9, 9, 5 }
{ 9, 9, 9, 9, 6 }
{ 9, 9, 9, 9, 7 }
{ 9, 9, 9, 9, 8 }
{ 9, 9, 9, 9, 9 }
$
 
Mas eu posso dar uma sugestão para outro código?
 
#include <stdio.h>
 
int main( void )
{
  int slots[10] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
  int i;
 
  while (1)
  {
    for (i = 0; i < 5; ++i)
      printf( "%s%d", (i == 0? "{ ": ", "), slots[i] );
    printf( " }\n" );
 
    if (!(slots[4] = (slots[4]+1)%10) && !(slots[3] = (slots[3]+1)%10)
        && !(slots[2] = (slots[2]+1)%10) && !(slots[1] = (slots[1]+1)%10)
        && !(slots[0] = (slots[0]+1)%10))
      break;
    /* Ou utilize este aqui para utilizar as 10 posições
    if (!(slots[9] = (slots[9]+1)%10) && !(slots[8] = (slots[8]+1)%10)
        && !(slots[7] = (slots[7]+1)%10) && !(slots[6] = (slots[6]+1)%10)
        && !(slots[5] = (slots[5]+1)%10) && !(slots[4] = (slots[4]+1)%10)
        && !(slots[3] = (slots[3]+1)%10) && !(slots[2] = (slots[2]+1)%10)
        && !(slots[1] = (slots[1]+1)%10) && !(slots[0] = (slots[0]+1)%10))
      break;
    */
  }
 
  return 0;
}


From: Pedro d'Aquino

E. Tadeu

unread,
Dec 6, 2009, 2:34:00 PM12/6/09
to ccppb...@googlegroups.com
Porque não usa um int e pega os dígitos decimais dele? ;)

Reply all
Reply to author
Forward
0 new messages