Matrice numeri pseudocasuali visualizzare il massimo ed il secondo massimo

di il
7 risposte

Matrice numeri pseudocasuali visualizzare il massimo ed il secondo massimo

#include<iostream>
#include<ctime>
#include<cstdlib>
#define dim 100
using namespace std;
int main()
{
    int i,j,max,max2,v[dim][dim],temp=0;
    srand(time(NULL));
    for(i=0;i<dim;i++)
    {
        for(j=0;j<dim;j++)
        {
            v[i][j]=rand()%101;
            cout<<" "<<v[i][j];
        }
        cout<<endl;
    }
    max=v[0][0];
    max2=v[0][0];
    for(i=0;i<dim;i++)
    {

        for(j=0;j<dim;j++)
        {
            if(max2<v[i][j])
            {
                temp=v[i][j];
                v[i][j]=max2;
                max2=temp;


            }
            if(max<max2)
            {
                temp=max2;
                max2=max;
                max=temp;

            }

            if(max==max2)
            {
                max2=max-v[i][j];

            }
        }
    }
   cout<<"il massimo e' "<<max<<endl;
        cout<<"il secondo massimo e' "<<max2;




}

7 Risposte

  • Re: Matrice numeri pseudocasuali visualizzare il massimo ed il secondo massimo

    A parte il fatto che il codice va formattato utilizzando il pulsante "</>", qual'è la domanda?
  • Re: Matrice numeri pseudocasuali visualizzare il massimo ed il secondo massimo

    Ok formattato spero risolto. Grazie.
    La mia domanda :
    1 Il codice potrebbe andare bene cosi? Si potrebbe fare in modo più semplice.
    2 if(max2==max)
    {
    max2=max-v[j]; per evitare la ripetizione del secondo massimo
    }
    Tutto questo che ho fatto HA SENSO!?!?! ( o semplicemte fortuna )
  • Re: Matrice numeri pseudocasuali visualizzare il massimo ed il secondo massimo

    Ciao, il fodice non lo hai formattato.
    Vai in modifica, elimina la riga vuota formattata, seleziona il codice e premi il pulsante di formattazione.
    Devi avere i TAG BBCODE prima e dopo la selezione da formattare
  • Re: Matrice numeri pseudocasuali visualizzare il massimo ed il secondo massimo

    Ok scusa , ora va meglio.
  • Re: Matrice numeri pseudocasuali visualizzare il massimo ed il secondo massimo

    #include <iostream>
    #include <ctime>
    #include <cstdlib>
    
    using namespace std;
    
    const int N = 5;
    
    int main()
    {
        srand(time(0));
        int v[N][N];
        for(int i = 0; i < N; ++i)
        {
            for(int j = 0; j < N; ++j)
            {
                v[i][j] = rand() % 10;
                cout << v[i][j] << "\t";
            }
            cout << endl;
        }
        int *p = v[0];
        int max1 = 0;
        int max2 = 0;
        for(int i = 0; i < N * N; ++i)
        {
            if(max1 < p[i])
            {
                max1 = p[i];
            }
            if(max2 < p[i] && p[i] < max1)
            {
                max2 = p[i];
            }
        }
        cout << endl << "max1: " << max1;
        cout << endl << "max2: " << max2 << endl;
    }
    Come avevi fatto tu non andava bene.
  • Re: Matrice numeri pseudocasuali visualizzare il massimo ed il secondo massimo

    Ho visto il codice di nippolo delle 19.05, secondo me c’è un problema

    Direi che ha un punto debole, quando il secondo elemento viene a trovarsi prima dell’elemento massimo.

    Per capirci, faccio un esempio rapido
    V[0][0]=100
    V[0][1]=101

    Diciamo che non funziona ( se ho visto bene ) se quando il ciclo passa su quello che dovrebbe essere il secondo numero in quel momento quel valore è assegnato al max.
  • Re: Matrice numeri pseudocasuali visualizzare il massimo ed il secondo massimo

    dobby ha scritto:


    Ho visto il codice di nippolo delle 19.05, secondo me c’è un problema
    Hai ragione, non ci avevo riflettuto più di tanto.
    Così penso dovrebbe andar bene:
    #include <iostream>
    #include <cstdlib>
    #include <ctime>
    
    using namespace std;
    
    const int N = 10;
    
    int main()
    {
        srand(time(0));
        int v[N];
        int max1 = -1;
        int max2 = -1;
        for(int i = 0; i < N; ++i)
        {
            cout << (v[i] = rand() % 101) << " ";
        }
        for(int i = 0; i < N; ++i)
        {
            if(max1 < v[i])
            {
                max2 = max1;
                max1 = v[i];
            }
            else if(max2 < v[i] && max1 != v[i])
            {
                max2 = v[i];
            }
        }
        if(max2 == -1)
        {
            max2 = *v;
        }
        cout << endl << endl << "max1: " << max1;
        cout << endl << "max2: " << max2 << endl;
    }
    Sei d'accordo?
Devi accedere o registrarti per scrivere nel forum
7 risposte