Ciao a tutti, ho un problema con l'ennesimo esercizio universitario.
Il testo dell'esercizio è il seguente:
__________________________________________________ __________________________
Sia data una matrice quadrata di numeri interi positivi di dimensione pari a N(con N < 16).
Scrivere un programma C che:
1. Legga da tastiera la dimensione N della matrice;
2. Legga da tastiera gli NxN valori della matrice controllando che siano tutti numeri positivi;
3. Per ogni riga della matrice ne calcoli la somma degli elementi;
4. Raggruppi le righe la cui somma degli elementi è uguale producendo per ogni gruppo il seguente output:
Somma <valore della somma>: Stampa delle righe la cui somma degli elementi vale <valore della somma>
N.B. Ogni riga deve essere stampata racchiusa tra parentesi tonde e con gli elementi separati da uno spa-zio. Le varie righe devono essere separate da una virgola
Esempio:
Sia data la matrice
0 2 3 1
0 6 0 0
1 2 2 4
1 1 1 3
(N=4)
Il programma deve produrre il seguente output:
Somma 6: (0 2 3 1), (0 6 0 0), (1 1 1 3)
Somma 9: (1 2 2 4)
__________________________________________________ _________________________
La mia difficoltà, sta nel non capire come uscirne dal punto 4, ho provato diversi algoritmi e ognuno di essi ha grossi problemi, voi come suggerite?
Intanto posto il testo fatto fino al punto 3 (il punto 4 è stato fatto però senza controllo di somma uguale)
Grazie a tutti coloro che mi aiuteranno,codice:#include <stdio.h> #include <stdlib.h> #include <math.h> #include <string.h> int main() { int N,i,j=0; int temp=0; int condizione=0; //Inserimento in N della grandezza matrice quadrata do { printf("Inserisci la dimensione della matrice quadrata "); scanf("%d",&N); if(N<16) condizione=0; else { condizione=1; printf("Errore N, deve essere minore di 16 "); } }while(condizione==1); //Creazione matrice quadrata, azzeramento condizione, creazione vettore somme righe int matrice[N][N]; condizione=0; int vet[N]; for(i=0;i<N;i++) vet[i]=0; //Input matrice con controllo sui numeri positivi for(i=0;i<N;i++) { for(j=0;j<N;j++) { do { printf("[%d][%d]",i+1,j+1); scanf("%d",&matrice[i][j]); if(matrice[i][j]<0) { printf("Errore, i valori negativi non sono ammessi "); condizione=0; } else condizione=1; }while(condizione==0); } printf("\n"); } //Somma delle righe della matrice for(i=0;i<N;i++) { for(j=0;j<N;j++) { temp=temp+matrice[i][j]; vet[i]=temp; } temp=0; } //Stampa somme for(i=0;i<N;i++) printf("La somma della %d riga e' %d \n",i+1,vet[i]); //Stampa raggruppata di righe di matrice for(i=0;i<N;i++) { printf("Somma %d ( ",vet[i]); for(j=0;j<N;j++) { printf("%d ",matrice[i][j]); } printf(")"); printf("\n"); } system("pause"); }
auguroni!!
![]()

Rispondi quotando