Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI
Con velocità teoriche fino a 11 Gbps, gestione tramite app intelligente e protezione avanzata dei dispositivi, Roamii BE Pro porta il Wi‑Fi 7 tri‑band nelle abitazioni più esigenti. Un sistema Wi-Fi Mesh proposto da MSI allo scopo di garantire agli utenti una rete fluida e continua capace di sostenere streaming 8K, gaming competitivo e le applicazioni moderne più esigenti in termini di banda
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi
Mate X7 rinnova la sfida nel segmento dei pieghevoli premium puntando su un design ancora più sottile e resistente, unito al ritorno dei processori proprietari della serie Kirin. L'assenza dei servizi Google e del 5G pesa ancora sull'esperienza utente, ma il comparto fotografico e la qualità costruttiva cercano di compensare queste mancanze strutturali con soluzioni ingegneristiche di altissimo livello
Nioh 3: souls-like punitivo e Action RPG
Nioh 3: souls-like punitivo e Action RPG
Nioh 3 aggiorna la formula Team NINJA con aree esplorabili più grandi, due stili di combattimento intercambiabili al volo (Samurai e Ninja) e un sistema di progressione pieno di attività, basi nemiche e sfide legate al Crogiolo. La recensione entra nel dettaglio su combattimento, build, progressione e requisiti PC
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 24-09-2005, 20:53   #1
Vash88
Senior Member
 
L'Avatar di Vash88
 
Iscritto dal: Sep 2003
Città: Regno Unito
Messaggi: 5726
Il float in C, ho qualche problema.

Sono alle mie prime esperienze con il comando float, ci ho perso un oretta a capire come fare a farlo funzionare in questo codice ma senza risultato.
Vorrei capire come posso fare in modo che le tutte le variabili tranne numeroconto possano essere inserite con 2 decimali. Ho provato vari metodi fallendo, chi mi da una mano? in questo esercizio dovrei creare un programma che il limite di credito su un conto.

Codice:
#include<stdio.h>
int main()
{
    int numeroconto, saldoiniziale, spese, crediti, limitecredito, nuovosaldo;
    
    while ( numeroconto != -1 ) {

    printf( "Inserire il numero di conto (-1 per terminare l'applicazione):" );
    scanf( "%d", &numeroconto );
    printf( "Inserire il saldo iniziale:" );
    scanf( "%d", &saldoiniziale );
    printf( "Inserire le spese:" );
    scanf( "%d", &spese );
    printf( "Inserire i crediti:" );
    scanf( "%d", &crediti );
    printf( "Inserire limite di credito:" );
    scanf( "%d", &limitecredito );

    nuovosaldo = saldoiniziale + spese - crediti;

        if ( nuovosaldo > limitecredito ) {
         printf( "Numero conto:%d", numeroconto );
        printf( "Limite di credito:%d", limitecredito );
        printf( "Nuovo saldo:%d", nuovosaldo ); 
        printf( "Limite di credito superato" );
        }
    }
    printf("Uscire y/n?:");
    if (getchar() != '\n');
    while (getchar() != 'y');
    return 0;
}
__________________
3090 FE & Ryzen 5700x - Legion 7 5800h 32gb - 3080 16gb
Vash88 è offline   Rispondi citando il messaggio o parte di esso
Old 25-09-2005, 00:07   #2
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16213
Quote:
Originariamente inviato da Vash88
Vorrei capire come posso fare in modo che le tutte le variabili tranne numeroconto possano essere inserite con 2 decimali.
Se usi solo scanf come funzione di input, mi sa che non puoi.
Almeno, questo è quello che ho capito da una rapida lettura dell'Appendice B del Kernighan&Ritchie, che dovrebbe essere in tuo possesso.

Il programma mi sembra filosoficamente corretto, nel senso che puoi mettere il tipo float alle variabili che vuoi, e poi devi solo sostituire lo specificatore "%d" con "%f" dove serve.
Ti segnalo solo qualche punto:
Quote:
Codice:
    int numeroconto, saldoiniziale, spese, crediti, limitecredito, nuovosaldo;
    
    while ( numeroconto != -1 ) {
Errore classico: all'avvio del programma, numeroconto non è inizializzata, e per quanto ne sai, potrebbe valere proprio -1.
Quote:
Codice:
    if (getchar() != '\n');
Non capisco il senso di dare un'istruzione che non fa niente se una certa condizione è vera, e non fa niente se la stessa condizione è falsa.
Quote:
Codice:
    while (getchar() != 'y');
Forse ti conviene introdurre una variabile ausiliaria c, di tipo int (attenzione: il tipo restituito da getchar è int, non char), e fare una cosa del tipo:
Codice:
while ((c=getchar()) != 'y' && c!='n')
    ;
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Chi scherza col fuoco si brucia.
Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici
REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu
Ziosilvio è offline   Rispondi citando il messaggio o parte di esso
Old 25-09-2005, 12:31   #3
Vash88
Senior Member
 
L'Avatar di Vash88
 
Iscritto dal: Sep 2003
Città: Regno Unito
Messaggi: 5726
Quote:
Originariamente inviato da Ziosilvio
Se usi solo scanf come funzione di input, mi sa che non puoi.
Almeno, questo è quello che ho capito da una rapida lettura dell'Appendice B del Kernighan&Ritchie, che dovrebbe essere in tuo possesso.
Putroppo ora sono in possesso solo del corso completo di programmazione C di Deitel&Deitel, la spiegazione di float che ho avuto per ora è stata un pò limitata secondo me. Comunque ora che ho corretto il programma posso inserire tranquillamente con scanf dei dati di tipo float. Andrò a cercare il libro che mi hai suggerito.

Quote:
Il programma mi sembra filosoficamente corretto, nel senso che puoi mettere il tipo float alle variabili che vuoi, e poi devi solo sostituire lo specificatore "%d" con "%f" dove serve.
Ti segnalo solo qualche punto:

Errore classico: all'avvio del programma, numeroconto non è inizializzata, e per quanto ne sai, potrebbe valere proprio -1.

Non capisco il senso di dare un'istruzione che non fa niente se una certa condizione è vera, e non fa niente se la stessa condizione è falsa.
Ho corretto tutti gli errori, per far terminare il programma con il dato -1 ho aggiunto un ramo di else, grazie per avermi segnalato i vari errori, ora il programma funziona. Alla prossima!

Codice:
#include<stdio.h>
int main()
{
    int numeroconto;
    float saldoiniziale, spese, crediti, limitecredito, nuovosaldo;
    
    printf( "Inserire il numero di conto ( -1 per terminare l'applicazione ):" );
    scanf( "%d", &numeroconto );
    while ( numeroconto != -1 ) {
    printf( "Inserire il saldo iniziale:" );
    scanf( "%f", &saldoiniziale );
    printf( "Inserire le spese:" );
    scanf( "%f", &spese );
    printf( "Inserire i crediti:" );
    scanf( "%f", &crediti );
    printf( "Inserire limite di credito:" );
    scanf( "%f", &limitecredito );
    nuovosaldo = saldoiniziale + spese - crediti;
        if ( nuovosaldo > limitecredito ) {
        printf( "Numero conto:%d\n", numeroconto );
        printf( "Limite di credito:%f\n", limitecredito );
        printf( "Nuovo saldo:%f\n", nuovosaldo ); 
        printf( "Limite di credito superato\n\n" );
        }
        else {
        printf( "Inserire il numero di conto ( -1 per terminare l'applicazione ):" );
        scanf( "%d", &numeroconto );
        }
    }
    printf("Uscire y/n?:");
    while (getchar() != 'y');
    return 0;
}
__________________
3090 FE & Ryzen 5700x - Legion 7 5800h 32gb - 3080 16gb
Vash88 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo M...
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi Recensione HUAWEI Mate X7: un foldable ottimo, m...
Nioh 3: souls-like punitivo e Action RPG Nioh 3: souls-like punitivo e Action RPG
Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti Test in super anteprima di Navimow i220 LiDAR: i...
Dark Perk Ergo e Sym provati tra wireless, software via browser e peso ridotto Dark Perk Ergo e Sym provati tra wireless, softw...
Exynos 2700, Samsung già lavora a...
Microsoft rilascia Windows 11 26H1: cosa...
Apple vola in Cina: il merito è d...
WhatsApp Web sta per colmare la sua pi&u...
Spotify chiude un trimestre da record: i...
Samsung potrebbe riproporre smartphone c...
AirPods Pro 3 a 219€, AirTag da 4 pezzi ...
Sconto di 300€ su un MacBook Air e un Pr...
La Cina lancia un servizio simile a Dire...
SpaceX: Elon Musk torna a parlare dei pr...
G.Skill risarcisce 2,4 milioni di dollar...
Test degli annunci su ChatGPT avviati: '...
TSMC approva investimenti record da quas...
L'IA agentica arriva anche sullo storage...
Euro digitale, il Parlamento UE cambia r...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 09:03.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v