Chiarimenti parte di codice - while

di il
16 risposte

Chiarimenti parte di codice - while

Ciao a tutti,

Scusate la domanda banale per molti, ma non riesco a capire perché funziona correttamente.
il ciclo while non avendo le parentesi graffe dovrebbe eseguire solo l'istruzione i++
In realtà quando mando in esecuzione esegue anche le istruzioni if e else.
Io da codice mi sarei aspettato che if lo avrebbe eseguito solo a fine ciclo con i=TANTI-2

.......
i=0;
while (valore!=vett01 && i<DIM-1) i++;
if (a%valore==0)
cout<<" valore trovato in : "<<i;
else
cout<<"valore non presente nel vettore";

.......


Grazie in anticipo per i chiarimenti

16 Risposte

  • Re: Chiarimenti parte di codice - while

    Usa i tag CODE altrimenti ti mangi lo [ i ]
    Le istruzioni sono eseguite quando esci dal while ovviamente
  • Re: Chiarimenti parte di codice - while

    mi sarei aspettato che
    E infatti è così, lo esegue a fine ciclo.
  • Re: Chiarimenti parte di codice - while

    Prima di tutto grazie ad entrambi.
    Adesso mi spiego meglio, guardando il codice mi sarei aspettato che se il vettore avesse dimensione ad es. 5, DIM-1=4 quindi il valore di i al termine del ciclo while sarebbe sempre stato comunque 3.
    Quindi al termine del ciclo dopo che il valore di i calcolato è 3, il programma esegue la riga corrispondente all'if (tra l'altro scusate, mi sono reso conto di alcuni errori nel riportare il codice ) , adesso lo riporto tutto e corretto con il copia e incolla.

    Se eseguite il codice e cercate un numero di quelli all'interno del vettore, il programma calcola correttamente l'indice in cui si trova il numero....

    Il programma è semplice, ma mi ha messo in crisi!!! Grazie ancora per il vostro supporto. Tra parentesi per comportarsi come si comporta mi sarei aspettato tutte le istruzioni dopo il while racchiuse da { }, ma sembra che siano inutili, perché funziona anche senza.....

    _________________________
    #include<iostream>
    using namespace std;

    main () {
    const int DIM=5;
    int vett01[5]={3,6,8,10,12};
    int i, valore;
    cout<<"\nil vettore inserito e\': ";
    for (int h=0;h<DIM;h++) cout<<vett01[h]<<" ";
    cout<<"\nQuale valore dobbiamo cercare?: ";
    cin>>valore;

    i=0;
    while (valore!=vett01 && i<DIM-1) i++;
    if (vett01%valore==0)
    cout<<" valore trovato in : "<<i;
    else
    cout<<"valore non presente nel vettore";

    }
  • Re: Chiarimenti parte di codice - while

    Utilizza i tag code per il codice già ti è stato detto ...
  • Re: Chiarimenti parte di codice - while

    Scusate ma non ho capito cosa dovrei fare.
    Usare i tag code, cioè?
  • Re: Chiarimenti parte di codice - while

    Usa il pulsante < / >
    
    #include<iostream>
    using namespace std;
    
    main () {
    const int DIM=5;
    int vett01[5]={3,6,8,10,12};
    int i, valore;
    cout<<"\nil vettore inserito e\': ";
    for (int h=0;h<DIM;h++) cout<<vett01[h]<<" ";
    cout<<"\nQuale valore dobbiamo cercare?: ";
    cin>>valore;
    
    i=0;
    while (valore!=vett01[i] && i<DIM-1) i++;
    if (vett01[i]%valore==0)
    cout<<" valore trovato in : "<<i;
    else
    cout<<"valore non presente nel vettore";
    	
    }
    
  • Re: Chiarimenti parte di codice - while

    Se valore è 3, allora valore!=vett01[ 0 ] è una condizione falsa, quindi esci subito dal while e i++ non viene eseguita - i rimane a zero. Perché mai poi usare un'uguaglianza modulare alla riga dopo?
  • Re: Chiarimenti parte di codice - while

    In effetti non ho capito perché usi il modulo % nella If sin dal primo post...
  • Re: Chiarimenti parte di codice - while

    Grazie dei chiarimenti.
    Ripeto giusto per capire se mi è tutto chiaro.

    1) quando scrivo del codice nei post devo utilizzare </> all'inizio e alla fine del codice (dopo faccio una prova);

    2) nella condizione del ciclo while mi sono "fumato" l'indice del vettore (caspita è vero!! generalmente non faccio queste banalità ...) dove scrivere vett01. Grazie non me ne ero accorto.

    3) però correggendo anche il codice scritto da me, ovvero inserendo correttamente, come mi avete detto, e cioè while (valore!=vett01 && i<DIM-1) il programma funziona correttamente...ovvero mi restituisce il valore della posizione all'interno del vettore (il valore della "i" in questo caso).
    A me sembra strano che funzioni correttamente perché al termine del ciclo abbiamo i=4, quindi vett01[4]=12, quindi dovrebbe essere sempre così: "if(12%valore==0) ecc...
    Ma il bello è che se metto un valore da cercare nel vettore, il programma calcola correttamente l'indice e questo proprio io non lo capisco...come può calcolarsi correttamente l'indice del valore se quando esce dal while l'istruzione è sempre la stessa e cioè if(12%valore==0 per come detti al punto 2), dove valore è un numero inserito da tastiera?
    Pongo la domanda in modo diverso: secondo voi il codice è scritto correttamente per cercare la posizione di un numero all'interno di un vettore?
    Secondo me no dovrebbe essere:

    </>
    while (valore!=vett01 && i<DIM-1) {
    i++;
    if (vett01%valore==0)
    cout<<" valore trovato in : "<<i;
    else
    cout<<"valore non presente nel vettore";
    }
    </>

    In cosa sbaglio? Grazie per la pazienza!!
  • Re: Chiarimenti parte di codice - while

    oregon ha scritto:


    In effetti non ho capito perché usi il modulo % nella If sin dal primo post...
    in realtà è un codice che ho trovato in un pdf dove c'era la soluzione di un esercizio. Mi sto esercitando ed ho scaricato degli esercizi risolti.
    Ho trovato questo codice e mi ha spiazzato.... non riesco a capirlo....
  • Re: Chiarimenti parte di codice - while

    Non hai ancora capito come postare il codice...
  • Re: Chiarimenti parte di codice - while

    Weierstrass ha scritto:


    Se valore è 3, allora valore!=vett01[ 0 ] è una condizione falsa, quindi esci subito dal while e i++ non viene eseguita - i rimane a zero. Perché mai poi usare un'uguaglianza modulare alla riga dopo?

    Grazieee!!!
    ho capito, incrementa fino alla fine della dimensione oppure fino a quando non trova il valore ricercato.

    Le vacanze mi hanno arrugginito...
    Grazie mille ad entrambi

  • Re: Chiarimenti parte di codice - while

    oregon ha scritto:


    Non hai ancora capito come postare il codice...

    hai ragione....no..
  • Re: Chiarimenti parte di codice - while

    Probabilmente dove mettere la / senza le parentesi <>
    Comunque grazie mille!
Devi accedere o registrarti per scrivere nel forum
16 risposte