Torna indietro   Hardware Upgrade Forum > Software > Programmazione

L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026
L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026
La parola d'ordine al Nextcloud Summit 2026, che si è tenuto a Monaco, è stata "sovranità". Non come è spesso usato questo termine in politica ma, al contrario, come capacità positiva di decidere il proprio destino tecnologico, con modalità collaborative e aperte. L'Europa dice già molto nel mondo open source, che viene visto come mezzo per ottenere la tanto agognata autonomia digitale
Dreame X60 Pro Ultra Complete: i bracci si estendono sempre di più
Dreame X60 Pro Ultra Complete: i bracci si estendono sempre di più
Dreame X60 Pro Ultra Complete implementa due bracci estensibili, per spazzola e moccio, che si spingono ben oltre quanto visto sino ad oggi permettendo una pulizia di casa ancor più capillare e precisa
TCL 65C8L, la recensione del SQD-Mini LED da 4400 nit misurati
TCL 65C8L, la recensione del SQD-Mini LED da 4400 nit misurati
La tecnologia SQD-Mini LED di TCL arriva sul taglio da 65 pollici con la serie C8L: 2040 zone, pannello WHVA 2.0 e un picco che alle rilevazioni delle sonde tocca i 4400 nit nel profilo Filmmaker e un HDR quasi perfetto
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 04-07-2006, 01: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, 08:24   #2
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2790
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 è offline   Rispondi citando il messaggio o parte di esso
Old 04-07-2006, 08: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, 09:00   #4
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16214
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, 09: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, 09: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, 09: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 09:16.
alebertaz è offline   Rispondi citando il messaggio o parte di esso
Old 04-07-2006, 10: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 10:21.
Furla è offline   Rispondi citando il messaggio o parte di esso
Old 04-07-2006, 10: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, 10: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, 10: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, 11: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, 11: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, 11: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 12:01.
Andlea è offline   Rispondi citando il messaggio o parte di esso
Old 04-07-2006, 12: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, 13: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, 14: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, 14: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, 18: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


L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026 L'Europa conta nella tecnologia e può ess...
Dreame X60 Pro Ultra Complete: i bracci si estendono sempre di più Dreame X60 Pro Ultra Complete: i bracci si esten...
TCL 65C8L, la recensione del SQD-Mini LED da 4400 nit misurati TCL 65C8L, la recensione del SQD-Mini LED da 440...
MSI Maestro 500 Wireless: ANC e 90 ore di autonomia a 70 euro MSI Maestro 500 Wireless: ANC e 90 ore di autono...
NL-LC1 è il primo dissipatore a liquido AIO di Noctua: silenzio è la parola d'ordine NL-LC1 è il primo dissipatore a liquido A...
Engwe O20 Boost: abbiamo provato in ante...
UWANT V800: addio al rullo rotante, l’as...
Keenetic Stellar 6 porta il WiFi 6 negli...
Instagram spinge sul formato orizzontale...
DMA, l'UE verso la designazione di AWS e...
Dalla fisica quantistica alla fibra: il ...
TikTok, il 59% dei video è AI Slop, 'sch...
Batterie stampate in 3D: la forma libera...
Honor X80 Pro Max ufficiale: vi bastano ...
HONOR Watch 6: batteria infinita, modali...
Windows 11, addio alle ricerche sul web:...
La vera sfida dell’IA non è adott...
Signal contro l'AI agentica: dare ai cha...
Amazon: l'human-in-the-loop non basta a ...
HONOR 600 Lite: design in metallo e batt...
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: 22:55.


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