Visualizzazione dei risultati da 1 a 7 su 7

Discussione: [C++] Ciclo di While

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    17

    [C++] Ciclo di While

    Salve a tutti, sono uno studente di ingegneria che sta seguendo un corso di programmazione in C++,premettendo che per me è una materia nuova e il programma usato è Dev
    Il primo programma studiato con il prof è un semplice programma per il calcolo del massimo con 3 elementi.ieri il prof ci ha spiegato il ciclo di while e gli array e ho provato a scrivere lo stesso programma usando queste due nazioni.
    Il programma(scritto sotto) mi da errore nella riga " if(a[i+1]>max)" .
    Mi sapreste dire che cosa ho sbagliato???

    codice:
    #include <iostream>
    #include <stdlib.h>
    
    using namespace std;
    
    int main()
    {
        int a[100];
        int n;
        int i;
        cout<<"quanti valori vuoi inserire?"<<endl;
        cin>>n;
        i=0;
        while(i<n){
            cout<<"inserisci valore numero"<<i+1<<endl;
            cin>>a[i];
            i=i+1;
        }
        i=0;
       while (i<n){ 
            max=a[i]
            if(a[i+1]>max)
            {
                max=a[i+1];
                i=i+1;
            }
           
        }
        cout>>"il risultato è"<<max<<endl;            
      
      system("PAUSE");	
      return 0;
    }

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Re: [C++] Ciclo di While

    Originariamente inviato da Sophos90
    Il programma(scritto sotto) mi da errore nella riga " if(a[i+1]>max)" .
    Mi sapreste dire che cosa ho sbagliato???
    Che errore ti da?

    ps: indenta il codice e usa il tag CODE
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Qui

    max=a[i]

    manca un ;

    e manca all'inizio un

    int max;
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    17
    Originariamente inviato da oregon
    Qui

    max=a[i]

    manca un ;

    e manca all'inizio un

    int max;
    bene, va tutto ok,però i risultati sono sballati!!!

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    45
    la variabile i viene incrementata solo se viene eseguito il codice all'interno della if
    ma se a[i+1] non e' maggiore di max entra in un loop infinito.
    codice:
    while (i<n){ 
            max=a[i]
            if(a[i+1]>max)
            {
                max=a[i+1];
                i=i+1;
            }

  6. #6
    Credo che l'errore sia un errore di base di interpretazione sul costrutto degli array:

    sappiamo che un array va da indice 0 ad indice N.

    Nel ciclo while tu scrivi:

    codice:
    while (i < n){ 
            max = a[i]
            if(a[i+1] > max)
            {
                max = a[i+1];
                i = i + 1;
            }
    }
    che oltre al carattere di ; c'è anche l'errore che si verifica al raggiungimento dell'ultimo indice dell'array da controllare.

    Infatti: se hai un array di 3 valori (quindi n=3 ed indici da 0 a 2), l'ultimo ciclo dovrebbe controllare questo:

    codice:
    while (i < n){ 
            max = a[2]
            if(a[2+1] > max)
            {
                max = a[2+1];
                i = 2 + 1;
            }
    }
    Noterai che il programma va a cercare un indice inesistente.

    prova questo codice al posto del tuo ciclo while

    codice:
    max = a[0];
    i = 1;
    while (i < n){
    
            if(a[i] > max)
            {
                max = a[i];
            }
    
            i++;
    }
    Inoltre ricorda di inizializzare e definire max come variabile

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    17
    OKOK finalmente funziona,giustamente non potevo scrivere così perchè si creava in questo modo un loop infinito e il risultato che mi dava diventava insensato

    while (i<n){
    max=a[i]
    if(a[i+1]>max)
    {
    max=a[i+1];
    i=i+1;
    }
    Grazie mille!! siete stati gentilissimi e chiarissimi!! penso che mi rifarò vivo XD

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.