Cosa fa questo programma?

cai

Nuovo Utente
2
0
Buonasera a tutti
Volevo chiedervi un aiuto perchè (sono ancora in alto mare) non capisco cosa faccia questo programma che è stato messo all'ultimo appello di informatica del mio corso (Ingegneria Biomedica).
Questo è il codice:

#include <stdio.h>
#include <string.h>
#define dim 5
int foo(char c, char * s, int l);
int main() {
char s[dim];
int s_len,out;
do{
printf("Inserire una stringa di massimo %d caratteri: ", dim);
scanf("%s",s);
s_len = strlen(s);
}while(s_len>dim);
out=foo(*s, s, s_len);
printf("-> %d \n", out);
return 0;
}
int foo(char c, char * s, int l){
if (l==0)
return 0;
if (c==(*s))
return foo(c, s+1, l-1) + 1;
else return foo(c, s+1, l-1);
}

Si descriva l’obiettivo del programma presentato e si spieghi cosa fa la funzione
foo.

Grazie mille
 
Ultima modifica:

1nd33d

Utente Attivo
653
279
CPU
Intel i5 3570K @ 4,5Ghz
Dissipatore
Scythe Mugen 2
Scheda Madre
Gigabyte Z77X-UD3H
HDD
Samsung 840 PRO 256GB + Sandisk Ultra 250GB + Sandisk Plus 960GB
RAM
2x8GB Crucial Ballistix Tactical @2000Mhz CL9
GPU
XFX RX480 GTR Black Edition
Audio
Auzentech X-Fi Forte
Monitor
AOC i2369VW
PSU
Seasonic P660
Case
eh?
Periferiche
Razer Naga HEX v2
OS
Windows 10 64bit - Linux Mint 18
Così ad occhio mi pare che la funzione ricorsiva foo conti il numero di ripetizioni della prima lettere della stringa letta.
Certo il processo di input è abbastanza insicuro, scanf di input più grandi della variabile di destinazione senza controlli...
 
  • Mi piace
Reazioni: Lidoboy e cai

cai

Nuovo Utente
2
0
Effettivamente compliandolo dovrebbe contare quante volte si ripete la prima lettera; penso che non ci fossero controlli o raffinamenti eccessivi proprio perchè l'obiettivo era che noi riconoscessimo la funzione ricorsiva (cosa che ovviamente non ho riconosciuto..:() e cosa facesse.
Ti ringrazio per l'aiuto!!
 

Ci sono discussioni simili a riguardo, dai un'occhiata!

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili