giulia18395 ha scritto:


Quando trovo un m che non sarà più > prodotto[/size]
In realtà il seguente codice da te postato
prodotto = x[0];
   for (i = 1; i < 500; i++)
   {
      do{
         cin >> m;
         if (m>prodotto)
         {
            x[i] = m;
            prodotto = prodotto*m;
         }
      } while (m <= prodotto);
   }
fa il contrario... in quanto continua a leggere valori finché il vettore x non è pieno. Sinceramente anche io credo che la strada giusta sia questa, visto che poi x verrà passato alla funzione estraindice().
Detto ciò il codice potrebbe essere semplificato nel seguente modo:
int x[500];
    cin >> x[0];
    int prodotto = x[0];
    for(int i = 1; i < 500; ++i)
    {
        while(true)
        {
            cin >> x[i];
            if(x[i] > prodotto)
            {
                prodotto *= x[i];
                break;
            }
        }
    }
In ogni caso spero tu abbia compreso tutto il discorso relativo al rischio di overflow!