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 03-09-2004, 21:07   #1
marfer3
Member
 
Iscritto dal: Mar 2002
Messaggi: 142
programma in C

Stavo risolvendo il testo di questo problema con il seguente programma che però mi da' qualche problemuccio: qualcuno di voi mi darebbe una mano?
le funzioni fread mi danno come valore di ritorno 0. Perchè???
Grazie.
Codice:
/*
Su un file binario (super.dat) sono stati registrati i prodotti in vendita in un negozio
di articoli sportivi.
Ogni articolo è caratterizzato da un codice alfanumerico univoco, una breve descrizione, il prezzo e la marca.
Tale file è ordinato in ordine crescente rispetto al codice articolo.
Impostare una procedura, guidata da menù,che preveda le seguenti opzioni:
1- dato un codice articolo, aumentare il suo prezzo del 2%
2- aumentare i prezzi di tutti gli articoli del 20%
3- stampare tutti gli articoli della stessa marca data in input
4- su un file ASCII (acquisto.txt) sono stati registrati i codici degli articoli acquistati da un cliente, stanmpare il 

totale da pagare.
5- fine elaborazione
*/
#include "stdio.h"
	struct sprod
		{
		char codice[10];
		char descr[100];
		float prezzo;
		char marca[15];
		};
void aggiungiprodotto(void);
int aumentacodice(char *cod);
int aumentatutti(void);
float prezzocodice(char *cod);
float calcolatotale();
void main(void)
	{
	int scelta;
	char codicer[10];
	char marcar[15];
	do
		{
		clrscr();
		printf("0-Aggiungere nuovo prodotto\n");
		printf("1-dato un codice articolo, aumentare il suo prezzo del 20%\n");
		printf("2-Aumentare i prezzi di tutti gli articoli del 20%\n");
		printf("3-Stampare tutti gli articoli della stessa marca data in input\n");
		printf("4-stampare il totale da pagare\n");
		printf("5-Uscita\n");
		printf("Scegli: ");
		scanf("%d",&scelta);
		fflush(stdin);
		switch(scelta)
			{
			case 0:
				aggiungiprodotto();
				break;
			case 1:
				printf("Inserire codice da modificare: ");
				gets(codicer);
				if(aumentacodice(codicer))
					printf("\nPrezzo modificato");
				else
					printf("\nCodice non trovato");
				getch();
				break;
			case 2:
				if(aumentatutti())
					printf("\nPrezzi modificati");
				else
					printf("\nNessun prodotto trovato");
				getch();
				break;
			case 3:
				printf("Inserire marca da visualizzare: ");
				gets(marcar);
				if(visualizzamarca(marcar)==0)
					printf("\nNessun prodotto trovato");

				getch();
				break;
			case 4:
				printf("\nIl totale da pagare e' : %f",calcolatotale());
				getch();
				break;
			case 5:
				break;
			default:
				printf("Scelta errata");
			}
		}while(scelta!=5);
	}
void aggiungiprodotto(void)
	{
	struct sprod prod;
	FILE *fp;
	int temp;
	fp=fopen("super.dat","a");
	printf("Inserire codice: ");
	gets(prod.codice);
	printf("Inserire descrizione: ");
	gets(prod.descr);
	printf("Inserire prezzo: ");
	scanf("%f",&prod.prezzo);
	fflush(stdin);
	printf("Inserire marca: ");
	gets(prod.marca);
	temp=fwrite(&prod,sizeof(struct sprod),1,fp);
	fclose(fp);
	}
int aumentacodice(char *cod)
	{
	struct sprod prod;
	FILE *fp;
	int n,trovato=0,pos;
	fp=fopen("super.dat","r+");
	for (;;)
		{
		pos=ftell(fp);
		n=fread(&prod,sizeof(struct sprod),1,fp); // ritorna sempre 0
		if (n==0) break;
		if(strcmp(prod.codice,cod)==0)
			{
			trovato=1;
			prod.prezzo=prod.prezzo*1.2;
			fseek(fp,pos,0);
			fwrite(&prod,sizeof(struct sprod),1,fp);
			break;
			}
		}
	fclose(fp);
	return trovato;
	}
//--------------------------------------------
//funzione parzialmente non funzionante, modifica solo il primo record
int aumentatutti(void)
	{
	struct sprod prod;
	FILE *fp;
	int n,trovato=0,pos,temp1,temp2,temp3;
	fp=fopen("super.dat","r+");
	for (;;)
		{
		pos=ftell(fp);
		n=fread(&prod,sizeof(struct sprod),1,fp);  
		temp1=ftell(fp);
		if (n==0) break;
		trovato=1;
		prod.prezzo=prod.prezzo*1.2;
		fseek(fp,pos,0);
		temp2=ftell(fp);
		fwrite(&prod,sizeof(struct sprod),1,fp);
		temp3=ftell(fp);
		}
	fclose(fp);
	return trovato;
	}
//------------------------------------------------------
int visualizzamarca(char *marca)
	{
	struct sprod prod;
	FILE *fp;
	int n,trovato=0;
	fp=fopen("super.dat","r");
	for (;;)
		{
		n=fread(&prod,sizeof(struct sprod),1,fp);
		if (n==0) break;
		if(strcmp(prod.marca,marca)==0)
			{
			trovato++;
			printf("\n%s %s %f %s",prod.codice,prod.descr,prod.prezzo,prod.marca);
			}
		}
	fclose(fp);
	return trovato;
	}
//--------------------------------------
float prezzocodice(char *cod)
	{
	struct sprod prod;
	FILE *fp;
	int n,trovato=0,pos;
	fp=fopen("super.dat","r+");
	for (;;)
		{
		pos=ftell(fp);
		n=fread(&prod,sizeof(struct sprod),1,fp);
		if (n==0) break;
		if(strcmp(prod.codice,cod)==0)
			{
			fclose(fp);
			return prod.prezzo;
			break;
			}
		}
	fclose(fp);
	return 0;
	}
float calcolatotale()
	{
	FILE *fp;
	float totale=0;
	char cod[10];
	fp=fopen("acquisto.txt","r");
	while(fscanf(fp,"%s",cod)!=-1)
		totale=totale+prezzocodice(cod);
	fclose(fp);
	return totale;
	}

Ultima modifica di marfer3 : 03-09-2004 alle 21:11.
marfer3 è offline   Rispondi citando il messaggio o parte di esso
Old 04-09-2004, 12:08   #2
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
vedere dei clicli for messi così fanno paura

allora:

1) fai un controllo sul puntatore fp
2) non usare clrscr dato che è solo una particolarità del compilatore Borland

allora:

1) incominciamo a togliere qualche possibile problema di apertura del file

Codice:
if ((fp=fopen("super.dat", "a"))==NULL){
 return;
}
2) usare dei cicli for messi in questo modo for(; fanno molto da grezzo e poi non è molto bello se si cerca di fare almeno un pò il programmatore . In questo caso siccome si deve scorrere un file usa questo metodo

Codice:
while (!feof(fp)){
 fread(prod,sizeof(prod),1,fp);
 if (!feof(fp){
  ----- codice ----
}
}
adesso non ho tempo per modificare il codice e compilarlo ... se va bene oggi pomeriggio ci provo

~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 04-09-2004, 21:24   #3
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
domanda ma come ti faceva a funzionare se ci sono errori e non hai incluso delle librerie?!

~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 04-09-2004, 23:40   #4
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
ammazzate corretto tutto tranne la parte dei file di testo che non li ho mai usati. Se c'è qualche anima pia che ha qualche info su come utilizzarli mi fa un piacere.
ps: l'ultima funzione sui file non l'ho toccata

pps: qualcuno avrebbe fatto diversamente??

Codice:
#include <stdio.h>
#include <conio.h>
#include <string.h>

struct sprod
{
	char codice[10];
	char descr[100];
	float prezzo;
	char marca[15];
};

void aggiungiprodotto();
int aumentacodice(char *cod);
int aumentatutti();
float prezzocodice(char *cod);
float calcolatotale();
int visualizzamarca(char *marca);
void visualizza_file ();

void main()
{
	int scelta;
	char codicer[10];
	char marcar[15];
	do
	{
		printf("0-Aggiungere nuovo prodotto\n");
		printf("1-dato un codice articolo, aumentare il suo prezzo del 20%\n");
		printf("2-Aumentare i prezzi di tutti gli articoli del 20%\n");
		printf("3-Stampare tutti gli articoli della stessa marca data in input\n");
		printf("4-stampare il totale da pagare\n");
		printf("5-se vuoi stampare a video tutto il file\n");
		printf("6-stampare il prezzo dato un codice\n");
		printf("7-Uscita\n");	
		printf("Scegli: ");
		scanf("%d",&scelta);
		fflush(stdin);
		switch(scelta)
		{
			case 0:
				aggiungiprodotto();
				break;
			case 1:
				printf("Inserire codice da modificare: ");
				gets(codicer);
				fflush(stdin);
				if(aumentacodice(codicer)) {
					printf("\nPrezzo modificato");
					break;
				}
				else {
					printf("\nCodice non trovato\n\n");
					break;
				}
			case 2:
				if(aumentatutti()) {
					printf("\n\nPrezzi modificati\n\n");
					break;
				}
				else { 
					printf("\n\nNessun prodotto trovato\n\n");
					break;
				}
			case 3:
				printf("Inserire marca da visualizzare: ");
				gets(marcar);
				if(visualizzamarca(marcar)==0) {
					printf("\nNessun prodotto trovato\n\n");
					break;
				}
				break;
			case 4:
				printf("\nIl totale da pagare e' : %f",calcolatotale());
				break;
			case 5:
				visualizza_file ();
				break;
			case 6:
				printf("\nInserisci il codice:");
				gets(codicer);
				fflush(stdin);
				float prezzo;
				prezzo = prezzocodice(codicer);
				if (prezzo == -1){
					printf ("\n\nCodice inesistente\n\n");
				}
				else{
					printf ("\n\nIl prezzo e': \t%f\n\n", prezzo);
				}
				break;
			case 7:
				break;
			default:
				printf("Scelta errata");
		}
	}while(scelta!=7);
}

void aggiungiprodotto()
{
	struct sprod prod;
	FILE *fp;
	if ((fp=fopen("super.dat","a"))==NULL){
		printf ("Errore nell'apertura del file");
		return;
	}
	printf("Inserire codice: ");
	gets(prod.codice);
	printf("Inserire descrizione: ");
	gets(prod.descr);
	printf("Inserire prezzo: ");
	scanf("%f",&prod.prezzo);
	fflush(stdin);
	printf("Inserire marca: ");
	gets(prod.marca);
	fwrite(&prod,sizeof(sprod),1,fp);
	fclose(fp);
}

void visualizza_file ()
{
	sprod prod;
	FILE *fp;
	if ((fp=fopen("super.dat","r"))==NULL){
		printf ("Errore nell'apertura del file");
		return;
	}
	while (!feof (fp)){
		fread (&prod, sizeof(prod),1,fp);
		if (!feof(fp)){
			printf ("\nmarca: %s", prod.marca);
			printf ("\ncodice: %s", prod.codice);
			printf ("\ndescrizione: %s", prod.descr);
			printf ("\nprezzo: %f\n\n", prod.prezzo );
		}
	}
	fclose (fp);
}

int aumentacodice(char *cod)
{
	sprod prod;
	FILE *fp;
	int pos=-1;
	
	if ((fp=fopen("super.dat","r+"))==NULL){
		printf ("Errore nell'apertura del file");
		return -1;
	}

	while (!feof (fp)){
		fread (&prod, sizeof(prod),1,fp);
		if (!feof(fp)){
			pos ++;
			if (strcmp(prod.codice, cod)==0){
				prod.prezzo = prod.prezzo * 1.2;
				printf ("prezzo:\t%f", prod.prezzo);
				pos = pos * sizeof (prod);
				fseek(fp,pos,0);
				fwrite(&prod,sizeof(prod),1,fp);
				fclose (fp);
				return 1;
			}
		}
	}
	fclose (fp);
	return 0;
}

int aumentatutti(void)
{
	sprod prod;
	FILE *fp, *fp_supp;
	
	if ((fp=fopen("super.dat","r+"))==NULL){
		printf ("\n\nErrore nell'apertura del file\n\n");
		return 0;
	}

	if ((fp_supp=fopen("file_supporto.dat","a"))==NULL){
		printf ("\n\nErrore nell'apertura del file di supporto.\n\n");
		return 0;
	}

	while (!feof(fp)){	
		fread (&prod, sizeof(sprod),1,fp);
		if (!feof(fp)){
			prod.prezzo = prod.prezzo * 1.2;
			fwrite(&prod,sizeof(prod),1,fp_supp);
		}
	}

	fclose (fp);
	fclose (fp_supp);

	remove("super.dat");
	rename("file_supporto.dat", "super.dat");

	
	return 1;
}

int visualizzamarca(char *marca)
{
	sprod prod;
	FILE *fp;
	int n,trovato=0;
	if ((fp=fopen("super.dat","r"))==NULL){
		printf ("\n\nErrore nell'apertura del file\n\n");
		return 0;
	}
	
	while (!feof(fp)){	
		fread (&prod, sizeof(prod),1,fp);
		if (!feof(fp)){
			if(strcmp(prod.marca,marca)==0){
				trovato++;
				printf("\n%s %s %f %s\n\n",prod.codice,prod.descr,prod.prezzo,prod.marca);
			}
		}
	}

	fclose(fp);
	return trovato;
}


float prezzocodice(char *cod)
{
	sprod prod;
	FILE *fp;

	if ((fp=fopen("super.dat","r+"))==NULL){
		printf ("\n\nErrore nell'apertura del file\n\n");
		return 0;
	}

	while (!feof(fp)){	
		fread (&prod, sizeof(prod),1,fp);
		if (!feof(fp)){
			if(strcmp(prod.codice,cod)==0){
				fclose(fp);
				return prod.prezzo;
			}
		}
	}
	
	fclose(fp);
	
	return -1;
}


float calcolatotale()
{
FILE *fp;
float totale=0;
char cod[10];
fp=fopen("acquisto.txt","r");
while(fscanf(fp,"%s",cod)!=-1)
totale=totale+prezzocodice(cod);
fclose(fp);
return totale;
}
~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 05-09-2004, 10:41   #5
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
allora modificato il programma nell'acquisizione di stringhe. Adesso non c'è più possibilità di creare overflow

Per rendere più semplice, ho creato delle variabili costanti per la lunghezza dei vari campi, così se si vuole per esempio aumentare o diminuire la loro dimensione non c'è più il problema di guardarsi tutte le dimensioni delle variabili.

Codice:
#include <stdio.h>
#include <conio.h>
#include <string.h>

const lunghezza_codice = 10;
const lunghezza_descr = 100;
const lunghezza_marca = 15;

struct sprod
{
	char codice[lunghezza_codice];
	char descr[lunghezza_descr];
	float prezzo;
	char marca[lunghezza_marca];
};

void aggiungiprodotto();
int aumentacodice(char *cod);
int aumentatutti();
float prezzocodice(char *cod);
float calcolatotale();
int visualizzamarca(char *marca);
void visualizza_file ();

void main()
{
	int scelta;
	char codicer[lunghezza_codice];
	char marcar[lunghezza_marca];
	do
	{
		printf("0-Aggiungere nuovo prodotto\n");
		printf("1-dato un codice articolo, aumentare il suo prezzo del 20%\n");
		printf("2-Aumentare i prezzi di tutti gli articoli del 20%\n");
		printf("3-Stampare tutti gli articoli della stessa marca data in input\n");
		printf("4-stampare il totale da pagare\n");
		printf("5-se vuoi stampare a video tutto il file\n");
		printf("6-stampare il prezzo dato un codice\n");
		printf("7-Uscita\n");	
		printf("Scegli: ");
		scanf("%d",&scelta);
		fflush(stdin);
		switch(scelta)
		{
			case 0:
				aggiungiprodotto();
				break;
			case 1:
				printf("Inserire codice da modificare: ");
				fgets (codicer,lunghezza_codice,stdin);
				fflush(stdin);
				if(aumentacodice(codicer)) {
					printf("\nPrezzo modificato");
					break;
				}
				else {
					printf("\nCodice non trovato\n\n");
					break;
				}
			case 2:
				if(aumentatutti()) {
					printf("\n\nPrezzi modificati\n\n");
					break;
				}
				else { 
					printf("\n\nNessun prodotto trovato\n\n");
					break;
				}
			case 3:
				printf("Inserire marca da visualizzare: ");
				fgets (marcar,lunghezza_marca,stdin);
				if(visualizzamarca(marcar)==0) {
					printf("\nNessun prodotto trovato\n\n");
					break;
				}
				break;
			case 4:
				printf("\nIl totale da pagare e' : %f",calcolatotale());
				break;
			case 5:
				visualizza_file ();
				break;
			case 6:
				printf("\nInserisci il codice:");
				fgets (codicer, lunghezza_codice, stdin);
				fflush(stdin);
				float prezzo;
				prezzo = prezzocodice(codicer);
				if (prezzo == -1){
					printf ("\n\nCodice inesistente\n\n");
				}
				else{
					printf ("\n\nIl prezzo e': \t%f\n\n", prezzo);
				}
				break;
			case 7:
				break;
			default:
				printf("Scelta errata");
		}
	}while(scelta!=7);
}

void aggiungiprodotto()
{
	struct sprod prod;
	FILE *fp;
	if ((fp=fopen("super.dat","a"))==NULL){
		printf ("Errore nell'apertura del file");
		return;
	}
	fflush(stdin);
	printf("Inserire codice: ");
	fgets (prod.codice, lunghezza_codice, stdin);
	fflush(stdin);
	printf("Inserire descrizione: ");
	fgets(prod.descr, lunghezza_descr, stdin);
	fflush(stdin);
	printf("Inserire prezzo: ");
	scanf("%f",&prod.prezzo);
	fflush(stdin);
	printf("Inserire marca: ");
	fgets(prod.marca, lunghezza_marca, stdin);
	fflush(stdin);
	fwrite(&prod,sizeof(sprod),1,fp);
	fclose(fp);
}

void visualizza_file ()
{
	sprod prod;
	FILE *fp;
	if ((fp=fopen("super.dat","r"))==NULL){
		printf ("Errore nell'apertura del file");
		return;
	}
	while (!feof (fp)){
		fread (&prod, sizeof(prod),1,fp);
		if (!feof(fp)){
			printf ("\nmarca: %s", prod.marca);
			printf ("\ncodice: %s", prod.codice);
			printf ("\ndescrizione: %s", prod.descr);
			printf ("\nprezzo: %f\n\n", prod.prezzo );
		}
	}
	fclose (fp);
}

int aumentacodice(char *cod)
{
	sprod prod;
	FILE *fp;
	int pos=-1;
	
	if ((fp=fopen("super.dat","r+"))==NULL){
		printf ("Errore nell'apertura del file");
		return -1;
	}

	while (!feof (fp)){
		fread (&prod, sizeof(prod),1,fp);
		if (!feof(fp)){
			pos ++;
			if (strcmp(prod.codice, cod)==0){
				prod.prezzo = prod.prezzo * 1.2;
				printf ("prezzo:\t%f", prod.prezzo);
				pos = pos * sizeof (prod);
				fseek(fp,pos,0);
				fwrite(&prod,sizeof(prod),1,fp);
				fclose (fp);
				return 1;
			}
		}
	}
	fclose (fp);
	return 0;
}

int aumentatutti(void)
{
	sprod prod;
	FILE *fp, *fp_supp;
	
	if ((fp=fopen("super.dat","r+"))==NULL){
		printf ("\n\nErrore nell'apertura del file\n\n");
		return 0;
	}

	if ((fp_supp=fopen("file_supporto.dat","a"))==NULL){
		printf ("\n\nErrore nell'apertura del file di supporto.\n\n");
		return 0;
	}

	while (!feof(fp)){	
		fread (&prod, sizeof(sprod),1,fp);
		if (!feof(fp)){
			prod.prezzo = prod.prezzo * 1.2;
			fwrite(&prod,sizeof(prod),1,fp_supp);
		}
	}

	fclose (fp);
	fclose (fp_supp);

	remove("super.dat");
	rename("file_supporto.dat", "super.dat");

	
	return 1;
}

int visualizzamarca(char *marca)
{
	sprod prod;
	FILE *fp;
	int n,trovato=0;
	if ((fp=fopen("super.dat","r"))==NULL){
		printf ("\n\nErrore nell'apertura del file\n\n");
		return 0;
	}
	
	while (!feof(fp)){	
		fread (&prod, sizeof(prod),1,fp);
		if (!feof(fp)){
			if(strcmp(prod.marca,marca)==0){
				trovato++;
				printf("\n%s %s %f %s\n\n",prod.codice,prod.descr,prod.prezzo,prod.marca);
			}
		}
	}

	fclose(fp);
	return trovato;
}


float prezzocodice(char *cod)
{
	sprod prod;
	FILE *fp;

	if ((fp=fopen("super.dat","r+"))==NULL){
		printf ("\n\nErrore nell'apertura del file\n\n");
		return 0;
	}

	while (!feof(fp)){	
		fread (&prod, sizeof(prod),1,fp);
		if (!feof(fp)){
			if(strcmp(prod.codice,cod)==0){
				fclose(fp);
				return prod.prezzo;
			}
		}
	}
	
	fclose(fp);
	
	return -1;
}


float calcolatotale()
{
FILE *fp;
float totale=0;
char cod[10];
fp=fopen("acquisto.txt","r");
while(fscanf(fp,"%s",cod)!=-1)
totale=totale+prezzocodice(cod);
fclose(fp);
return totale;
}
~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 05-09-2004, 18:53   #6
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
marfer hai capito le modiche che ho fatto?!

ps: qualcuno mi spiega o ha qualche link per i file di testo?!

~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 05-09-2004, 19:38   #7
marfer3
Member
 
Iscritto dal: Mar 2002
Messaggi: 142
domani le guardo con calma e ti faccio sapere. Grazie.
marfer3 è offline   Rispondi citando il messaggio o parte di esso
Old 05-09-2004, 19:51   #8
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
Quote:
Originariamente inviato da marfer3
domani le guardo con calma e ti faccio sapere. Grazie.
ok

~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 06-09-2004, 14:58   #9
Zorgolo
Member
 
Iscritto dal: Jul 2001
Messaggi: 63
uhz..
per prima cosa ti consiglio di usare anche la letterina magica "b" quando apri un file ... quindi fopen(...., "rb+") o "wb" o "rb" .. in base alle esigenze... questo specifica che il file dovrà essere aperto in modo binario.
Altra cosa : fread (&prod, sizeof(prod),1,fp);
usa fread(&prod,1,sizeof(prod),fp);
la differenza è che fread restituisce il "numero di elementi letti" ..
ovvero nel primo caso se per esempio la tua struttura fosse di 100 byte e fread riesce a leggerne solo 99 il risultato è 0 in quanto non è riuscito a leggere nessuna struttura completa.
Nel secondo caso il risultato sarà 99.
Sebbene "concettualmente" la tua scrittura è piu' corretta, trovo che sia più semplice fare un debug utilizzando invece la seconda "scrittura"
Zorgolo è 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...
SpaceX: un satellite ha fotografato il s...
36 idee regalo con offerte Amazon sotto ...
Sony assume il controllo dei Peanuts: Sn...
DJI Neo scende a 149€ su Amazon, in vers...
Scoperto un nuovo esopianeta che orbita ...
Blue Origin NS-37: successo per la missi...
Potrebbe essere stata rilevata una super...
La cometa interstellare 3I/ATLAS è...
Xiaomi 17 Ultra: l'autonomia non sarà un...
Il processo produttivo a 2 nm di TSMC è ...
L'atteso aggiornamento dei driver della ...
The Elder Scrolls VI nel 2029 e Fallout ...
Il Ryzen 7 9850X3D appare nel catalogo d...
Weekend pre natalizio Amazon, ecco tutte...
Prezzi giù su Oral-B iO: spazzolini elet...
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: 11:40.


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