Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34
A Londra, per il trentennale dei Toughbook, Panasonic ha presentato il tablet G3 e il 2-in-1 34. Con Jon Tucker, a capo dell'ingegneria europea, abbiamo parlato di ciò che non si vede: batterie, antenne, porte seriali e accorgimenti nati sul campo
realme C100x, lo smartphone economico con la batteria da 7500 mAh. La recensione
realme C100x, lo smartphone economico con la batteria da 7500 mAh. La recensione
realme C100x scommette tutto, forse troppo, sulla batteria da 7500 mAh e sulla certificazione ArmorShell per farsi notare nella fascia più economica del mercato: lo abbiamo messo alla prova per capire a chi è rivolto questo smartphone che sacrifica un po' prestazioni, display e fotocamera per offrire l'autonomia migliore possibile a un prezzo decisamente contenuto
Star Wars Zero Company è l'erede di XCOM 2
Star Wars Zero Company è l'erede di XCOM 2
Bit Reactor porta nell’universo di Star Wars una struttura tattica che richiama apertamente XCOM 2, ma la arricchisce con legami tra i personaggi, progressione ruolistica, gestione della base e un sistema di combattimento costruito attorno a tre Punti Azione e alle risorse condivise della squadra
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: 2794
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: 16215
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


Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34 Panasonic, 30 anni di Toughbook: la "Bibbia...
realme C100x, lo smartphone economico con la batteria da 7500 mAh. La recensione realme C100x, lo smartphone economico con la bat...
Star Wars Zero Company è l'erede di XCOM 2 Star Wars Zero Company è l'erede di XCOM ...
Test ride Can-Am Origin: la moto elettrica che fa dimenticare il motore a scoppio (ma occhio all'autonomia) Test ride Can-Am Origin: la moto elettrica che f...
Logitech G325, G305 e G316 X: il tris per chi non vuole rinunciare a nulla, spendendo poco Logitech G325, G305 e G316 X: il tris per chi no...
Tutte le Offerte Prime anticipate: robot...
Procura di Sassari e Oxygen Forensics: i...
Duo-Man trasforma iPhone Duo in un Walkm...
Questa carta da parati produce elettrici...
Perseverance scopre su Marte rocce mai o...
Batterie allo stato solido, Gotion alza ...
Caviar presenta la Black Edition di iPho...
Il Buono, il Brutto, il Cattivo e Star W...
GTA 6, la mappa di gioco sarà div...
Tesla brevetta una 'Electric Fan Car' co...
Chi usa l'IA al lavoro: uno su tre lo fa...
Mac mini M5 Pro a 1.897€: 307 GB/s di ba...
QNAP presenta TS-432XeU, un nuovo NAS da...
Dreame Aqua10 Roller a 479€: nuovo minim...
Apple ha rinviato il piano di taglio di ...
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: 13:51.


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