Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione Google Pixel 10a, si migliora poco ma è sempre un'ottima scelta
Recensione Google Pixel 10a, si migliora poco ma è sempre un'ottima scelta
Google ha appena rinnovato la sua celebre serie A con il Pixel 10a, lo smartphone della serie più conveniente se consideriamo il rapporto tra costo e prestazioni. Con il chip Tensor G4, un design raffinato soprattutto sul retro e l'integrazione profonda di Gemini, il colosso di Mountain View promette un'esperienza premium a un prezzo accessibile. E il retro non ha nessuno scalino
6G, da rete che trasporta dati a rete intelligente: Qualcomm accelera al MWC 2026
6G, da rete che trasporta dati a rete intelligente: Qualcomm accelera al MWC 2026
Al MWC Qualcomm annuncia una coalizione industriale per lanciare il 6G entro il 2029 e introduce agenti IA per la gestione autonoma della RAN. Ericsson, presente sul palco, conferma la direzione: le reti del futuro saranno IA-native fin dalla progettazione
CHUWI CoreBook Air alla prova: design premium, buona autonomia e qualche compromesso
CHUWI CoreBook Air alla prova: design premium, buona autonomia e qualche compromesso
CHUWI CoreBook Air è un ultraleggero da 1 kg con Ryzen 5 6600H, display 14" 16:10 e 16 GB LPDDR5. Offre buona portabilità, autonomia discreta e costruzione in alluminio, ma storage PCIe 3.0 e RAM saldata limitano l'espandibilità. A 549 euro sfida brand più noti nella stessa fascia di mercato.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 18-07-2009, 21:30   #1
danixxx89
Junior Member
 
Iscritto dal: Apr 2009
Messaggi: 13
[C] Problemi con le Strutture

Codice HTML:
#include <stdio.h>  
#include <stdlib.h>
#define MINSIZE 26
#define SIZE 50
#define MAXSIZE 100

struct persone { 
	int num_cont_corrente;
	char nome[MINSIZE];
	char cognome[MINSIZE];
	double conto_attuale;
	double conto_precedente;
	double deposito;
	double prelievo;
};	

int menu( void );
FILE* crea_file();
void leggi_info( FILE *fptr );
void inserisci_nuova_info( FILE *fptr );
void modifica_info( FILE *fptr );

int main () 
{
	FILE *fptr; 
	int c;
 	while ( ( c = menu() ) != 0 ){
	    switch ( c ) {
		    case 1:	
                fptr = crea_file();
	            break;
		    case 2:
				 leggi_info( &fptr );
				 break;
			case 3:
				 inserisci_nuova_info( &fptr );
				 break;
    		case 4:
				 modifica_info( &fptr );
				 break;
			default:
				 printf( "\nCarattere inserito non corretto.\n"
				 "Prego inserire un nuovo carattere\n" );
				 break;
		}      
	}
    fclose( fptr ); 
	system ( "pause" );	
	return 0;
}


int menu( void )
{
	int c;
	printf( "Digitare il numero corrispettivo per le seguenti funzioni:\n\n" 
	"0) Esci dal programma\n"
	"1) Crea il file di testo (cliente.dat)\n"
	"2) Leggi info clienti\n"
	"3) Inserisci nuove info-clienti\n"
	"4) Modifica info-clienti\n"
	
	scanf( "%d", &c );
	
	return c;
}


FILE* crea_file()
{
    FILE *fptr;
	int i;
 	struct persone cliente = { 0, "", "", 0.0, 0.0, 0.0, 0.0 };
	if ( ( fptr = fopen( "clienti.txt", "wb+" ) ) == NULL ) 
	{
		printf( "\n\nIl file non puo' essere aperto!\n\n" );
	}
	else {
        for( i = 1; i <= MAXSIZE; i++){
	    fwrite( &cliente, sizeof( struct persone ), 1, fptr );
		}
	}
	return fptr; 
}

void leggi_info( FILE *fptr )
{
	struct persone cliente = { 0, "", "", 0.0, 0.0, 0.0, 0.0 };
    if ( ( fptr = fopen( "clienti.txt", "rb" ) ) == NULL ) 
	{
		printf( "\n\nIl file non puo' essere aperto!\n\n" );
	}else {  
            printf( "%-15s%-15s%-10s%10s%10s\n", "NOME", "COGNOME", 
            "CONTO ATTUALE", "ENTRATE", "USCITE");
            while( !feof ( fptr ) ){
                fread( &cliente, sizeof( struct persone ), 1, fptr ); 
                
                if( cliente.num_cont_corrente != 0 ) {
            	    printf( "%-15s%-15s%-10.2f%10.2f%11.2f\n", cliente.nome, 
                    cliente.cognome, cliente.conto_attuale, 
            	    cliente.deposito, cliente.prelievo);
                    }
                }
        }
	fclose(fptr);
	return; 
}
 
void inserisci_nuova_info( FILE *fptr )
{
	int cc;
	struct persone cliente = { 0, "", "", 0.0, 0.0, 0.0, 0.0 };
	if ( ( fptr = fopen( "clienti.txt", "rb+" ) ) == NULL ) 
	{
		printf( "\n\nIl file non puo' essere aperto!\n\n" );
	}else {  
        printf( "\nInserire il cod. di conto corrente: \n" );
        scanf( "\n%d", &cc );
		fseek( fptr, ( cc - 1 ) * sizeof( cliente ), SEEK_SET );	
		fread( &cliente, sizeof( struct persone ), 1, fptr );  
        if( cliente.num_cont_corrente != 0 )
		{
		    printf( "\nIl numero di conto corrente %d e' gia' esistente."
            "\n\n", cc );	
		} else {
            printf( "\nInserire Nome, Cognome, Saldo in bilancio\n" 
            "( Dopo ogni campo premere INVIO ): \n" );
			scanf( "%s\n%s\n%f", cliente.nome, cliente.cognome, 
			&cliente.conto_attuale );
		}
		cliente.num_cont_corrente = cc;
		fseek( fptr, ( cliente.num_cont_corrente - 1 ) * 
		sizeof( struct persone ), SEEK_SET );
		fwrite( &cliente, sizeof( struct persone ), 1, fptr );	
	}
	fclose(fptr);
	return; 
}


void modifica_info( FILE *fptr )
{
	char s;
	int cc;
	double aggiornamento_conto = 0.0;
    struct persone cliente = { 0, "", "", 0.0, 0.0, 0.0, 0.0 };
	if ( ( fptr = fopen( "clienti.txt", "rb+" ) ) == NULL ) 
	    {
		printf( "\n\nIl file non puo' essere aperto!\n\n" );
	    }else {  
        printf( "\nInserire numero di conto corrente: \n" );
        scanf( "%d", &cc );
        
        fseek( fptr, ( cc - 1 ) * sizeof( struct persone ), SEEK_SET );
        fread( &cliente, sizeof( struct persone ), 1, fptr );
        
            if( cliente.num_cont_corrente == 0 ) {
            	printf( "\nIl numero di conto corrente %d inserito non esiste."
                "\n\n\n", cc );
            } else {
                printf( "%-15s%-15s%-10f%-10f%-10f", cliente.nome, 
                cliente.cognome, cliente.conto_attuale, 
            	cliente.deposito, cliente.prelievo);
            	printf( "\nDigitare il segno + per le entrate, oppure"
            	"digitare il segno - per le uscite\n" );
                scanf("%s", &s);
            	switch( s ){
            	case '+':
            		printf( "\nInserire la cifra da depositare:\n");
            		scanf( "%f", &aggiornamento_conto );
            		cliente.deposito += aggiornamento_conto;
            		cliente.conto_attuale += aggiornamento_conto;
            		fseek( fptr, ( cc - 1 ) * sizeof( struct persone ), SEEK_SET );
            	    fwrite( &cliente, sizeof( struct persone ), 1, fptr );
            	    printf( "%-15s%-15s%-10f%-10f%-10f\n", cliente.nome, 
                    cliente.cognome, cliente.conto_attuale, 
            	    cliente.deposito, cliente.prelievo);
            		break;
                case '-':
            		printf( "\nInserire la cifra da prelevare:\n" ); 
            		scanf( "%f", &aggiornamento_conto );
            		cliente.prelievo -= aggiornamento_conto;
            		cliente.conto_attuale -= aggiornamento_conto;
            		fseek( fptr, ( cc - 1 ) * sizeof( struct persone ), SEEK_SET );
            	    fwrite( &cliente, sizeof( struct persone ), 1, fptr );
            	    printf( "%-15s%-15s%-10f%-10f%-10f\n", cliente.nome, 
                    cliente.cognome, cliente.conto_attuale, 
            	    cliente.deposito, cliente.prelievo);
            		break;
                default:
            		printf("\nCarattere inserito non corretto\n\n");	
            	    break;
            	}   	  	   
            }
        }
	return;
}
Mi aiutereste per piacere a capire perchè questa funzioncina non memorizza dati in codice numerico in <cliente.conto_attuale, cliente.deposito, cliente.prelievo>. Per quanto riguarda l'inserimento di caratteri non mi da problemi invece.
danixxx89 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione Google Pixel 10a, si migliora poco ma è sempre un'ottima scelta Recensione Google Pixel 10a, si migliora poco ma...
6G, da rete che trasporta dati a rete intelligente: Qualcomm accelera al MWC 2026 6G, da rete che trasporta dati a rete intelligen...
CHUWI CoreBook Air alla prova: design premium, buona autonomia e qualche compromesso CHUWI CoreBook Air alla prova: design premium, b...
Roborock Saros 20: il robot preciso e molto sottile Roborock Saros 20: il robot preciso e molto sott...
ASUS ROG Kithara: quando HIFIMAN incontra il gaming con driver planari da 100mm ASUS ROG Kithara: quando HIFIMAN incontra il gam...
Switch 2: la crisi dei chip potrebbe ess...
Samsung si prepara a raddoppiare i prezz...
Il Play Store inizia ad avvisare gli ute...
AliExpress punta sulle aziende italiane:...
Oura acquisice una nuova startup: potreb...
Gli occhiali smart con IA sono il nuovo ...
Il nuovo Apple M5 Max si comporta bene n...
Shark annuncia il lancio di CryoGlow: la...
TCL perde in tribunale: quei TV 'QLED' n...
NVIDIA: la scarsità di hardware c...
Nintendo fa causa al governo USA per i d...
iPhone 17 256GB a 899€, MacBook Air 16/2...
C'è l'IA dietro la tua canzone pr...
Rocket Lab ha posticipato il lancio del ...
Dalla missione Artemis IV il razzo spazi...
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: 07:10.


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