logo Thecsea.it



Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License



scolastica » esercizi » terza superiore » linguaggio c

Testo dell'esercizio

Verificare se una matrice quadrata A (RxR) con R >0 è un quadrato magico, cioè se la somma degli elementi della diagonale principale, la somma deglie elementi della diagonale secondaria e la somma degli elementi di ciascuna riga e di ciascuna colonna sono uguali.
Es di quadrato magico.
8 1 6
3 5 7
4 9 2
Usare una matrice globale.
Acquisisci: funzione che carica la matrice dato R.
Verifica: dato R, funzione che verifica se la matrice e' un quadrato magico, ritorna 1 se vero, 0 se falso.

mostra soluzione

/*
CLAUDIO CARIDNALE 3AI
Verificare se una matrice quadrata A (RxR) con R >0 è un quadrato magico, cioè se la somma degli elementi della diagonale principale, la somma deglie elementi della diagonale secondaria e la somma degli elementi di ciascuna riga e di ciascuna colonna sono uguali.
Es di quadrato magico. 
8 1 6
3 5 7
4 9 2
Usare una matrice globale.
Acquisisci: funzione che carica la matrice dato R.
Verifica: dato R, funzione che verifica se la matrice e' un quadrato magico, ritorna 1 se vero, 0 se falso.
*/
#include<stdio.h>
#define MAX 1000
void acquisisci(void);
int verifica(void);
int mat[MAX][MAX];
int r;

int main(){
	//funzioni
	
	//acquisizione
	acquisisci();
	
	//verifica
	if(verifica())
		printf("la matrice e` un quadrato magico\n");
	else
		printf("la matrice non e` un quadrato magico\n");
}

void acquisisci(void){
	//dichiarazioni
	int i,j;	
	
	//acquisizione di r	
	do{
		printf("inserire r : ");
		scanf("%d",&r);
	}while(r<1 || r>=MAX);
	
	//acquisizione dati
	for(i=0;i<r;i++)
		for(j=0;j<r;j++){
			printf("inserire il valore alla riga %d ed alla colonna %d : ",i+1,j+1);
			scanf("%d",&mat[i][j]);
		}
}

int verifica(void){
	//dichiarazioni
	int i,j,sommap=0,sommas=0,sommar[MAX],sommac[MAX];
	
	//inizializzaizoni
	
	//inizializzaizone vettore somma righe
	for(i=0;i<r;i++)
		sommar[i] = 0;
	
	//inizializzaizone vettore somma colonne
	for(i=0;i<r;i++)
		sommac[i] = 0;
	
	//somme
	
	//somma diagonale princiaple
	for(i=0;i<r;i++)
		sommap += mat[i][i];
	
	//somma diagonale secondaria
	for(i=0,j=r-1;i<r;i++,j--)
		sommas += mat[i][j];
	
	//somma righe
	for(i=0;i<r;i++)
		for(j=0;j<r;j++)
			sommar[i] += mat[i][j];
	
	//somma colonne
	for(j=0;j<r;j++)
		for(i=0;i<r;i++)
			sommac[j] += mat[i][j];
	
	//verifica
	if(sommap == sommas){
		//verifica somma righe
		for(i=0;i<r;i++)
			if(sommap != sommar[i])
				return 0;
		
		//verifica somma colonne
		for(i=0;i<r;i++)
			if(sommap != sommac[i])
				return 0;
		return 1;
	}else
		return 0;
}

Testi Consigliati:

Il linguaggio C. Principi di programmazione e manuale di riferimento. Ediz. MyLab. Con Contenuto digitale per download e accesso on line
C guida alla programmazione: Conoscere lo standard C11 dalle basi del linguaggio alle direttive del preprocessore (Programmare con C Vol. 1)
Programmazione in C

torna



Copyright © 2004-2024 thecsea.it (Claudio Cardinale - [email protected])! Tutti i diritti riservati. - contattaci