Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    11

    problema con la printf della differenza minima

    ciao a tutti...mi sono appena registrato dopo qualche ora senza dormire... forse proprio per qst non riesco a trovare la soluzione ad una cosa che sembra vicina ma che nn riesco a capire. il mio problema è il seguente: ho scritto un programma che prende in input 10 numeri e li confronta per determinare il più vicino ad un numero di "base". qual'è l intoppo? riesco a stampare la differenza minima,ma non il valore che mi ha portato a quella differenza minima...non so se sono stato chiaro...se fosse necessario vi posto il codice...grazie mille per l aiuto...e buongiorno a tutti!

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

    Re: problema con la printf della differenza minima

    Originariamente inviato da snatch84
    se fosse necessario vi posto il codice...grazie mille per l aiuto...e buongiorno a tutti!
    Direi che sarebbe meglio...
    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
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320

    Moderatrice

    Benvenuto sul forum.
    Subito l'invito a leggere il Regolamento interno: manca completamente l'indicazione del inguaggio nel titolo.

    Poi un suggerimento: se vuoi ricevere aiuto su un determinato codice... postalo (sempre seguendo il punto 6 del regolamento).


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    11
    scusate avete ragione...allora...si parla di linguaggio c e qst è quello che ho fatto fin'ora...

    codice:
    #include <stdio.h>
    #define NUM_SIZE 10
    int main()
    {
      double b , num[NUM_SIZE] , diff_min , num_vic; 
      int counter;
      
      printf("Digitare il numero di riferimento:");
      scanf("%lf" , &b);
      
      for(counter=1; counter<=NUM_SIZE; counter++){
                    
             printf("Digitare il valore numero %d:" , counter);
             scanf("%lf" , &num);                                    
             }
             diff_min= fabs(b-num[0]);
             
    (qui manca della roba! :D)
              
             printf("Valore piu' vicino:%lf" , num_vic);
     return 0;
    }

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320

    Moderazione

    No, dico... quando chiedo di "leggere il regolamento", intendo leggerlo tutto ed applicarlo... l'hai letto il punto 6? Mi sembra evidente di no...


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    11
    ti chiedo scusa...sono solo molto stanco...d ora in poi nn fallirò! promesso

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    11
    nessuno sa aiutarmi?!

  8. #8
    Utente di HTML.it L'avatar di KrOW
    Registrato dal
    Feb 2009
    Messaggi
    281
    Ciao e benvenuto nel forum ... Prima di tutto dovresti correggere l' inserimento dei 10 numeri da testare così:
    codice:
    for( counter=0; counter<NUM_SIZE; counter++ )
    {
    printf( "Digitare il valore numero %d", counter+1 );
    scanf( "%lf", &num[ counter ] );
    }
    perchè nel loop da te scritto, inserisci ogni numero sempre nel primo elemento di num, mentre devi inserirli a partire dal primo elemento, e per ogni ciclo, inserirlo nell' elemento successivo fino ad arrivare all' ultimo (cioè nel primo ciclo devi inserire il numero nel primo elemento di num, nel secondo ciclo devi inserire il numero nel secondo elemento di num e così via fino al decimo). Come dovresti sapere per accedere agli elementi di un array, bisogna usare un indice che va da 0 al numero di elementi dell' array - 1. Ad esempio, per accedere agli elementi dell' array num, puoi usare come indice un numero che va da 0 a 9 (cioè num[0], num[1] . . . num[9]). Metti bene in testa che per accedere all' i -esimo elemento devi usare come indice i-1 (cioè se vuoi accedere al primo elemento devi usare come indice 1-1 = 0) ecco perchè counter viene definito a 0, e perchè la condizione del loop è counter<NUM_SIZE ...
    Detto ciò rimane solo il problema di trovare il numero più vicino a quello memorizzato in b che può essere risolto con degli if/else dentro il loop.
    codice:
    for( counter=0; counter<NUM_SIZE; counter++ )
    {
    printf( "Digitare il valore numero %d", counter+1 );
    scanf( "%lf", &num[ counter ] );
    // Se è l' elemento corrente è il primo elemento di num
    if( counter == 0 )
    {
      // setta come numero più vicino l' elemento corrente di num, e come
      // differenza minima il numero assoluto della differenza tra l' elemento corrente di num e b
      num_vic = num[ counter ];
      diff_min = fabs( num[counter] - b );
    }
    else
    {
     // Se è l' elemento corrente è il primo elemento di num e se la differenza
     // tra l elemento corrente e b è minore della differenza minima corrente
     if( fabs( num[counter] - b ) < diff_min )
     {
       // setta come numero più vicino l' elemento corrente di num, e come differenza
       // minima il numero assoluto della differenza tra l' elemento corrente di num e b
       num_vic = num[ counter ];
       diff_min = fabs( num[counter] - b );
     }
    }
    }
    Se hai problemi a capire il codice chiedi pure ...
    P.S: Se stai imparando da autodidatta ti consiglio VIVAMENTE (se non l' hai già fatto) di prelevare un buon testo sul C ...
    C++ 4ever
    496e2062696e6172696f206e6f6e2063692061767265737469 206e656d6d656e6f2020726f7661746f203a29

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    11
    ti ringrazio infinitamente...ora sto uscendo e me lo leggo per bene qnd tornerò stasera. no cmq non sto imparando da autodidatta ma ho iniziato ora informatica all uni,ma lavorando non sempre posso frequentare e confrontarmi con gli altri. come libro di testo ho il deitel... in alcuni punti delle cose nn mi sono chiarissime,proprio perchè mi ci vorrebbe la "semplificazione" a parole del docente...ma ...piano piano !cmq...ti ringrazio ancora e buon pomeriggio...

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.