Come mai "così" funziona e "così" no????

di il
2 risposte

Come mai "così" funziona e "così" no????

Salve, ho un grande dubbio.
Devo calcolare l'interesse composto con l'uso dell'istruzione for. Il codice funzionante è questo:

// APPLICAZIONE: CALCOLO DELL'INTERESSE COMPOSTO.

// a = p * ( 1 + r ) ^ n.

#include <stdio.h> 
#include <math.h>
int main( void )
{
    double capitaleIniziale = 1000;
    double tassoAnnualeIntrss = 0.05;
    double capitaleDopoPiuAnni;
   
/*puts( "Questo è un programma per il calcolo dell'interesse composto a partire da un capitale iniziale e dato un tasso annuale d'interesse.\nVerrà utilizzata la formula:\n\na = p * ( 1 + r ) ^ n.\n\ncon:\nn = numero anno\nr = tasso d'interesse annuale\np = capitale iniziale\na = capitale dopo n anni.\n\n");
    
    puts( "Inserisci il capitale iniziale p (-1 per terminare)." );
    scanf( "%f", &capitaleIniziale );
    
    puts( "\nInserisci il tasso d'interesse annuale r, per esempio 0.05 = 5%." );
    scanf( "%f", &tassoAnnualeIntrss );
*/    
    
    double tassoAnnualeIntrssScrivibile = tassoAnnualeIntrss * 100;   
    
    for ( unsigned int numeroAnno = 1; numeroAnno <= 10; numeroAnno++ ) {
        
        capitaleDopoPiuAnni = capitaleIniziale * pow( 1 + tassoAnnualeIntrss, numeroAnno );
       
        printf( "\nIl capitale accumulato dopo il %u^ anno di deposito con il tasso d'interesse annuale del %.3f %% è:\n%.3f\n", numeroAnno, tassoAnnualeIntrssScrivibile, capitaleDopoPiuAnni );
    }
    
}
Il printscreen di questo codice è qui: http://prntscr.com/fpmgg

Il codice non funzionante è questo:

// APPLICAZIONE: CALCOLO DELL'INTERESSE COMPOSTO.

// a = p * ( 1 + r ) ^ n.

#include <stdio.h> 
#include <math.h>
int main( void )
{
    double capitaleIniziale;
    double tassoAnnualeIntrss;
    double capitaleDopoPiuAnni;
   
    puts( "Questo è un programma per il calcolo dell'interesse composto a partire da un capitale iniziale e dato un tasso annuale d'interesse.\nVerrà utilizzata la formula:\n\na = p * ( 1 + r ) ^ n.\n\ncon:\nn = numero anno\nr = tasso d'interesse annuale\np = capitale iniziale\na = capitale dopo n anni.\n\n");
    
    puts( "Inserisci il capitale iniziale p (-1 per terminare)." );
    scanf( "%f", &capitaleIniziale );
    
    puts( "\nInserisci il tasso d'interesse annuale r, per esempio 0.05 = 5%." );
    scanf( "%f", &tassoAnnualeIntrss );
    
    double tassoAnnualeIntrssScrivibile = tassoAnnualeIntrss * 100;   
    
    for ( unsigned int numeroAnno = 1; numeroAnno <= 10; numeroAnno++ ) {
        
        capitaleDopoPiuAnni = capitaleIniziale * pow( 1 + tassoAnnualeIntrss, numeroAnno );
       
        printf( "\nIl capitale accumulato dopo il %u^ anno di deposito con il tasso d'interesse annuale del %.3f %% è:\n%.3f\n", numeroAnno, tassoAnnualeIntrssScrivibile, capitaleDopoPiuAnni );
    }
    
}
ed il printscreen è questo: http://prntscr.com/fpmhh

Grazie.

2 Risposte

  • Re: Come mai "così" funziona e "così" no????

    Semplicemente il format specifier per la scanf per il tipo double è %lf e non %f

    Il compilatore dovrebbe averti segnalato qualcosa a riguardo.
  • Re: Come mai "così" funziona e "così" no????

    Ok, grazie. con %lf nello scanf il problema si risolve ) grazie.

    Printscreen: http://prntscr.com/fpnr6
    
    // APPLICAZIONE: CALCOLO DELL'INTERESSE COMPOSTO.
    
    // a = p * ( 1 + r ) ^ n.
    
    #include <stdio.h> 
    #include <math.h>
    int main( void )
    {
        double capitaleIniziale;
        double tassoAnnualeIntrss;
        double capitaleDopoPiuAnni;
       
        puts( "Questo è un programma per il calcolo dell'interesse composto a partire da un capitale iniziale e dato un tasso annuale d'interesse.\nVerrà utilizzata la formula:\n\na = p * ( 1 + r ) ^ n.\n\ncon:\nn = numero anno\nr = tasso d'interesse annuale\np = capitale iniziale\na = capitale dopo n anni.\n\n");
        
        puts( "Inserisci il capitale iniziale p (-1 per terminare)." );
        scanf( "%lf", &capitaleIniziale );
        
        while ( capitaleIniziale != -1 ) {
          
            puts( "\nInserisci il tasso d'interesse annuale r, per esempio 0.05 = 5%." );
            scanf( "%lf", &tassoAnnualeIntrss );
            
            double tassoAnnualeIntrssScrivibile = tassoAnnualeIntrss * 100;   
            
            printf( "\n%6s%25s\n\n", "Anno", "Capitale in Deposito" );  
        
            for ( unsigned int numeroAnno = 1; numeroAnno <= 10; numeroAnno++ ) {
                
                capitaleDopoPiuAnni = capitaleIniziale * pow( 1 + tassoAnnualeIntrss, numeroAnno );
               
                printf( "%6u%25.3lf\n", numeroAnno, capitaleDopoPiuAnni);
            }
            
            puts( "\nInserisci il capitale iniziale p (-1 per terminare)." );
            scanf( "%lf", &capitaleIniziale );
        }
    
    }
    
Devi accedere o registrarti per scrivere nel forum
2 risposte