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++ - Problema con ciclo for
Forum - C/C++ - Problema con ciclo for - Pagina 2

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
drewnik99 (Normal User)
Pro


Messaggi: 69
Iscritto: 28/03/2008

Segnala al moderatore
Postato alle 18:10
Giovedì, 24/11/2011
Se la lista collegata comprende solo una struttura, il ciclo funziona correttamente, mentre in caso ne contenesse di più, continuerebbe all'infinito.

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6379
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 18:12
Giovedì, 24/11/2011
Allora controlla il campo

n

dei vari elementi. L'ultimo deve essere NULL (in modo che la lista sia terminata correttamente e anche il ciclo termini).

In caso contrario, c'è un errore nell'inserimento.


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
drewnik99 (Normal User)
Pro


Messaggi: 69
Iscritto: 28/03/2008

Segnala al moderatore
Postato alle 22:13
Giovedì, 24/11/2011
Testo quotato

Postato originariamente da drewnik99:

Codice sorgente - presumibilmente Plain Text

  1. for(p = comps; p; p = p->n)
  2. {
  3.  s1 = ((((float)(25 - strlen(p->name))) + 0.5) / 2);
  4.  s2 = ((((float)(25 - strlen(p->name))) - 0.5) / 2);
  5.  s3 = ((((float)(52 - strlen(p->des))) + 0.5) / 2);
  6.  s4 = ((((float)(52 - strlen(p->des))) - 0.5) / 2) - 1;
  7.  fprintf(fw, "|  %09.9i  ", p->code);
  8.  fprintf(fw, "| %*s%.25s%*s ", s1, " ", p->name, s2, " ");
  9.  fprintf(fw, "| %*s%.50s%*s ", s3, " ", p->des, s4, " ");
  10.  fprintf(fw, "|    %09.9i    |\n", p->disp);
  11.  }





Se evito di scrivere i campi name e des, il ciclo funziona perfettamente. Si, n dell'ultima struttura è impostato a 0.

Ultima modifica effettuata da drewnik99 il 24/11/2011 alle 22:16
PM Quote
Avatar
drewnik99 (Normal User)
Pro


Messaggi: 69
Iscritto: 28/03/2008

Segnala al moderatore
Postato alle 21:52
Venerdì, 25/11/2011
Se, invece, provo a scrivere solo il codice e la disponibilità del componente, il ciclo termina correttamente:

Codice sorgente - presumibilmente Plain Text

  1. for(p = comps; p; p = p->n)
  2. {
  3. s1 = ((((float)(25 - strlen(p->name))) + 0.5) / 2);
  4. s2 = ((((float)(25 - strlen(p->name))) - 0.5) / 2);
  5. s3 = ((((float)(52 - strlen(p->des))) + 0.5) / 2);
  6. s4 = ((((float)(52 - strlen(p->des))) - 0.5) / 2) - 1;
  7. fprintf(fw, "|  %09.9i  ", p->code);
  8. fprintf(fw, "|    %09.9i    |\n", p->disp);
  9. }



PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 19:09
Martedì, 29/11/2011
Posta tutto il codice (mettilo in un allegato). Altrimenti e' impossibile aiutarti.


Il mio blog: https://piero.dev
PM Quote
Avatar
drewnik99 (Normal User)
Pro


Messaggi: 69
Iscritto: 28/03/2008

Segnala al moderatore
Postato alle 17:29
Giovedì, 01/12/2011
Il problema era presente nel calcolo degli spazi, poichè non sempre i valori erano maggiori o uguali a 1.

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo