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: 6403
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