Tema d'esame...

di il
1 risposte

Tema d'esame...

Ciao ragazzi, in vista dell'esame di informatica sto studiando un po' gli esami passati e mi sono imbattuto in questo
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int max(int s1,int s2){if(s1>s2) return s1; else return s2;} //questa funzione riceve due interi e ritorna il più grande
char *s(char *s1, char *s2) //questa funzione riceve due puntatori a carattere e ritorna un puntatore a carattere
{char *r; int c=0; int i; //dichiara un puntatore a carattere, un intero c inizializzato a 0 e un intero i
r=(char *)malloc(sizeof(char)*max(strlen(s1),strlen(s2))+1); //alloca su r dinamicamente un sizeof di char * la più grande della lungheza tra str1 e str2 +1 ? terminatore di linea?
for (i=0;s1[i]!='\0';i++) //ciclo for inizializza i a 0, finchè l'elemento i-esimo della stringa è diverso dal terminatore cicla, cicla tutta la stringa che viene passata
{ r[i]=((s1[i]-'a')+(s2[i]-'a')+c)%2+'a'; c=((s1[i]-'a')+(s2[i]-'a')+c)/2; } //ciclando assegna all'iesimo elemento 

r[i]=c+'a'; i++; r[i]='\0'; return r;
}
int main(int argc, char **argv)
{printf("%s\n", s("ddab","eflm")); printf("%s\n", s("abab","baba")); printf("%s\n", s("aaaa","bbbb"));
return 0;
}
a parte che il mio prof è malato vabhe! non ho capito tanto la parte in cui dice
 r[i]=((s1[i]-'a')+(s2[i]-'a')


cioè somma delle lettere? non ho ben capito se potete spiegarmi un pochino ve ne sarei grato! ciao!

1 Risposte

  • Re: Tema d'esame...

    Ma al tuo prof gli spazi li vengono concessi solo coi fondi della scuola? O vuole raggiungere il record di codice incomprenssibile?
    Cmq guardando la tabella ASCII ti accorgerai che s - 'a' li da la distanza della lettera i-esima dalla lettera a.
Devi accedere o registrarti per scrivere nel forum
1 risposte