Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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??
é 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)+(ib)+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)vr); 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)+(iv)+j); } }}
Você criou outra entrada no fórum e eu respondi lá...
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:
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.