Accedi

Una matrice 5x5

PROBLEMA

Una matrice 5×5 rappresenta il numero di punti realizzati da dei giocatori di basket in un piccolo torneo: in ogni riga c’è il 
Totale dei punti realizzati da un giocatore in ogni partita; in ogni colonna ci sono I punti realizzati dai giocatori in una specifica partita. 
Stampare il numero di punti realizzati nella partita in cui sono stati fatti più punti dal giocatore che nel totale delle partite ha realizzato più punti. 
(per semplicità si consideri che non ci siano giocatori con lo stesso numero di punti o partite con lo stesso numero di punti totali).


CODICE SORGENTE

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define RIGHE 5
#define COLONNE 5
#define PUNTI_MASSIMI_NBA 101

int main(int argc, char *argv[]){
 //sezione dichiarativa
 int i, j, k, y, t, u;
 int temp=0, temp2, riga_massima, colonna_massima, menu;
 int a[RIGHE][COLONNE];
 srand(time(NULL));
 int b[COLONNE];
 int ok=1;
 int somma_riga[COLONNE]={0};
 //menu
 do{
  system("cls");
  printf("1. Inserimento Casuale\n2. Inserimento Manuale\n3. Esci\nInserire la preferenza\n>");
  fflush(stdin);
  menu=getch();
  system("cls");
  switch(menu){
   case '1': //scelta della generazione casuale
    //generazione casuale di numeri tutti diversi
    for(k=0;k<RIGHE;k++){
     for(i=0;i<COLONNE;i++) {
      b[i]=rand()%PUNTI_MASSIMI_NBA;
      for(j=0;j<i;j++) {
      if(b[i]==b[j]) {
       i--;
       }
      }
     }
     //assegnazione numeri casuale alla riga della tabella
     for(y=0;y<COLONNE;y++){
      a[k][y]=b[y];
     }
     //somma della riga
     for(y=0;y<COLONNE;y++){
      somma_riga[k]=somma_riga[k]+a[k][y];
     }
     //controllo della presenza di un altra riga con la sessa somma
     for(i=0;i<k;i++){
      for(y=0;y<i;y++){
       if(somma_riga[i]==somma_riga[y]){
        k--;
       }
      }
     }
    }
    //visualizzazione della tabella 
    printf("\xda\xc4\xc4\xc4\xc4\xc4\xc2\xc4\xc4\xc4\xc4\xc4\xc2\xc4\xc4\xc4\xc4\xc4\xc2\xc4\xc4\xc4\xc4\xc4\xc2\xc4\xc4\xc4\xc4\xc4\xc2\xc4\xc4\xc4\xc4\xc4\xbf\n");
    printf("\xb3  x  \xb3  1  \xb3  2  \xb3  3  \xb3  4  \xb3  5  \xb3\n");
    printf("\xc3\xc4\xc4\xc4\xc4\xc4\xc5\xc4\xc4\xc4\xc4\xc4\xc5\xc4\xc4\xc4\xc4\xc4\xc5\xc4\xc4\xc4\xc4\xc4\xc5\xc4\xc4\xc4\xc4\xc4\xc5\xc4\xc4\xc4\xc4\xc4\xb4\n");
    for(k=0;k<RIGHE;k++){
     printf("\xb3  %i  \xb3", i+1);
     for(y=0;y<COLONNE;y++){
      if(a[k][y]<10)
       printf("  %i  \xb3", a[k][y]);
      else if(a[k][y]<100)
       printf(" %i  \xb3", a[k][y]);
      else
       printf(" %i \xb3", a[k][y]);
     }
     if (k!=4)
      printf("\n\xc3\xc4\xc4\xc4\xc4\xc4\xc5\xc4\xc4\xc4\xc4\xc4\xc5\xc4\xc4\xc4\xc4\xc4\xc5\xc4\xc4\xc4\xc4\xc4\xc5\xc4\xc4\xc4\xc4\xc4\xc5\xc4\xc4\xc4\xc4\xc4\xb4\n");
     else
      printf("\n\xc0\xc4\xc4\xc4\xc4\xc4\xc1\xc4\xc4\xc4\xc4\xc4\xc1\xc4\xc4\xc4\xc4\xc4\xc1\xc4\xc4\xc4\xc4\xc4\xc1\xc4\xc4\xc4\xc4\xc4\xc1\xc4\xc4\xc4\xc4\xc4\xd9\n");
    }
    //ricerca del punteggio richiesto dall traccia
    for(i=0;i<RIGHE;i++){
     temp=0;
     for(j=0;j<COLONNE;j++){
      temp=temp+a[i][j];
     }
     if (i==0){
      riga_massima=i;
      temp2=temp;
     }
     else if (temp>temp2){
      temp2=temp;
      riga_massima=i;
     }
    }
    for(j=0;j<COLONNE;j++){
     if(j==0){
      colonna_massima=j;
      temp=a[riga_massima][j];
     }
     else if(temp<a[riga_massima][j]){
      colonna_massima=j;
      temp=a[riga_massima][j];
     }
    }
    //visualizzazione del valore richiesto dalla traccia
    printf("\nPunto piu alto realizzato nelle partite giocate dal giocatore con il maggiore punteggio totale\n\n");  
    printf("\xda\xc4\xc4\xc4\xc4\xc4\xc2\xc4\xc4\xc4\xc4\xc4\xbf\n");
    printf("\xb3  x  \xb3  %i  \xb3\n", colonna_massima+1);
    printf("\xc3\xc4\xc4\xc4\xc4\xc4\xc5\xc4\xc4\xc4\xc4\xc4\xb4\n");
    printf("\xb3  %i  \xb3", riga_massima+1);
     if(a[riga_massima][colonna_massima]<10)
      printf("  %i  \xb3", a[riga_massima][colonna_massima]);
     else if(a[riga_massima][colonna_massima]<100)
      printf(" %i  \xb3", a[riga_massima][colonna_massima]);
     else
      printf(" %i \xb3", a[riga_massima][colonna_massima]);
    printf("\n\xc0\xc4\xc4\xc4\xc4\xc4\xc1\xc4\xc4\xc4\xc4\xc4\xd9\n");
    printf("\nPreme un tasto per tornare al menu");
    getch();
    break;
   case '2':
    //rimpimento con tutti zero la tabella
    for(i=0;i<RIGHE;i++){
     for(j=0;j<COLONNE;j++){
      a[i][j]=0;
     }
    }
    //visualizzazione della tabella
    for(i=0;i<RIGHE;i++){
     for(j=0;j<COLONNE;j++){
      system("cls");
      printf("\xda\xc4\xc4\xc4\xc4\xc4\xc2\xc4\xc4\xc4\xc4\xc4\xc2\xc4\xc4\xc4\xc4\xc4\xc2\xc4\xc4\xc4\xc4\xc4\xc2\xc4\xc4\xc4\xc4\xc4\xc2\xc4\xc4\xc4\xc4\xc4\xbf\n");
      printf("\xb3  x  \xb3  1  \xb3  2  \xb3  3  \xb3  4  \xb3  5  \xb3\n", a[i][j]);
      printf("\xc3\xc4\xc4\xc4\xc4\xc4\xc5\xc4\xc4\xc4\xc4\xc4\xc5\xc4\xc4\xc4\xc4\xc4\xc5\xc4\xc4\xc4\xc4\xc4\xc5\xc4\xc4\xc4\xc4\xc4\xc5\xc4\xc4\xc4\xc4\xc4\xb4\n");
      for(k=0;k<RIGHE;k++){
       printf("\xb3  %i  \xb3", i+1);
       for(y=0;y<COLONNE;y++){
        if(a[k][y]<10)
         printf("  %i  \xb3", a[k][y]);
        else if(a[k][y]<100)
         printf(" %i  \xb3", a[k][y]);
        else
         printf(" %i \xb3", a[k][y]);
       }
       if (k!=4)
        printf("\n\xc3\xc4\xc4\xc4\xc4\xc4\xc5\xc4\xc4\xc4\xc4\xc4\xc5\xc4\xc4\xc4\xc4\xc4\xc5\xc4\xc4\xc4\xc4\xc4\xc5\xc4\xc4\xc4\xc4\xc4\xc5\xc4\xc4\xc4\xc4\xc4\xb4\n");
       else
        printf("\n\xc0\xc4\xc4\xc4\xc4\xc4\xc1\xc4\xc4\xc4\xc4\xc4\xc1\xc4\xc4\xc4\xc4\xc4\xc1\xc4\xc4\xc4\xc4\xc4\xc1\xc4\xc4\xc4\xc4\xc4\xc1\xc4\xc4\xc4\xc4\xc4\xd9\n");
      }
      //sezione dell'input del punteggio
      printf("Inserire il punteggio (%i,%i) e premere ENTER\n>", i+1, j+1);
      scanf("%i", &a[i][j]);
     }
    }
    //ricerca del punteggio richiesto dall traccia
    for(i=0;i<RIGHE;i++){
     temp=0;
     for(j=0;j<COLONNE;j++){
      temp=temp+a[i][j];
     }
     if (i==0){
      riga_massima=i;
      temp2=temp;
     }
     else if (temp>temp2){
      temp2=temp;
      riga_massima=i;
     }
    }
    for(j=0;j<COLONNE;j++){
     if(j==0){
      colonna_massima=j;
      temp=a[riga_massima][j];
     }
     else if(temp<a[riga_massima][j]){
      colonna_massima=j;
      temp=a[riga_massima][j];
     }
    }
    //visualizzazione a video della tabella finale
    system("cls");
    printf("\xda\xc4\xc4\xc4\xc4\xc4\xc2\xc4\xc4\xc4\xc4\xc4\xc2\xc4\xc4\xc4\xc4\xc4\xc2\xc4\xc4\xc4\xc4\xc4\xc2\xc4\xc4\xc4\xc4\xc4\xc2\xc4\xc4\xc4\xc4\xc4\xbf\n");
    printf("\xb3  x  \xb3  1  \xb3  2  \xb3  3  \xb3  4  \xb3  5  \xb3\n");
    printf("\xc3\xc4\xc4\xc4\xc4\xc4\xc5\xc4\xc4\xc4\xc4\xc4\xc5\xc4\xc4\xc4\xc4\xc4\xc5\xc4\xc4\xc4\xc4\xc4\xc5\xc4\xc4\xc4\xc4\xc4\xc5\xc4\xc4\xc4\xc4\xc4\xb4\n");
    for(k=0;k<RIGHE;k++){
     printf("\xb3  %i  \xb3", i+1);
     for(y=0;y<COLONNE;y++){
      if(a[k][y]<10)
       printf("  %i  \xb3", a[k][y]);
      else if(a[k][y]<100)
       printf(" %i  \xb3", a[k][y]);
      else
       printf(" %i \xb3", a[k][y]);
     }
     if (k!=4)
      printf("\n\xc3\xc4\xc4\xc4\xc4\xc4\xc5\xc4\xc4\xc4\xc4\xc4\xc5\xc4\xc4\xc4\xc4\xc4\xc5\xc4\xc4\xc4\xc4\xc4\xc5\xc4\xc4\xc4\xc4\xc4\xc5\xc4\xc4\xc4\xc4\xc4\xb4\n");
     else
      printf("\n\xc0\xc4\xc4\xc4\xc4\xc4\xc1\xc4\xc4\xc4\xc4\xc4\xc1\xc4\xc4\xc4\xc4\xc4\xc1\xc4\xc4\xc4\xc4\xc4\xc1\xc4\xc4\xc4\xc4\xc4\xc1\xc4\xc4\xc4\xc4\xc4\xd9\n");
    }
    //visualizzazione del punteggio richiesto dalla traccia
    printf("\nPunto piu alto realizzato nelle partite giocate dal giocatore con il maggiore punteggio totale\n\n");  
    printf("\xda\xc4\xc4\xc4\xc4\xc4\xc2\xc4\xc4\xc4\xc4\xc4\xbf\n");
    printf("\xb3  x  \xb3  %i  \xb3\n", colonna_massima+1);
    printf("\xc3\xc4\xc4\xc4\xc4\xc4\xc5\xc4\xc4\xc4\xc4\xc4\xb4\n");
    
    printf("\xb3  %i  \xb3", riga_massima+1);
    
     if(a[riga_massima][colonna_massima]<10)
      printf("  %i  \xb3", a[riga_massima][colonna_massima]);
     else if(a[riga_massima][colonna_massima]<100)
      printf(" %i  \xb3", a[riga_massima][colonna_massima]);
     else
      printf(" %i \xb3", a[riga_massima][colonna_massima]);
    printf("\n\xc0\xc4\xc4\xc4\xc4\xc4\xc1\xc4\xc4\xc4\xc4\xc4\xd9\n");
    printf("\nPreme un tasto per tornare al menu");
    getch();
    break;
   case '3':
    system("cls");
    for (i=0;i<5;i++){
     printf("Grazie di aver utilizzato il programma\n\nvisita la mia pagina web\n\n");
     sleep(1);
    } 
    break;
   default:
    break;
  }
 }while(menu!='3');
 return 0;
}