Jump to content


Photo

Torre De Hanoi


  • Faça o login para participar
1 reply to this topic

#1 lucasphp

lucasphp

    Turista

  • Usuários
  • 51 posts
  • Sexo:Não informado

Posted 05/12/2009, 02:18

Olá galera, então... comecei a dar uma estudada em C e foi fazer aquele jogo "torre de hanoi".

Então, já to me atrapalhando aqui com as matrizes... Queria atribui um valor texto para cada linha e coluna, mas nao ta sendo possivel...

Eis o código:
#include <stdio.h>
#include <stdlib.h>

main() {
     // Declarações das variaveis
    char matriz [2][6];
     int matriztamanho [2][6];
     int origem, destino;
     int cont1, cont2;
     int final = 0;
     int mov =0;
     
     //Montando o "tabuleiro"
     
     //Primeira Coluna
     matriz [0][0] = "           -           ";
     matriz [0][1] = "          ---          ";
     matriz [0][2] = "         -----         ";
     matriz [0][3] = "        -------        ";
     matriz [0][4] = "       ---------       ";
     matriz [0][5] = "      -----------      ";
     matriz [0][6] = "     -------------     ";
     
     //Segunda e Terceira Coluna
     for (cont1=0;cont1<7;cont1++) {
         matriz[1][cont1] = "           |           ";
         matriz[2][cont1] = "           |           ";  
     }
     
  
     //Definição do tamanho de cada posição da matriz no momento inicial do programa
     //Como se fosse dar o "valor" de cada disco

     for (cont1=0;cont1<7;cont1++) {
         matriz[0][cont1] = (cont1+1); //Primeira Coluna
         matriz[1][cont1] = 0; //Segunda Coluna
         matriz[2][cont1] = 0; //Terceira Coluna
     }
     
     //JOGO     
     while (final = 0) {
          system("cls"); //Limpa tela
           
           for (cont1=0;cont1<7;cont1++) {
               printf("%c %c %c\n", matriz[0,cont1],matriz[1,cont1],matriz[2,cont1]);
               }
           
          /printf ("\n           1                      2                      3");
           printf ("\nNúmero de movimentos: &d", mov);
           
            do {
            printf("\nColuna de origem: ");
            scanf("&d", &origem);
                } while(origem < 4 && origem > 0);
            
            do {
            printf("\nColuna de destino: ");
            scanf("&d", &destino);
                } while(destino < 4 && destino > 0);
           
           
           }
     
     
     
     system("pause");
     return 0;
     }


Essa parte de
matriz[0][3] = " ----- ", não ta dando certo...

Obrigado.

#2 Felipe Pena

Felipe Pena

    O temor do Senhor é o princípio da sabedoria

  • Ex-Admins
  • 6441 posts
  • Sexo:Masculino

Posted 05/12/2009, 12:09

Você não pode fazer esse tipo de atribuição para um array.

Apenas na inicialização, como:

char matriz[2][7] = {"foobar", "barfoo"};

Para fazer atribuição depois sem ser caractere por caractere, seria usando funções.

Por exemplo:

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

int main(int argc, char **argv) {
	char matriz[2][7];

	memcpy(matriz[0], "foobar", sizeof("foobar"));
	
	printf("[%s]\n", matriz[0]);
	return 0;
}

Ou você pode trabalhar com ponteiros.


Observações:
  • Você está usando & ao invés dfe % tanto em printf como em scanf.
  • O seu primeiro for está estourando o limite definido de caracteres de 6, lembre-se que o último precisa ser um '\0'.
  • Você está usando também: matriz[0,cont1], o correto é matriz[0][cont1].

Felipe Pena
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq