Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - espressione con for che non comprendo
Forum - C/C++ - espressione con for che non comprendo

Avatar
ciao888 (Normal User)
Pro


Messaggi: 69
Iscritto: 14/10/2010

Segnala al moderatore
Postato alle 22:25
Venerdì, 15/10/2010
Questo topic è stato chiuso dal moderatore

avevo già fatto una domanda del genere ma penso di aver sbagliato la formulazione,è un programma che ordina i numeri di un vettore in ordine crescente e compare questa espressione:
for (int i= n; i < 0; i--)
for (int j=0; j<i; j++)
if (a[j] > a[j+1]) scambia (a[j], a[j+1]);
}
sinceramente non capisco proprio che significhi scrivere i < 0 quando invece è impossibile trovarsi davanti a una situazione del genere,grazie

PM
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Up
0
Down
V
Segnala al moderatore
Postato alle 22:52
Venerdì, 15/10/2010

allora, come prima cosa devi racchiudere il codice tra tag code, altrimenti non si capisce nulla. come seconda cosa quel ciclo è effettivamente sbagliato, avrebbe dovuto essere i > 0.

il for può essere espanso in while nel seguente modo:

Codice sorgente - presumibilmente Plain Text

  1. for(init;check;incr) body;
  2.  
  3. init;
  4. while(check) {
  5.    body;
  6.    incr;
  7. }



Ultima modifica effettuata da HeDo il 15/10/2010 alle 22:57
PM
Avatar
ciao888 (Normal User)
Pro


Messaggi: 69
Iscritto: 14/10/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 14:51
Sabato, 16/10/2010
void stampare (float [ ] , const int);
void ordinare (float [ ] , const int);
void main ()
{
float a[10]= {25.5,34.1,27.6,15.24,3.27,5.14,6.21,7.57,4.61,5.5};
stampare (a, 10);
ordinare (a, 10);
stampare(a, 10);
}
void stampare (float a[ ] , const int n)
{
for (int i=0; i<n ;i++) {
cout << a << ", ";
if (( i + 1) % 16 == 0) cout << endl;
}
cout << endl;
}
void scambia (float& x, float& e);
void ordinare (float a[ ], const int n)
{
for (int i= n; i < 0; i--)
for (int j=0; j<i; j++)
   if (a[j] > a[j+1]) scambia (a[j], a[j+1]);
}
questo è il programma completo,ve lo scrivo tutto affinchè possiate capire meglio,quindi quel i<0 è sbagliato?dovrebbe essere i>0?poi sinceramente non capisco quel a[j] se invece prima il vettore lo chiamano a,grazie in anticipo a chi mi aiuterà a capire

PM
Avatar
ciao888 (Normal User)
Pro


Messaggi: 69
Iscritto: 14/10/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 14:54
Sabato, 16/10/2010
volevo dire che non capisco quel a[j] se invece prima lo chiamano a,avevo scritto male:)

PM
Avatar
breath (Normal User)
Newbie


Messaggi: 9
Iscritto: 06/02/2009

Up
0
Down
V
Segnala al moderatore
Postato alle 21:22
Lunedì, 18/10/2010
Codice sorgente - presumibilmente C/C++

  1. float a[10]= {25.5,34.1,27.6,15.24,3.27,5.14,6.21,7.57,4.61,5.5};



qui hai inizializzato un array di 10 numeri a virgola mobile a cui hai assegnato ogni valore

a[j]  richiama l'array nella posizione j

per esempio, se j = 1 allora  è come dire a[1] , che corrisponde alla seconda posizione dell'array ,quindi a 34.1 .

PM
Avatar
a_butta (Member)
Expert


Messaggi: 578
Iscritto: 16/03/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 23:10
Lunedì, 18/10/2010
Il codice va scritto dentro i tag CODE!
Le regole, se son tali devono essere PER TUTTI!

PM
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Up
0
Down
V
Segnala al moderatore
Postato alle 23:44
Lunedì, 18/10/2010
Questo topic è in violazione di una o più norme del regolamento: http://www.pierotofy.it/pages/extras/forum/9/3839-regolame ... .
    
Dopo averlo letto riapri un nuovo topic assicurandoti di aver rispettato le regole. Grazie per la tua pazienza.

PM