Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI
Snowflake ha presentato diverse novità per la sua piattaforma legate all'intelligenza artificiale. Quella forse più eclatante è una collaborazione con OpenAI, ma non mancano diverse nuove funzionalità che rendono la piattaforma più flessibile e in grado di rispondere meglio alle esigenze in continuo cambiamento delle aziende
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI
Con velocità teoriche fino a 11 Gbps, gestione tramite app intelligente e protezione avanzata dei dispositivi, Roamii BE Pro porta il Wi‑Fi 7 tri‑band nelle abitazioni più esigenti. Un sistema Wi-Fi Mesh proposto da MSI allo scopo di garantire agli utenti una rete fluida e continua capace di sostenere streaming 8K, gaming competitivo e le applicazioni moderne più esigenti in termini di banda
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi
Mate X7 rinnova la sfida nel segmento dei pieghevoli premium puntando su un design ancora più sottile e resistente, unito al ritorno dei processori proprietari della serie Kirin. L'assenza dei servizi Google e del 5G pesa ancora sull'esperienza utente, ma il comparto fotografico e la qualità costruttiva cercano di compensare queste mancanze strutturali con soluzioni ingegneristiche di altissimo livello
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 04-07-2006, 02:27   #1
alebertaz
Senior Member
 
L'Avatar di alebertaz
 
Iscritto dal: Aug 2004
Città: Padova
Messaggi: 1870
[C] Qualcuno sa risolvere quest'esercizio in C?

Ecco il testo (grazie x chi mi può aiutare):

Scrivere una funzione ricorsiva occPorzFinale che, data una lista semplice di stringhe, una stringa s e un numero positivo n (> 0) calcola il numero di occorrenze della stringa nella porzione finale della lista specificata dal numero n. Il prototipo della funzione è: int occPorzFinale(Lista str l, char *s, int n, int *distFine) dove in distFine è restituita la lunghezza della lista.
Deve essere dichiarato il tipo utilizzato per definire le liste. Non si possono usare funzioni ausiliarie n´e variabili globali nè variabili static.

Esempio:
l = [Vedi, in, questi, silenzi, in, cui, le,cose]
occPorzFinale(l, in,4,&distFine) = 1
occPorzFinale(l, in,3,&distFine) = 0


Ecco il codice, senza la funzione...

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

typedef struct elem_s {
        char *val;
        struct elem_s * next;
        } elem_str;

typedef elem_str * Lista_str;

int occPorzFinale(Lista_str l, char *s, int n, int *distFine) {}


int main() {
    Lista_str a=(elem_str*)malloc(sizeof(elem_str));
    Lista_str b=(elem_str*)malloc(sizeof(elem_str));
    Lista_str c=(elem_str*)malloc(sizeof(elem_str));
    Lista_str d=(elem_str*)malloc(sizeof(elem_str));
    int distFine=0;
    a->val="silenzi";
    a->next=b;
    b->val="in";
    b->next=c;
    c->val="cui";
    c->next=d;
    d->val="cose";
    d->next=NULL;
    //printf("%d",distFine);
    printf("%d", occPorzFinale(a,"in",2,&distFine));
    }
alebertaz è offline   Rispondi citando il messaggio o parte di esso
Old 04-07-2006, 09:24   #2
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2787
Quote:
Originariamente inviato da alebertaz
calcola il numero di occorrenze della stringa nella porzione finale della lista specificata dal numero n.
Non ho capito questa parte, cosa intende dire?
wingman87 è online   Rispondi citando il messaggio o parte di esso
Old 04-07-2006, 09:56   #3
alebertaz
Senior Member
 
L'Avatar di alebertaz
 
Iscritto dal: Aug 2004
Città: Padova
Messaggi: 1870
Quote:
Originariamente inviato da wingman87
Non ho capito questa parte, cosa intende dire?
Cioè se la lista è:
l = Vedi-> in-> questi-> silenzi-> in-> cui-> le->cose->NULL
e chiamo la funzione occPorzFinale(l, in,4,&distFine)
n quindi è =4, devo considerare solo la porzione di lista degli ultimi 4 elementi ovvero
in->cui->le->cose->NULL in cui la parola in compare.
In questo caso la funzione dà esito 1 perchè "in" viene trovato.
Se chiamo invece occPorzFinale(l, in,3,&distFine), in non viene trovato perchè non esiste nella porzione finale di lista cui->le->cose->NULL
In distFine và memorizzato invece la lunghezza della lista cioè il valore 8.
alebertaz è offline   Rispondi citando il messaggio o parte di esso
Old 04-07-2006, 10:00   #4
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16213
Quote:
Originariamente inviato da alebertaz
Scrivere una funzione ricorsiva occPorzFinale che, data una lista semplice di stringhe, una stringa s e un numero positivo n (> 0) calcola il numero di occorrenze della stringa nella porzione finale della lista specificata dal numero n. Il prototipo della funzione è: int occPorzFinale(Lista str l, char *s, int n, int *distFine) dove in distFine è restituita la lunghezza della lista.
Deve essere dichiarato il tipo utilizzato per definire le liste. Non si possono usare funzioni ausiliarie n´e variabili globali nè variabili static.
Sembra un classico esercizio da esame.
Perche' non provi a farlo tu, ci dici dove incontri difficolta', e vediamo di darti una mano? In questo modo, il lavoro rimarrebbe comunque in gran parte tu, e tu impareresti molto di piu' che facendotelo semplicemente risolvere da qualcun altro

Intanto, ti faccio qualche osservazione sul codice:
Quote:
Esempio:
l = [Vedi, in, questi, silenzi, in, cui, le,cose]
occPorzFinale(l, in,4,&distFine) = 1
Casomai: occPorzFinale(l,"in",4,&distFine)

Quote:
Codice:
    a->val="silenzi";
Fa' attenzione: assegnare a->val in questo modo va bene solo perche' la stringa non verra' modificata in seguito. Altrimenti, dovresti allocare strlen("silenzi")+1 char a partire da a, ed effettuare strcpy(a,"silenzi").

Il resto del codice, grosso modo, andava bene.
Per occPorzFinale, secondo me te la cavi con le funzioni di libreria dichiarate in string.h: devi solo fare un po' di attenzione.
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Chi scherza col fuoco si brucia.
Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici
REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu
Ziosilvio è offline   Rispondi citando il messaggio o parte di esso
Old 04-07-2006, 10:05   #5
Furla
Senior Member
 
Iscritto dal: Feb 2004
Messaggi: 1454
dunque, se ho capito il problema, la funzione dovrebbe semplicemente vedere con un blocco if se l'ultimo elemento corrisponde alla stringa cercata, per poi richiamare se stessa, operando sulla lista di distFine - 1 elementi (ovvero controllando l'elemento precedente), e fermandosi quando si è autorichiamata n volte.

non so il c, ti faccio un algoritmo generico "visualbasiccheggiante":

occPorzFinale(Lista_str l, char *s, int n, int *distFine)
if n = 0 then
return 0
else
. if l(*distFine) = *s then
... return occPorzFinale(l, s, n - 1, int distFine - 1) + 1
. else
... return occPorzFinale(l, s, n - 1, distFine - 1) + 0
. endif
endif
Furla è offline   Rispondi citando il messaggio o parte di esso
Old 04-07-2006, 10:08   #6
alebertaz
Senior Member
 
L'Avatar di alebertaz
 
Iscritto dal: Aug 2004
Città: Padova
Messaggi: 1870
Quote:
Originariamente inviato da Ziosilvio
Sembra un classico esercizio da esame.
Perche' non provi a farlo tu, ci dici dove incontri difficolta', e vediamo di darti una mano? In questo modo, il lavoro rimarrebbe comunque in gran parte tu, e tu impareresti molto di piu' che facendotelo semplicemente risolvere da qualcun altro
Esatto, è un esercizio d'esame...

Questà è la mia bozza di funzione...ovviamente non funziona...sapete darmi una mano?

Codice:
int occPorzFinale(Lista_str l, char *s, int n, int *distFine) {
    if (!l) return 0; 
    if ((*distFine)<n) {
         *distFine=*distFine+1;
         if (strcmp(l->val, s)==0)
            return 1;
         else
             return 0;
             }
         return 0+occPorzFinale(l->next,s,n,distFine);
    }
Quote:
Intanto, ti faccio qualche osservazione sul codice:

Casomai: occPorzFinale(l,"in",4,&distFine)
si ho notato, effettivamente è un errore del testo...

Quote:
Fa' attenzione: assegnare a->val in questo modo va bene solo perche' la stringa non verra' modificata in seguito. Altrimenti, dovresti allocare strlen("silenzi")+1 char a partire da a, ed effettuare strcpy(a,"silenzi").
li ho assegnati in questo modo perchè la lista andava solamente visitata
Quote:
Il resto del codice, grosso modo, andava bene.
Per occPorzFinale, secondo me te la cavi con le funzioni di libreria dichiarate in string.h: devi solo fare un po' di attenzione.
và usato infatti strcmp per confrontare l'uguaglianza fra due stringhe
alebertaz è offline   Rispondi citando il messaggio o parte di esso
Old 04-07-2006, 10:13   #7
alebertaz
Senior Member
 
L'Avatar di alebertaz
 
Iscritto dal: Aug 2004
Città: Padova
Messaggi: 1870
Quote:
Originariamente inviato da Furla
dunque, se ho capito il problema, la funzione dovrebbe semplicemente vedere con un blocco if se l'ultimo elemento corrisponde alla stringa cercata, per poi richiamare se stessa, operando sulla lista di distFine - 1 elementi (ovvero controllando l'elemento precedente), e fermandosi quando si è autorichiamata n volte.
esatto


Quote:
if l(*distFine) = *s then
distFine credo che inizialmente valga 0, quindi aumenta man mano che la funzione scorre la lista...

Ultima modifica di alebertaz : 04-07-2006 alle 10:16.
alebertaz è offline   Rispondi citando il messaggio o parte di esso
Old 04-07-2006, 11:18   #8
Furla
Senior Member
 
Iscritto dal: Feb 2004
Messaggi: 1454
Quote:
dove in distFine è restituita la lunghezza della lista.


ah, ovviamente per l(distFine) io intendo il distFine-esimo elemento della lista, se l'index parte da 0 dovremo usare l(distFine - 1)

Ultima modifica di Furla : 04-07-2006 alle 11:21.
Furla è offline   Rispondi citando il messaggio o parte di esso
Old 04-07-2006, 11:22   #9
alebertaz
Senior Member
 
L'Avatar di alebertaz
 
Iscritto dal: Aug 2004
Città: Padova
Messaggi: 1870
Quote:
Originariamente inviato da Furla


ah, ovviamente per l(distfine) intendo il distFine-esimo elemento della lista, se l'index parte da 0 dovremo usare l(distfine - 1)
è la funzione che deve calcolare distFine, che inizialmente vale 0
alebertaz è offline   Rispondi citando il messaggio o parte di esso
Old 04-07-2006, 11:44   #10
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
Quote:
Originariamente inviato da alebertaz
Codice:
int main() {
    Lista_str a=(elem_str*)malloc(sizeof(elem_str));
    Lista_str b=(elem_str*)malloc(sizeof(elem_str));
    Lista_str c=(elem_str*)malloc(sizeof(elem_str));
    Lista_str d=(elem_str*)malloc(sizeof(elem_str));
    int distFine=0;
    a->val="silenzi";
    a->next=b;
    b->val="in";
    b->next=c;
    c->val="cui";
    c->next=d;
    d->val="cose";
    d->next=NULL;
    //printf("%d",distFine);
    printf("%d", occPorzFinale(a,"in",2,&distFine));
    }
ma il main mi auguro sia roba tua e non testo dell'esame
vabbé, in ogni caso se dice lista devi fare una lista.
Tu invece fai n elementi a,b,c ... e poi passi solo "a" alla funzione
io farei:
Codice:
   elem_str list[] =
   {
      { "pippo", NULL },
      { "pluto", NULL },
      { "pape" , NULL },
      { "papi" , NULL },
      { "papin", NULL },
      { "papi" , NULL },
      { ""     , NULL }
   };
dove "" segna la fine della lista.
poi setto i puntatori next della lista:
Codice:
   int i = 0;

   while(1)
      if (strlen( list[i].val) )
         list[i].next = &list[++i];
      else break;
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z Mb - Win Eight SP (1 > yours) 16 Valve
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 04-07-2006, 11:53   #11
alebertaz
Senior Member
 
L'Avatar di alebertaz
 
Iscritto dal: Aug 2004
Città: Padova
Messaggi: 1870
Quote:
Originariamente inviato da trallallero
ma il main mi auguro sia roba tua e non testo dell'esame
vabbé, in ogni caso se dice lista devi fare una lista.
Tu invece fai n elementi a,b,c ... e poi passi solo "a" alla funzione
io farei:
Codice:
   elem_str list[] =
   {
      { "pippo", NULL },
      { "pluto", NULL },
      { "pape" , NULL },
      { "papi" , NULL },
      { "papin", NULL },
      { "papi" , NULL },
      { ""     , NULL }
   };
dove "" segna la fine della lista.
poi setto i puntatori next della lista:
Codice:
   int i = 0;

   while(1)
      if (strlen( list[i].val) )
         list[i].next = &list[++i];
      else break;
si, il main l'ho fatto io per fare un pò di prove...

la lista deve essere implementata usando questa struttura dati senza indicizzazione:

Codice:
typedef struct elem_s {
        char *val;
        struct elem_s * next;
        } elem_str;

typedef elem_str * Lista_str;
alebertaz è offline   Rispondi citando il messaggio o parte di esso
Old 04-07-2006, 12:11   #12
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
Quote:
Originariamente inviato da alebertaz
la lista deve essere implementata usando questa struttura dati senza indicizzazione:
e dove sta scritto ? non hai mandato tutta la traccia allora ?
comunque una lista é intesa come 1 oggetto contenente una serie di valori.
Tu invece stai facendo n liste contenenti 1 valore.
se fai tante liste "a","b","c","d","e",... e poi
chiami la funzione passando solo "a" come fa la funzione
a sapere cosa c'é dentro "b","c", ... ?
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z Mb - Win Eight SP (1 > yours) 16 Valve
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 04-07-2006, 12:37   #13
alebertaz
Senior Member
 
L'Avatar di alebertaz
 
Iscritto dal: Aug 2004
Città: Padova
Messaggi: 1870
Quote:
Originariamente inviato da trallallero
e dove sta scritto ? non hai mandato tutta la traccia allora ?
comunque una lista é intesa come 1 oggetto contenente una serie di valori.
Tu invece stai facendo n liste contenenti 1 valore.
se fai tante liste "a","b","c","d","e",... e poi
chiami la funzione passando solo "a" come fa la funzione
a sapere cosa c'é dentro "b","c", ... ?
la struttura lista contiene una stringa e il puntatore ad un altro oggetto lista
a e b sono due oggetti lista elem_str.
La lista composta da a e b può essere scritta così:
Lista_str lista=a;

Per scorrere tutta la lista:
while (lista) {
//fai qualcosa
lista=lista->next;
}

...
alebertaz è offline   Rispondi citando il messaggio o parte di esso
Old 04-07-2006, 12:58   #14
Andlea
Senior Member
 
Iscritto dal: Nov 2004
Messaggi: 357
Quote:
Originariamente inviato da alebertaz
la struttura lista contiene una stringa e il puntatore ad un altro oggetto lista
a e b sono due oggetti lista elem_str.
La lista composta da a e b può essere scritta così:
Lista_str lista=a;
Quello che trallallero vuol dire è che tu hai dichiarato due liste distinte, legate tra loro
quando vuoi aggiungere un elemento ad una linked list, devi allocare memoria per un ELEMENTO, non per una lista di elementi come fai tu. Dopo aver allocato l'elemento ed averlo definito, ne passi l'indirizzo al puntatore next.
Per inserire l'elemento successivo farai un lista=lista->next; avendo cura di mantenere una variabile con il puntatore alla radice della lista
In definitiva la struttura tipo sarà UN puntatore all'elemento corrente della lista, UN puntatore alla radice della lista, UN puntatore all'elem_str che verrà allocato ad ogni inserimento

Ultima modifica di Andlea : 04-07-2006 alle 13:01.
Andlea è offline   Rispondi citando il messaggio o parte di esso
Old 04-07-2006, 13:28   #15
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
Quote:
Originariamente inviato da Andlea
Quello che trallallero vuol dire è che tu hai dichiarato due liste distinte, legate tra loro
quando vuoi aggiungere un elemento ad una linked list, devi allocare memoria per un ELEMENTO, non per una lista di elementi come fai tu. Dopo aver allocato l'elemento ed averlo definito, ne passi l'indirizzo al puntatore next.
Per inserire l'elemento successivo farai un lista=lista->next; avendo cura di mantenere una variabile con il puntatore alla radice della lista
In definitiva la struttura tipo sarà UN puntatore all'elemento corrente della lista, UN puntatore alla radice della lista, UN puntatore all'elem_str che verrà allocato ad ogni inserimento
forse ho dato per scontato qualcosa ?
eppure ho fatto anche il professore
mi spiace alebertaz, se si potesse con carta e penna (o lavagna e gesso) sarebbe tutto cosí semplice
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z Mb - Win Eight SP (1 > yours) 16 Valve
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 04-07-2006, 14:44   #16
uReverendo
Member
 
L'Avatar di uReverendo
 
Iscritto dal: May 2006
Messaggi: 69
Io l'ho risolto ragionando in questo modo:

- Prima di tutto ho trovato il modo di contare il numero di elementi nella lista;
- Poi ho cercato di contare le occorrenze della stringa nella lista;
- Infine ho preso solo le occorrenze nelle n posizioni finali.
Mettendo tutto insieme ecco cosa mi è uscito:

Codice:
int occPorzFinale(Lista_str l, char *s, int n, int *distFine)
{

	int c = 0;	             // Conta le occorrenze della stringa
	int intPosCorr;      // Salva la posizione corrente nella lista 
	
	// Controlla che la lista non sia finita
	if(l != NULL)
	{
		// Aggiorna il numero di elementi della lista
		(*distFine)++;
		// Salva il numero di elementi
		intPosCorr = (*distFine);
		// Chiama nuovamente la funzione
		c = occPorzFinale(l->next, s, n, distFine);
		// distFine ora contiene il numero totale di elementi
		// c contiene le occorrenze trovate finora

		// Controlla che la stringa nella posizione corrente della lista sia uguale
		// a quella cercata e controlla anche che essa si trovi negli ultimi n elementi
		// della lista
		if( (strcmp(l->val, s) == 0) && ((*distFine)-intPosCorr+1 <= n) )
			// Un'altra occorrenze trovata!!!
			c++;
	}

	// Restituisce le occorrenze trovate finora
	return c;
}
uReverendo è offline   Rispondi citando il messaggio o parte di esso
Old 04-07-2006, 15:03   #17
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
AAAAAAAAAAAAAAAAAAAAAAH!!!!
ho fatto un errore!

Quote:
Originariamente inviato da trallallero
Codice:
   int i = 0;

   while(1)
      if (strlen( list[i].val) )
         list[i].next = &list[++i];
      else break;
ancora con 'sti errori
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z Mb - Win Eight SP (1 > yours) 16 Valve
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 04-07-2006, 15:31   #18
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
Quote:
Originariamente inviato da uReverendo
Io l'ho risolto ragionando in questo modo:

- Prima di tutto ho trovato il modo di contare il numero di elementi nella lista;
- Poi ho cercato di contare le occorrenze della stringa nella lista;
- Infine ho preso solo le occorrenze nelle n posizioni finali.
Mettendo tutto insieme ecco cosa mi è uscito:

Codice:
int occPorzFinale(Lista_str l, char *s, int n, int *distFine)
{

	int c = 0;	             // Conta le occorrenze della stringa
	int intPosCorr;      // Salva la posizione corrente nella lista 
	
	// Controlla che la lista non sia finita
	if(l != NULL)
	{
		// Aggiorna il numero di elementi della lista
		(*distFine)++;
		// Salva il numero di elementi
		intPosCorr = (*distFine);
		// Chiama nuovamente la funzione
		c = occPorzFinale(l->next, s, n, distFine);
		// distFine ora contiene il numero totale di elementi
		// c contiene le occorrenze trovate finora

		// Controlla che la stringa nella posizione corrente della lista sia uguale
		// a quella cercata e controlla anche che essa si trovi negli ultimi n elementi
		// della lista
		if( (strcmp(l->val, s) == 0) && ((*distFine)-intPosCorr+1 <= n) )
			// Un'altra occorrenze trovata!!!
			c++;
	}

	// Restituisce le occorrenze trovate finora
	return c;
}
ottima soluzione
ma per farla funzionare correttamente la riga in neretto é:
Codice:
if( (strcmp(l->val, s) == 0) && ((*distFine)-intPosCorr >= n) )
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z Mb - Win Eight SP (1 > yours) 16 Valve
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 04-07-2006, 19:10   #19
alebertaz
Senior Member
 
L'Avatar di alebertaz
 
Iscritto dal: Aug 2004
Città: Padova
Messaggi: 1870
Quote:
Originariamente inviato da uReverendo
Io l'ho risolto ragionando in questo modo:

- Prima di tutto ho trovato il modo di contare il numero di elementi nella lista;
- Poi ho cercato di contare le occorrenze della stringa nella lista;
- Infine ho preso solo le occorrenze nelle n posizioni finali.
Mettendo tutto insieme ecco cosa mi è uscito:

Codice:
int occPorzFinale(Lista_str l, char *s, int n, int *distFine)
{

	int c = 0;	             // Conta le occorrenze della stringa
	int intPosCorr;      // Salva la posizione corrente nella lista 
	
	// Controlla che la lista non sia finita
	if(l != NULL)
	{
		// Aggiorna il numero di elementi della lista
		(*distFine)++;
		// Salva il numero di elementi
		intPosCorr = (*distFine);
		// Chiama nuovamente la funzione
		c = occPorzFinale(l->next, s, n, distFine);
		// distFine ora contiene il numero totale di elementi
		// c contiene le occorrenze trovate finora

		// Controlla che la stringa nella posizione corrente della lista sia uguale
		// a quella cercata e controlla anche che essa si trovi negli ultimi n elementi
		// della lista
		if( (strcmp(l->val, s) == 0) && ((*distFine)-intPosCorr+1 <= n) )
			// Un'altra occorrenze trovata!!!
			c++;
	}

	// Restituisce le occorrenze trovate finora
	return c;
}

Ottimo esordio nel forum uReverendo
Domani con calma controllo
Grazie a tutti per l'aiuto
alebertaz è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI Snowflake porta l'IA dove sono i dati, anche gra...
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo M...
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi Recensione HUAWEI Mate X7: un foldable ottimo, m...
Nioh 3: souls-like punitivo e Action RPG Nioh 3: souls-like punitivo e Action RPG
Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti Test in super anteprima di Navimow i220 LiDAR: i...
Pokémon Pokopia: la durata della ...
UBS taglia centinaia di posti in Svizzer...
Samsung invia i primi sample di memoria ...
Xbox Game Pass per PC potrebbe aumentare...
Primo test con Dacia Spring 2026: motore...
Italia sempre più digitale, anche...
Tutte le offerte Amazon di oggi: 13 novi...
CD Projekt RED punta sull'Intelligenza A...
Offerte Oral-B iO su Amazon: spazzolini ...
Consegne sempre più rapide: Amazo...
Epic introduce l'anticheat di livello ke...
Google Gemini sfruttato da hacker di Sta...
Braun taglia i prezzi su Amazon: dai ras...
Helldivers al cinema: Jason Momoa nel ca...
Gli occhiali AI fanno volare EssilorLuxo...
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: 14:44.


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