Ir para conteúdo

POWERED BY:

Arquivado

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

janielton

passa-se matriz bidimensional por parametro?

Recommended Posts

Estou tendo dificuldade para elaborar essa parte de um trabalho. Nele é necessario varias vezes fazer o escalonamento de varias matrizes..entao queria criar uma funçao onde passamos uma matriz com os valores da matriz..e no final devolve a matriz ja escalonada.. alguem ajuda??

Compartilhar este post


Link para o post
Compartilhar em outros sites

1 - É C ou Java?- Se for java, é só passar a matriz, feliz da vida.- Se for C/C++ só passar o ponteiro para a função, ou a matriz mesmo. Mas nessas linguagens é bom passar as dimensoes pro método tb.

Compartilhar este post


Link para o post
Compartilhar em outros sites

é em C, usando ponteiro logo pra economizar.

Li uns manuais e consegui chegar a isso...so que ta dando errado: na hora de imprimir ele pega so o primeiro valor digitado e vai incrementando o valor e nao a memoria!

 

#include <stdio.h>#include <stdlib.h>void preenxer(int **vet, int a, int b){int i,j;for (i=0;i<a;i++) {   for (j=0;j<b;j++)	{	 printf("%d elemento da %d linha", i+1,j+1);	 scanf("%d",*(vet)+(i*b)+j); 	}    }}int main(){	int v,r,i,j;	int *vet;	printf("numero de variaveis?");	scanf("%d",&v);	printf("numero de restriçoes");	scanf("%d",&r);	vet = (int*) malloc(sizeof(int)*v*r);	preenxer(&vet,r,v);	printf("\n");	for (i=0;i<r;i++)	{	  for (j=0;j<v;j++)	   {		 printf("%d elemento da %d linha: %d\n", i+1, j+1, *(vet)+(i*v)+j);	   }	 	}}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa galera eu sou novo aqui!!!

mas queria resolver um problema que tenho

é um trabalho onde tenho que criar um jogo da velha

mas não é necessario IA http://forum.imasters.com.br/public/style_emoticons/default/assobiando.gif para ele basta as jogadas.

O problema é que tnho que passar a matriz do jogo para as funçoes por referencia http://forum.imasters.com.br/public/style_emoticons/default/closedeyes.gif

e não consigo, fiz o que foi passado neste topico porem não deu certo talvez pq minha matriz é de caracteres

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

 
  /****************************************************************
   *Zera a Matriz (para não imprimir lixo de memória)			 *
   ****************************************************************/
	void zera_matrix(char**matrix){
			 int i,j;
			 
			 for(i=1;i<=3;i++){
							   for(j=1;j<=3;j++){
												 matrix[i][j]=' ';
												 }
							   }
			 }
						   
						   
						   
  /****************************************************************
   *Desenha Matriz na tela										*
   ****************************************************************/						 
	void mostra_jogo(char**matrix){
		 
		 printf("\n					C[1]   C[2]   C[3]\n");
		 printf("			   L[1]	 %c |  %c |  %c",matrix[1][1],matrix[1][2],matrix[1][3]);
		 printf("\n					  ----+----+----\n");
		 printf("			   L[2]	 %c |  %c |  %c \n",matrix[2][1],matrix[2][2],matrix[2][3]);
		 printf("					  ----+----+----\n");
		 printf("			   L[3]	 %c |  %c |  %c ",matrix[3][1],matrix[3][2],matrix[3][3]);
		 }
  /****************************************************************
   *Recebe Jogada do usuario									  *
   ****************************************************************/	
	  void le_jogadaH(char**matrix){
		 int i,j,certifica;
		 do{
		 printf("\n\nDigite as coordenadas de sua jogada indicando a linha(L) e a coluna(C)\n");
		 printf("L:");scanf("%d",&i);
		 printf("C:");scanf("%d",&j);
		 
		 if(matrix[i][j]!=' '){
							printf("\aJogada Nao permitida\nTente Outra Vez");
							certifica=0;
							}
							else if((j>3)||(i>3)){
								 printf("Jogada nao permitida\n Tente Outra Vez");
								 certifica=0;
								 }
							else
							certifica=1;
		 }while(certifica==0);
		 
		 matrix[i][j]='x';
		 }
		 
		 
  /****************************************************************
   *Executa a jogada da maquina		   *
   ****************************************************************/	
		
	void le_jogadaC(char**matrix){
		 int i,j;
		 char confere;
		 for(i=1;i<=3;i++){
						   for(j=1;j<=3;j++)
											 if(matrix[i][j]==' ')break;
											 if(matrix[i][j]==' ')break;
											 
						   
						   }
		 
											  
		 matrix[i][j]='O';				  
		 
		 }
  /****************************************************************
   *Confre se ha Ganhador			 *
   ****************************************************************/
	char confere_ganhador(char**matrix){
		int i,j;
		char empate;
		  for(i=1; i<=3; i++){ /* verifica as linhas */
			  if(matrix[i][1]==matrix[i][2] && matrix[i][1]==matrix[i][3]){ 
				  return matrix[i][1];
			  }
		 }
	
		 for(j=1; j<=3; j++){ /* verifica as colunas */
			  if(matrix[1][j]==matrix[2][j] && matrix[1][j]==matrix[3][j]){ 
				  return matrix[1][j];
			  }
		 }
						 
		 /* testa as diagonais */
		 if(matrix[1][1]==matrix[2][2] && matrix[2][2]==matrix[3][3]){
			  return matrix[1][1];
		 }
		 if(matrix[1][3]==matrix[2][2] && matrix[2][2]==matrix[3][1]){
			  return matrix[1][3];
			  }
		  /*testa se empatou*/ 
		 if(i*j==9){
					matrix[i][j]='e';
					return matrix[i][j];
					}
			
		 return ' ';
		 }
		 
		 
		 
		 main(){
				int i;
				   char **matrix;
				   matrix=(char**)malloc(sizeof(char)*3);
				   for(i=0;i<3;i++)
				   matrix[i]=(char*)malloc(sizeof(char)*3);
				 
			   char confere,opcao;
			   int Ndejogada;
			   
			   confere=' ';
			  while(true){
			   system("cls");			
			  Ndejogada=0;			 
			  //zera_matrix(matrix);//zera a matriz
			  
			  mostra_jogo(matrix);//imprime a matriz na tela
			  
				
			  do{
				
				le_jogadaH(matrix);//le a jogada do usuario
				Ndejogada++;//Conta o numero de jogadas				
				confere=confere_ganhador(matrix);//confere se o usuario ganhou
						   if(confere!=' '){//se ele ganhou para o loop
							  break;
							  }
							  
				le_jogadaC(matrix);//recebe a jogada do computador
			   confere= confere_ganhador(matrix);//confere se a maquina ganhou
			   system("cls");
				mostra_jogo(matrix);
				
				if(Ndejogada>4){//Verifica se o Numero de jogadas e maior que 4 se for quer dizer que empatou
								confere='e';
								}
				   
				}while(confere==' ');//se a maquina ganhar para o loop
				system("cls");
				mostra_jogo(matrix);
			  if(confere=='x'){
							   printf("\n***********************\n*** O Jogador Ganhou***\n***********************");
							   }
			  else if(confere=='O'){
				   printf("\n**************************\n*** O computador Ganhou***\n**************************");
				   }
			  else if(confere=='e'){
				   printf("\n***************\n*** Empate ***\n***************");
								}
								
						   
			  printf("Deseja Jogar novamente?\n(s)Para continuar\n(n) para sair\n");
			  scanf("%s",&opcao);
		  
			  
			  if(opcao=='n')
			  exit(0);
			  
				   
}			  
				
				}
O código esta ai se necessitar de mais informações me avise :rolleyes:

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.