Torna indietro   Hardware Upgrade Forum > Software > Programmazione

iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile
iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile
C'è tanta sostanza nel nuovo smartphone della Mela dedicato ai creator digitali. Nuovo telaio in alluminio, sistema di raffreddamento vapor chamber e tre fotocamere da 48 megapixel: non è un semplice smartphone, ma uno studio di produzione digitale on-the-go
Intel Panther Lake: i processori per i notebook del 2026
Intel Panther Lake: i processori per i notebook del 2026
Panther Lake è il nome in codice della prossima generazione di processori Intel Core Ultra, che vedremo al debutto da inizio 2026 nei notebook e nei sistemi desktop più compatti. Nuovi core, nuove GPU e soprattutto una struttura a tile che vede per la prima volta l'utilizzo della tecnologia produttiva Intel 18A: tanta potenza in più, ma senza perdere in efficienza
Intel Xeon 6+: è tempo di Clearwater Forest
Intel Xeon 6+: è tempo di Clearwater Forest
Intel ha annunciato la prossima generazione di processori Xeon dotati di E-Core, quelli per la massima efficienza energetica e densità di elaborazione. Grazie al processo produttivo Intel 18A, i core passano a un massimo di 288 per ogni socket, con aumento della potenza di calcolo e dell'efficienza complessiva.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 10-06-2011, 10: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


iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile iPhone 17 Pro: più di uno smartphone. &Eg...
Intel Panther Lake: i processori per i notebook del 2026 Intel Panther Lake: i processori per i notebook ...
Intel Xeon 6+: è tempo di Clearwater Forest Intel Xeon 6+: è tempo di Clearwater Fore...
4K a 160Hz o Full HD a 320Hz? Titan Army P2712V, a un prezzo molto basso 4K a 160Hz o Full HD a 320Hz? Titan Army P2712V,...
Recensione Google Pixel Watch 4: basta sollevarlo e si ha Gemini sempre al polso Recensione Google Pixel Watch 4: basta sollevarl...
Samsung è sempre più prota...
ChatGPT ha pregiudizi politici? Ecco cos...
Un solo iPhone rubato ha portato alla sc...
Xiaomi 17 Ultra sta arrivando: ecco come...
Il Motorola Edge 70 non ha più se...
Alcuni Galaxy S26 utilizzeranno il chip ...
Amazon, ecco i super sconti del weekend:...
Scovare un bug di sicurezza sui disposit...
Offerta Amazon su NordVPN: proteggi 10 d...
ECOVACS DEEBOT X8 PRO OMNI in offerta su...
Scope elettriche Tineco in offerta su Am...
Offerta Amazon sui robot EUREKA J15 Ultr...
Chrome disattiverà automaticament...
Tornano tutti e 4 i colori disponibili p...
Super sconto su iPhone 16: Amazon abbass...
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: 06:15.


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