Advertisement
Loacker96

Untitled

Mar 21st, 2018
3,449
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include<iostream>
  2. using namespace std;
  3.  
  4.  
  5. //step==8 elementi da saltare per arrivare a riga dopo della colonna j (j=0...8); n indica il numero di righe con elementi (anche degli strati sucessivi)
  6. int colonna(int X[],int n, int step);
  7. int colonna (int* A, int n, int step)
  8. {
  9.     int somma=0;
  10.    
  11.     for (int i=0; i<n; i++ )
  12.        somma+=A[i*step];
  13.    
  14.    return somma;
  15. }
  16. //dobbiamo ritornare la somma per la colonna j
  17.  
  18. //PRE=(cin contiene n_ele, 0<n_ele<=400, seguito da n_ele interi qualsiasi)
  19. main()
  20. {
  21.  int A[10][5][8], *p=A[0][0];
  22.  int n_ele;
  23.  cin>>n_ele;
  24.   for(int i=0; i<n_ele; i=i+1)
  25.    cin>>p[i];
  26.  
  27.   cout<<"start"<<endl;
  28.  
  29.  int bestvalue=0, bestfetta=-1;
  30.  
  31.  // num_strato*40+num_riga*8+ num_colonna<n_ele
  32.        
  33.  
  34.  //calcolo strati pieni, righe piene e colonne piene
  35.  
  36.  int sp=n_ele/40;
  37.  int rp=(n_ele%40)/8;
  38.  int cp=(n_ele%40)%8;
  39.  
  40.  // per ogni colonna calcolo la somma e metto in bestvalue; se i>=n_ele vuol dire che che la prima riga del primo strato non è piena
  41.   // La somma sarà data quindi dal singolo elemente fintanto che i<n_ele
  42.  
  43.  for (int i=0; i<8 && i<n_ele; i++)
  44.  {
  45.  
  46.  //righe contiene il numero totale delle righe piene di tutti gli strati + eventualmente una riga in più se c'è un elemento nella riga mezzapiena (la sucessiva)
  47.    int righe=sp*5+rp, somma=0;
  48.        
  49.    if(cp && cp>i )
  50.         righe++;
  51.        
  52.     somma=colonna(A[0][0]+i, righe, 8);
  53.    
  54.     if(!bestvalue)
  55.     {
  56.         bestvalue=somma;
  57.         bestfetta=i;
  58.     }
  59.        
  60.     else
  61.     if(bestvalue<=somma)
  62.    {
  63.        bestvalue=somma;
  64.        bestfetta=i;
  65.    }
  66.    
  67.  }
  68.    
  69.  cout<<"V-fetta massima= "<<bestfetta<<" con somma= "<<bestvalue<<endl;
  70.  cout<<"end"<<endl;
  71. }
  72. //POST=(stampa l'indice della V-fetta a somma massima seguito dalla sua somma e in caso di parità, stampa l'indice massimo)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement