1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

[C] Problema em codigo

Discussão em 'Programação' iniciada por Ruanes, 3 de Novembro de 2008. (Respostas: 4; Visualizações: 608)

  1. Ruanes

    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
     
  2. Baderous

    Baderous Banido

    A condição de saída do ciclo está mal.
     
  3. m00s

    m00s Power Member

    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: 3 de Novembro de 2008
  4. The_True_Eue

    The_True_Eue Power Member

    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.
     
  5. Ruanes

    Ruanes Power Member

    têm razão. Vou ter mais atenção a estes erros desnecessarios
     

Partilhar esta Página