#include <stdio.h>
#include <string.h>

/*
 * Semplici esempi di funzioni 
 */

/* Somma di due interi */
int somma(int x, int y);

/* Somma di un array */
int asomma(int array[], int lunghezza); 

/* Lunghezza di una stringa */
int strlen1(char *s);

/* Inversione di una stringa */
void reverse(char *s);

int main(){
	int a=2, b=4;
	char s[10]="pippo";
	char s2[128];
	int arr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

	
	/* Somma di due interi 
	 * a = a+b-1; */
	printf("main: chiamata a somma(%d, %d)\n", a, b);
	printf("main: risultato della chiamata: %d\n", somma(a,b));
	a=somma(a,b)-1;

	/* Somma di un array */
	a=asomma(arr,10);
	printf("main: asomma(arr,10)=%d\n", a);

	/* Lunghezza di una stringa:
	  valori: [ 'p', 'i', 'p', 'p', 'o', '\0' ] 
	  indici:    0    1    2    3    4     5
	*/
	printf("Lunghezza di \"pippo\": %d\n", strlen(s));

	/* Inversione di una stringa */
	scanf("%s", &s2[0]);
	reverse(s2);
	printf("%s\n", s2);
	return 0;
}


int somma(int x, int y) {
	printf("somma: %d+%d=%d\n", x, y, x+y);
	return x+y;
}


int asomma(int array[], int lunghezza){
	int risultato=0;
	int i;
	for(i=0; i<lunghezza; i++)
		risultato+=array[i];
	return risultato;
}


int strlen1(char *s){
	int count;
	for(count=0; s[count]!='\0'; count++);
	return count;
}

void swap(char *a, char *b){
	char tmp=*b;
	*b=*a;
	*a=tmp;
}

void reverse(char *s){
	int l=strlen(s);
	int i;
	char tmp;

	for(i=l-1; i>=l/2; i--){
	/*
		tmp=s[i]; 
		s[i]=s[l-1-i];
		s[l-1-i]=tmp;
	*/
		swap(&s[i],&s[l-1-i]);
	}
	
	return;
}
