Ir para conteúdo
Fórum Script Brasil
  • 0

Problema na geração de números randômicos, para a construção de uma matriz mágica em C


Thiago Mattos

Pergunta

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

//PROTOTIPOS

void gerarMatriz(int tam, int mat[tam][tam]);
void mostraMatriz(int tam, int mat[tam][tam]);
int somaDiagonalPrincipal(int tam, int mat[tam][tam]);
void mostraVetor(int vet[], int tam);
void somaLinhas(int tam, int mat[tam][tam], int vet[]);
void somaColunas(int tam, int mat[tam][tam], int vet[]);
int testaIgualVetor(int vet[], int tam);



//MAIN

int main() {

	int n;

	scanf("%i", &n);

	int mat[n][n];

	
	gerarMatriz(n, mat);
	mostraMatriz(n, mat);


	srand=(time(NULL));
	
	int somaDP = 0; 
	

	somaDP = somaDiagonalPrincipal(n,mat);  

 
	//soma linhas

	int vetL[n];

	somaLinhas(n, mat, vetL);
	printf("\nSoma das linhas: ");


	mostraVetor(vetL, n);

 
	//soma colunas

	int vetC[n];


	somaColunas(n, mat, vetC);


	printf("\nSoma das colunas: ");


	mostraVetor(vetC, n);


	
	printf("\nSoma diagonal principal %i\n", somaDP);
 
	int testaL, testaC;

	testaL = testaIgualVetor(vetL, n);
	testaC = testaIgualVetor(vetC, n);
 
	if (testaL && testaC && somaDP && somaDP == vetL[0]) {

		printf("Matriz Magica");
		
	} else {
	    
		printf("Matriz não Magica");
	}
 
	return 0;
}

//FUNCOES

void gerarMatriz(int tam, int mat[tam][tam]) {
	int i, j;
	for (i = 0; i < tam; i++) {
		for (j = 0; j < tam; j++) {
			mat[i][j]= (rand()% tam)+1;
		}
	}
}

void mostraMatriz(int tam, int mat[tam][tam]) {
	int i, j;
	for (i = 0; i < tam; i++) {
		for (j = 0; j < tam; j++) {
			printf("%i ", mat[i][j]);
		}
		printf("|  \n");
	}
}

int somaDiagonalPrincipal(int tam, int mat[tam][tam]) {
	int i, soma = 0;
	for (i = 0; i < tam; i++) {
		soma += mat[i][i];
	}
	return soma;
}

 
void mostraVetor(int vet[], int tam) {
	int i;
	for (i = 0; i < tam; i++) {
		printf("%i ", vet[i]);
	}
}
 
void somaLinhas(int tam, int mat[tam][tam], int vet[]) {
	int i, j;
	for (i = 0; i < tam; i++) {
		vet[i] = 0;
		for (j = 0; j < tam; j++) {
			vet[i] += mat[i][j];
		}
	}
}
 
void somaColunas(int tam, int mat[tam][tam], int vet[]) {
	int i, j;
	for (j = 0; j < tam; j++) {
		vet[j] = 0;
		for (i = 0; i < tam; i++) {
			vet[j] += mat[i][j];
		}
	}
}
 
int testaIgualVetor(int vet[], int tam) {
	int i;
	for (i = 1; i <  tam; i++) {
		if (vet[i] != vet[i-1]) {
			return 0;
		}
	}
	return 1;
}

 

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...