• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Psicopunk

Problema com Matrizes

6 mensagens neste tópico

Boas, pessoal, tudo?

ando a fazer um programa que coloque inicialmente toda a matriz a zero. No entanto, o programa empanca e não entendo pq... já não programo em C há algum tempo e pode até ser um erro estúpido mas já tentei encontrar e pesquisar e parece-me td bem...

aqui está o extracto:

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


#define MATRIZ_MIN 10 //tamanho da matriz
#define MATRIZ_MAX 10 //tamanho da matriz

void display_matriz();

void zerar_matriz(int matriz[10][10])
{
int k,l;

printf("\nROTINA DE ZEROS");

for(k=0;k=(MATRIZ_MIN-1);k++)
{
for(l=0;l=(MATRIZ_MAX-1);l++)
{
	matriz[k][l] = 0;
}

printf("Matriz zerada\n");

}
display_matriz(matriz);

}

void display_matriz(int matriz[][10])
{
int k=0,l=0;

for(k=0;k=(MATRIZ_MIN-1);k++)
{
printf("\n");
for(l=0;l=(MATRIZ_MAX-1);l++)
{
	printf("[%d]",matriz[k][l]);
}


}
}



void main()
{

//int matriz[MATRIZ_MIN][MATRIZ_MAX];
int matriz[10][10];

printf("Vou zerar a matriz\n");
zerar_matriz(matriz);	

getchar();

int linha_qinit;
int linha_qgoal;
int coluna_qinit;
int coluna_qgoal;

printf("Introduza a célula Qinit:\n LINHA:");
scanf("%d",&linha_qinit);
printf("\nCOLUNA:");
scanf("%d",&coluna_qinit);


printf("Introduza a célula Qgoal:\n LINHA:");
scanf("%d",&linha_qgoal);
printf("\nCOLUNA:");
scanf("%d",&coluna_qgoal);


/*if((linha_qinit==linha_qgoal) && (coluna_qinit==coluna_qgoal)) 
{
printf("\nCélula actual é célula Objectivo!");
}*/

}

Obrigado pela ajuda...

Cumprimentos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Esqueci-me de dizer que o output quando corro o programa é:

./wavefront

Vou zerar a matriz

(aqui empanca)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A condição de paragem dos ciclos está mal.

PS: podes usar a função memset.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Qual seria a utilidade do memset aqui?

Eu acho que ele nem entra nos ciclos porque devia printar no ecra antes de começar os ciclos:

printf("\nROTINA DE ZEROS");

e no output não aparece nada

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já vi que o memset permite zerar vectores. Mas como faço com matrizes? ele pede o tamanho do vector... mas a matriz é diferente...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Essa função é executada, só não vês a mensagem no ecrã porque não tem um \n no fim, e ficou no buffer. Basta colocar um \n no fim ou fazer flush do stdout para que a mensagem apareça no ecrã.

O problema são as condições de paragem dos ciclos, que estão mal definidas e o programa nunca mais de lá sai.

Quanto ao memset, uma matriz não é mais do que um vector de n*m posições.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora