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

01/*
02CLAUDIO CARIDNALE 3AI
03Verificare 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.
04Es di quadrato magico.
058 1 6
063 5 7
074 9 2
08Usare una matrice globale.
09Acquisisci: funzione che carica la matrice dato R.
10Verifica: dato R, funzione che verifica se la matrice e' un quadrato magico, ritorna 1 se vero, 0 se falso.
11*/
12#include<stdio.h>
13#define MAX 1000
14void acquisisci(void);
15int verifica(void);
16int mat[MAX][MAX];
17int r;
18 
19int main(){
20    //funzioni
21     
22    //acquisizione
23    acquisisci();
24     
25    //verifica
26    if(verifica())
27        printf("la matrice e` un quadrato magico\n");
28    else
29        printf("la matrice non e` un quadrato magico\n");
30}
31 
32void acquisisci(void){
33    //dichiarazioni
34    int i,j;   
35     
36    //acquisizione di r
37    do{
38        printf("inserire r : ");
39        scanf("%d",&r);
40    }while(r<1 || r>=MAX);
41     
42    //acquisizione dati
43    for(i=0;i<r;i++)
44        for(j=0;j<r;j++){
45            printf("inserire il valore alla riga %d ed alla colonna %d : ",i+1,j+1);
46            scanf("%d",&mat[i][j]);
47        }
48}
49 
50int verifica(void){
51    //dichiarazioni
52    int i,j,sommap=0,sommas=0,sommar[MAX],sommac[MAX];
53     
54    //inizializzaizoni
55     
56    //inizializzaizone vettore somma righe
57    for(i=0;i<r;i++)
58        sommar[i] = 0;
59     
60    //inizializzaizone vettore somma colonne
61    for(i=0;i<r;i++)
62        sommac[i] = 0;
63     
64    //somme
65     
66    //somma diagonale princiaple
67    for(i=0;i<r;i++)
68        sommap += mat[i][i];
69     
70    //somma diagonale secondaria
71    for(i=0,j=r-1;i<r;i++,j--)
72        sommas += mat[i][j];
73     
74    //somma righe
75    for(i=0;i<r;i++)
76        for(j=0;j<r;j++)
77            sommar[i] += mat[i][j];
78     
79    //somma colonne
80    for(j=0;j<r;j++)
81        for(i=0;i<r;i++)
82            sommac[j] += mat[i][j];
83     
84    //verifica
85    if(sommap == sommas){
86        //verifica somma righe
87        for(i=0;i<r;i++)
88            if(sommap != sommar[i])
89                return 0;
90         
91        //verifica somma colonne
92        for(i=0;i<r;i++)
93            if(sommap != sommac[i])
94                return 0;
95        return 1;
96    }else
97        return 0;
98}

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-2025 thecsea.it (Claudio Cardinale - cardi@thecsea.it)! Tutti i diritti riservati. - contattaci