123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- // ripasso matrici.cpp : Defines the entry point for the console application.
- //
- /*
- scrivere un programma che preveda un menù con le seguenti funzionalita:
- 1: caricamento random di una matrice n*n di interi
- 2: calcola la somma della diagonae principale e secondaria
- 3: letta in input il numero di riga e il numero di colonna calcola la differenza degli elementi sulla riga e gli elementi della colonna tot riga- totcolonna
- N.B. il programma deve usare funzioni oprocedure ai quali devo pasare i parametri che le funzioni possono modificare (puntatori).
- */
- #include "stdafx.h"
- #include <iostream>
- #include <time.h>
- #define NC 4
- #define NR 4
- using namespace std;
- void menù();
- void carica(int matr[][NC]);
- void somma(int matr[][NC], int *s, int*s1);
- void calcolo_differenza(int matr[][NC], int *dif, int r, int c);
- void visualizza(int matr[][NC]);
- int main()
- {
- menù();
- return 0;
- }
- void menù() {
- int scelta = 0;
- int matr[NR][NC];
- int sommad=0;
- int sommad2=0;
- int r;
- int c;
- int diff;
- carica(matr);
- do {
- system("cls");
- printf("menù\n");
- printf("0.esci\n");
- printf("1.somma diagonale pricipale\n");
- printf("2. calcolo colonna (punto3)\n");
- scanf_s("%d", &scelta, sizeof(int));
- switch (scelta) {
- case 0:
- printf("arrivederci e lasciate la mancia\n");
- system("pause");
- break;
- case 1:
- somma(matr, &sommad, &sommad2);
- visualizza(matr);
- printf("diagonale %d\n", sommad);
- printf("diagonale1 %d\n", sommad2);
- system("pause");
- break;
- case 2:
- printf("inserire la riga \n");
- scanf_s("%d", &r, sizeof(int));
- printf("inserire la colonna \n");
- scanf_s("%d", &c, sizeof(int));
- calcolo_differenza(matr, &diff, r, c);
- visualizza(matr);
- printf("la differenza è %d", diff);
- system("pause");
- break;
- default:
- printf("valore non valido\n");
- break;
- }
- } while (scelta != 0);
-
- }
- void visualizza(int matr[][NC]) {
- for (int i = 0; i < NR; i++) {
- for (int j = 0; j < NC; j++) {
- printf("%d ", matr[i][j]);
- }
- printf("\n");
- }
- }
- void carica(int matr[][NC]) {
- srand(time(NULL));
- for (int i = 0; i < NR; i++) {
- for (int j = 0; j < NC; j++) {
- matr[i][j] = 1 + rand() % (20+1);
- }
- }
- }
- void somma(int matr[][NC], int *s, int*s1) {
- for (int i = 0; i < NR; i++) {
- for (int j = 0; j < NC; j++) {
- if (i == j) {
- *s = matr[i][j]+matr[i][j];
- }
- if ((i+j)==NR) {
- *s1 =matr[i][j]+matr[i][j];
- }
- }
- }
- }
- void calcolo_differenza(int matr[][NC], int *dif, int r, int c) {
- int r1=0;
- int c1=0;
- for (int i = 0; i < NR; i++) {
- if (i == r) {
- for (int j = 0; j < NC; j++) {
- r1 += matr[i][j];
- }
- break;
- }
- }
- for (int g = 0; g < NC; g++) {
- if (g == c) {
- for (int f = 0; f < NR; f++) {
- c1 += matr[f][g];
- }
- break;
- }
- }
- printf("r1 %d\n", r1);
- printf("c1%d\n", c1);
- *dif = r1 - c1;
- }
|