Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2 è la nuova handheld PC gaming con processore AMD Ryzen Z2 Extreme (8 core Zen 5/5c, GPU RDNA 3.5 16 CU) e schermo OLED 8,8" 1920x1200 144Hz. È dotata anche di controller rimovibili TrueStrike con joystick Hall effect e una batteria da 74Wh. Rispetto al dispositivo che l'ha preceduta, migliora ergonomia e prestazioni a basse risoluzioni, ma pesa 920g e costa 1.299€ nella configurazione con 32GB RAM/1TB SSD e Z2 Extreme
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
A re:Invent 2025, AWS mostra un’evoluzione profonda della propria strategia: l’IA diventa una piattaforma di servizi sempre più pronta all’uso, con agenti e modelli preconfigurati che accelerano lo sviluppo, mentre il cloud resta la base imprescindibile per governare dati, complessità e lock-in in uno scenario sempre più orientato all’hybrid cloud
Cos'è la bolla dell'IA e perché se ne parla
Cos'è la bolla dell'IA e perché se ne parla
Si parla molto ultimamente di "bolla dell'intelligenza artificiale", ma non è sempre chiaro perché: l'IA è una tecnologia molto promettente e che ha già cambiato molte cose dentro e fuori le aziende, ma ci sono enormi aspettative che stanno gonfiando a dismisura i valori delle azioni e distorcendo il mercato. Il che, com'è facile intuire, può portare a una ripetizione della "bolla dotcom", e forse anche di quella dei mutui subprime. Vediamo perché
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


Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'...
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti AWS re:Invent 2025: inizia l'era dell'AI-as-a-Se...
Cos'è la bolla dell'IA e perché se ne parla Cos'è la bolla dell'IA e perché se...
BOOX Palma 2 Pro in prova: l'e-reader diventa a colori, e davvero tascabile BOOX Palma 2 Pro in prova: l'e-reader diventa a ...
FRITZ!Repeater 1700 estende la rete super-veloce Wi-Fi 7 FRITZ!Repeater 1700 estende la rete super-veloce...
Apple 'apre' iOS alle terze parti anche ...
Cloud sovrano: l'approccio di Broadcom c...
HONOR conferma l'arrivo in Italia di Mag...
La Cina sotto pressione impone maniglie ...
OpenAI integra le app in ChatGPT per tra...
NVIDIA sarebbe pronta a tagliare la prod...
Prezzo minimo storico per iPhone 16 Pro:...
Riot Games scopre una falla nei BIOS che...
Beats in super offerta su Amazon: aurico...
Batterie elettriche, Samsung SDI e Stell...
Clivet presenta Fullness, la pompa di ca...
SpaceX lancerà 167 razzi spaziali...
Yakuza Kiwami 3 e Dark Ties protagonisti...
Privacy a rischio: ecco la VPN che regis...
SpaceX ha annunciato che un satellite St...
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: 08:59.


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