Torna indietro   Hardware Upgrade Forum > Software > Programmazione

BOOX Picco: l'ebook reader minuscolo è una genialata, e si può attaccare allo smartphone
BOOX Picco: l'ebook reader minuscolo è una genialata, e si può attaccare allo smartphone
BOOX ha portato sul mercato Picco, un e-reader da 3,97 pollici che pesa 58 grammi e si aggancia al retro dello smartphone con un anello magnetico. Lo abbiamo usato con Pixel 11 Pro XL e iPhone 18 Pro per capire se un formato così ridotto regga la prova della lettura quotidiana
AMD EPYC Venice: dentro Zen 6, i SoC a 256 core e la sfida al costo della memoria
AMD EPYC Venice: dentro Zen 6, i SoC a 256 core e la sfida al costo della memoria
A Las Vegas AMD ha svelato i dettagli architetturali delle CPU EPYC di sesta generazione, note con il nome in codice Venice. Nuovi core Zen 6 e Zen 6c costruiti a 2 nanometri, fino a 256 core per socket, 16 canali di memoria, interfaccia PCI Express 6.0 e un'intera famiglia di proposte che va da Venice SP7 a Verano. Senza dimenticare la memoria, oggi la voce di costo più pesante in un server: AMD risponde con CXL 3.1 e con la tecnologia software MEXT, che porta la memoria flash dentro la gerarchia della DRAM.
HONOR Pad X9 Max recensione, schermo ultra large a meno di 400 euro
HONOR Pad X9 Max recensione, schermo ultra large a meno di 400 euro
HONOR Pad X9 Max mette un pannello IPS da 13 pollici con risoluzione 2,5K e refresh a 120 Hz davanti a una batteria da 10.100 mAh e a quattro altoparlanti. Il listino parte da 399,90 euro, per un progetto molto chiaro e ambizioso: schermo ampio, buon audio e giornate lontano dalla presa, a un prezzo che non pesa sul portafoglio
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 10-06-2011, 11:28   #1
tenbota87
Junior Member
 
Iscritto dal: Feb 2011
Messaggi: 21
[C]passaggio di parametri ad una funzione

Ciao a tutti!
Ho fatto una funzione all'interno di un programma ma evidentemente ho sbagliato qualcosa perché non riesco a farla andare..solitamente non ho mai avuto problemi a farne mentre questa qualche problema me lo crea ..riuscite a darmi una mano?!?
E' una cosa che impiega pochi minuti!
Grazie mille..vi allego il codice e segnalo in maiuscolo dove è la chiamata alla funzione e cosa deve fare!

Codice:
#include <stdio.h>		//Direttive al pre processore che ci permettono di includere
#include <string.h>		//gli haeder file,relativi a librerie standar.
#include <stdlib.h>
#include <limits.h>
#include <assert.h>
//#include "utils.h"		//Viene incluso l'header file da me creato, le "" indicano al
						//compilatore di cercare prima nella directory corrente.
						

// definizione della funzione ASSERT()  con stampa di un messaggio di errore 
#define ASSERT( condizionedaverificare, cosafare )	{ if ( !(condizionedaverificare) ) { printf cosafare; printf("\n"); assert( condizionedaverificare ); } }

						
						
						
						



struct lista{							//Dichiarazione della lista usata dalla funzione aggiuntiva
	char parola[257];					//Dichiarazione di un array di lunghezza massima 1024 adibito a contenere la parola
	int frequenza;						//Dichiarazione di una varibile adibita a contenere la frequenza della parola
	struct lista *next;					//Dichiarazione di un puntatore per lo spostamento all'interno della lista 
	};

/*	LA FUNZIONE!!
void inserisci_in_lista(struct lista *ptr,char buffer[],int conta)
{
		//inserisci in lista
			
				prev = NULL;
				temp = testa;		
				while(temp != NULL && strcmp(bufferLettura,temp->parola) != 0)
				{		
					prev = temp;
					temp = temp->next;									//Incremento il puntatore per avanzare nella scansione della lista			
				}
			
				
				if (temp == NULL)
				{
					
					nuovo=(struct lista*)malloc(sizeof(struct lista));	//Allocazione dinamica della memoria di una nuova cella della lista tramite la funzione malloc
					strncpy(nuovo->parola,bufferLettura,contaLettere);
					
					nuovo->frequenza=1;									//Impostazione della frequenza della parola a 1
					nuovo->next = NULL;
					if (testa != NULL)
						prev->next = nuovo;
					else 
						testa = nuovo;
					
				}
				else 
					temp->frequenza++;
						
}

	
	*/

void funzioneAusiliaria( unsigned char *nomeDelFile)
{	
/**
*Il primo passo dell'algoritmo della funzione conteggio_cento prevede la dichiarazione di tutte le variabili che occorrono per il suo svolgimento e infine la creazione del nuovo
*file dove successivamente verranno inserite le parole con le successive frequenze. 
*/
	FILE *fileTesto=NULL,*fpw=NULL ;						
	char *centoParole;
	char bufferLettura[257];
	char lettera;		
	int contaLettere = 0;	
	int contaParole=0;	
	struct lista *nuovo;
	struct lista *testa;
	struct lista *temp, *temp2, *prev;
	testa=NULL;

	centoParole = (char*)malloc(sizeof(char)*(strlen(nomeDelFile)+7));	
	strcpy(centoParole,nomeDelFile);										
	strcat(centoParole,".world");		
	
	
	printf("\nIl nome del file creato dalla funzione ausiliaria e': %s\n",centoParole);			
	fflush(stdout);
							
	fileTesto=fopen(nomeDelFile,"r");							//apertura del file di testo in modalità lettura
	ASSERT((fileTesto!=NULL),("\nErrore nell'apertura del file di testo!\n"));

	//controllo se il fileTesto è vuoto
	lettera=fgetc(fileTesto);
	
	if(feof(fileTesto))
	{
		printf("\nFile vuoto!");			
		fclose(fileTesto);					
		exit(1);
	}
	
	
	while(lettera != EOF)
	{
		if (lettera!=' ') {
			if (contaLettere < 256) {
				bufferLettura[contaLettere]=lettera;
			}
			contaLettere++;
			
		}
		else {
			if (contaLettere > 0 && contaLettere <= 256) 
			{	
			// * CHIAMATA DELLA FUNZIONE *
		
			// * FUNZIONE:
			//inserisci_in_lista(struct lista *testa,char bufferLettura[],int contaLettere);	
	
			//INIZIO DI CIò CHE DEVE FARE LA FUNZIONE:
				bufferLettura[contaLettere]='\0';
			
				prev = NULL;
				temp = testa;		
				while(temp != NULL && strcmp(bufferLettura,temp->parola) != 0)
				{		
					prev = temp;
					temp = temp->next;									//Incremento il puntatore per avanzare nella scansione della lista			
				}
			
				
				if (temp == NULL)
				{
				
						
					nuovo=(struct lista*)malloc(sizeof(struct lista));	//Allocazione dinamica della memoria di una nuova cella della lista tramite la funzione malloc
					strncpy(nuovo->parola,bufferLettura,contaLettere);
					
					nuovo->frequenza=1;									//Impostazione della frequenza della parola a 1
					nuovo->next = NULL;
					if (testa != NULL)
						prev->next = nuovo;
					else 
						testa = nuovo;
					
				}
				else 
					temp->frequenza++;				
			}	//FINE DI CIò CHE DEVE FARE LA FUNZIONE
			bufferLettura[0]='\0';
			contaLettere=0;
		}
		lettera=fgetc(fileTesto);
	}
	
	if (contaLettere > 0 && contaLettere <= 256)		//inserisci in lista
	{
		// * CHIAMATA DELLA FUNZIONE *
		
		// * FUNZIONE:
		//inserisci_in_lista(struct lista *testa,char bufferLettura[],int contaLettere);	
	
		//INIZIO DI CIò CHE DEVE FARE LA FUNZIONE:
			prev = NULL;
			temp = testa;		
			while(temp != NULL && strcmp(bufferLettura,temp->parola) != 0)
			{		
				prev = temp;
				temp = temp->next;									//Incremento il puntatore per avanzare nella scansione della lista			
			}
		
			
			if (temp == NULL)
			{
				
				
				nuovo=(struct lista*)malloc(sizeof(struct lista));	//Allocazione dinamica della memoria di una nuova cella della lista tramite la funzione malloc
				strncpy(nuovo->parola,bufferLettura,contaLettere);
				
				nuovo->frequenza=1;									//Impostazione della frequenza della parola a 1
				nuovo->next = NULL;
				if (testa != NULL)
					prev->next = nuovo;
				else 
					testa = nuovo;
				
			}
			else 
				temp->frequenza++;
				
		
	}
	//FINE DI CIò CHE DEVE FARE LA FUNZIONE


	//ordinamento lista
		printf("\n ordinamento lista");

	temp = testa;
	testa = NULL;
	
	
	
	while (temp != NULL)
	{
		temp2 = testa;
		prev = NULL;
		
		while (temp2 != NULL && temp->frequenza < temp2->frequenza)
		{
			prev = temp2;
			temp2 = temp2->next;
		}
		
		if (prev != NULL)
			prev->next = temp;
			
		else 
			testa = temp;
		
		prev = temp->next;
		temp->next = temp2;
		temp = prev;
		
			
		
	}
	printf("\n Stampa su file");
	//scrittura file 100 parole
	fpw=fopen(centoParole,"w");
	
	//utilizziamo prev per poter controllare la frequenza della centesima parola e delle successive.se hanno la stessa frequenza le stampiamo
	temp = testa;
	prev=temp;
	
	while (temp != NULL && contaParole<100)
	{
		fprintf(fpw,"%d %s\n", temp->frequenza, temp->parola);
		contaParole++;
		prev=temp;
		temp = temp->next;
	}
	
	
	
	//fare controllo su temp
	if(temp == NULL)
	{
		fclose(fpw);		
		fclose(fileTesto);	
		exit(0);	
	}
	while (prev->frequenza == temp->frequenza)
	{	
		fprintf(fpw,"%d %s\n", temp->frequenza, temp->parola);
	
		prev=temp;
		temp = temp->next;
	}
	

	
fclose(fpw);		
fclose(fileTesto);	
}
tenbota87 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


BOOX Picco: l'ebook reader minuscolo è una genialata, e si può attaccare allo smartphone BOOX Picco: l'ebook reader minuscolo è un...
AMD EPYC Venice: dentro Zen 6, i SoC a 256 core e la sfida al costo della memoria AMD EPYC Venice: dentro Zen 6, i SoC a 256 core ...
HONOR Pad X9 Max recensione, schermo ultra large a meno di 400 euro HONOR Pad X9 Max recensione, schermo ultra large...
Lenovo ThinkPad X1 Carbon Gen 14: il business ultraleggero si rinnova dall’interno Lenovo ThinkPad X1 Carbon Gen 14: il business ul...
Jabra Evolve3 85: le cuffie sia per l'intrattenimento che per il lavoro Jabra Evolve3 85: le cuffie sia per l'intratteni...
Leica M-A Hammertone e Leica M11-P Hamme...
L'IA non sostituisce la creatività...
Anche Formula E cambia il calendario per...
Defender contro BYD Ti 7: il giudice d&a...
32GB di RAM DDR4 a un prezzo sorprendent...
La nuova lavagna interattiva di LG arriv...
Lo smartphone Samsung passa da 16:9 a 21...
OPPO Pad 5 Pro arriva in Italia: display...
80 TOPS in un palmo di mano: il nuovo Mi...
Motorola Razr Flex: il pieghevole che sf...
NVIDIA, Jensen Huang lascia dopo lo scan...
Honor 700 Pro con Snapdragon 8 Gen 5 e 1...
Dentro una macchina del caffè c'&...
Microsoft Classroom: compiti, voti e Cop...
Huawei LUTERRA S2: inverter, batteria e ...
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: 18:21.


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