[C] Problema em codigo

Ruanes

Power Member
Oi tenho um probelma aqui num codigo:

queria preencher um vector com numeros e depois queria imprimi-los (só para confirmar se o vector foi mesmo preenchido).

aqui está o codigo:
Código:
[B][SIZE=2][COLOR=#7f0055]
[LEFT]#include[/B][/COLOR][/SIZE][SIZE=2][COLOR=#000000] [/COLOR][/SIZE][SIZE=2][COLOR=#2a00ff]<stdio.h>[/LEFT]
[/COLOR][/SIZE][B][SIZE=2][COLOR=#7f0055][LEFT]#include[/B][/COLOR][/SIZE][SIZE=2][COLOR=#000000] [/COLOR][/SIZE][SIZE=2][COLOR=#2a00ff]<stdlib.h>[/LEFT]
[/COLOR][/SIZE][B][SIZE=2][COLOR=#7f0055][LEFT]#include[/B][/COLOR][/SIZE][SIZE=2][COLOR=#000000] [/COLOR][/SIZE][SIZE=2][COLOR=#2a00ff]<string.h>[/LEFT]
[/COLOR][/SIZE][SIZE=2][LEFT][/LEFT]
[/SIZE][B][SIZE=2][COLOR=#7f0055][LEFT]int[/B][/COLOR][/SIZE][SIZE=2][COLOR=#000000] [B]main[/B]()[/COLOR]
{[/LEFT]
[/SIZE][SIZE=2][LEFT][/SIZE][B][SIZE=2][COLOR=#7f0055]for[/B][/COLOR][/SIZE][SIZE=2](i1=0,i2=0;i1==9 && i2==3;i1++)
{
cartas_o[i1][i2]=i1;
[/SIZE][B][SIZE=2][COLOR=#7f0055]if[/B][/COLOR][/SIZE][SIZE=2](i1==9)
{
i1=0;
i2++;
}
}
[/SIZE][B][SIZE=2][COLOR=#7f0055]for[/B][/COLOR][/SIZE][SIZE=2](i1=0,i2=0;i1==9 && i2==3;i1++)
{
[/SIZE][B][SIZE=2][COLOR=#642880]printf[/B][/COLOR][/SIZE][SIZE=2]([/SIZE][SIZE=2][COLOR=#2a00ff]"%d\n"[/COLOR][/SIZE][SIZE=2],cartas_o[i1][i2]);
[/SIZE][B][SIZE=2][COLOR=#7f0055]if[/B][/COLOR][/SIZE][SIZE=2](i1==9)
{
i1=0;
i2++;
}
}
[/SIZE][B][SIZE=2][COLOR=#642880]system[/B][/COLOR][/SIZE][SIZE=2]([/SIZE][SIZE=2][COLOR=#2a00ff]"pause"[/COLOR][/SIZE][SIZE=2]);
[/SIZE][B][SIZE=2][COLOR=#7f0055]return[/B][/COLOR][/SIZE][SIZE=2] 0;[/LEFT]
}
[/SIZE]

isto não é o programa todo, é só uma parte.

O problema é que ele não imprime
 
muito mal mesmo!

"i1==9 && i2==3" só faz com que funcione se estar condições se verificarem à partida!

...ainda por cima inicializas i1=0 e i2=0, logo esse ciclo nunca vai ser executado!

não precisas do "string.h" nos includes, ou pelo menos não o estás a usar.



o preenchimento do "vector" não está correcto

Código:
for(i1=0,i2=0;i1==9 && i2==3;i1++)
{
  cartas_o[i1][i2]=i1;
  if(i1==9)
  {
    i1=0;
    i2++;
  }
}

...pois ao inicializar o i1=0 estás a destruir / aldrabar o ciclo "for".


aconselho-te a ver correctamente o funcionamento do ciclo "for", os parámetros de entrada e condição de validação.
 
Última edição:
Como já foi dito, os ciclos for estão mal escritos.
A segunda parte do ciclo (a condição) serve para dizer não quando o ciclo termina, mas quando deve continuar... Espera que me faça entender.
E para o que queres (preencher um array multidimensional) deves usar não um, mas dois ciclos, um dentro do outro.
Aqui fica um exemplo:
Código:
for(i = 0; i < LINHAS; i++)
{
    for(j = 0; j < COLUNAS; j++)
    {
        m[i][j] = x; // Qualquer coisa
    }
}
Estes dois ciclos percorrem todas as linhas e colunas da matriz m.
 
Back
Topo