Accedi per seguire   
Seguaci 0
spiug

[c] Esercitazione 5

3 messaggi in questa discussione

Tutti consegnati e funzionanti ;-) :)

Esercizio 1

Scrivere una funzione char *cerca_carattere(char a[ ],char c, int dim) che,

dato un array di caratteri e un valore c, determini se tale valore è

presente nell’array. La funzione restituisce un puntatore al primo

elemento dell’array che contiene il carattere c se tale elemento esiste,

altrimenti restituisce il valore NULL.

char *cerca_carattere(char a[ ],char c, int dim){	  int i=0;	  int trovata=0;	   do {		  if (a[i]==c)			  trovata=1;		  else			  i++;	  }	  while (i<dim && trovata!=1);			if (trovata==1) {		  printf ("Trovata la lettera per la prima volta al posto %d all'indirizzo di memoria %d\n",i+1,&a[i]);		  return (&a[i]);		  }		 else		  printf ("Lettera non trovata\n");			return NULL;	}										  

Esercizio 2

Scrivere una funzione void inverti (int a[ ], int dim) che, dato un array di

interi scambia il primo elemento con l’ultimo, il secondo con il penultimo,

ecc…. È richiesto che la funzione usi l’aritmetica dei puntatori al posto

dell’operatore [ ].

void inverti (int a[ ], int dim) {	  int i;	  int* pa;	  int tmp;			pa=a;			for (i=0; i<(dim/2); i++) {	  tmp=*(pa+i);	  *(pa+i)=*((pa+(dim-1))-i);	  *((pa+(dim-1))-i)=tmp;	  }	   }										   

Esercizio 3

Scrivere una funzione int magica (int matrice [ ] [MAX_DIM], int dim) che

determina se una matrice quadrata di interi è magica, ovvero se le somme

degli elementi sulle righe, sulle colonne e sulle due diagonali sono tutte

uguali. Il parametro dim contiene la dimensione effettiva della tabella. La

funzione deve ritornare 1 se la matrice e’ magica, 0 altrimenti.

 int magica (int matrice [ ] [MAX_DIM], int dim) {	 int m=1;	 int r,c,i;	 int d1=0;	 int d2=0;	 int sumr[MAX_DIM];	 int sumc[MAX_DIM];		  for (r=0; r<MAX_DIM; r++)		 sumr[r]=0;	 for (r=0; r<MAX_DIM; r++)		 sumc[r]=0;		  for (r=0; r<MAX_DIM; r++)		 for (c=0; c<MAX_DIM; c++)			 sumr[r]+=matrice[r] [c];		  i=1;	 while (i<MAX_DIM && m==1){		   if (sumr[i]!=sumr[i-1])			  m=0;		   i++;	 }	  printf ("Ecco le somme delle righe\n");		 for (i=0; i<MAX_DIM; i++)		 printf ("%d\n",sumr[i]);						  for (c=0; c<MAX_DIM; c++)		 for (r=0; r<MAX_DIM; r++)			 sumc[c]+=matrice[r] [c];		  i=1;	 while (i<MAX_DIM && m==1){		   if (sumc[i]!=sumc[i-1])			  m=0;		   i++;	 }		  printf ("Ecco le somme delle colonne\n");	 for (i=0; i<MAX_DIM; i++)		 printf ("%d\n",sumc[i]);	   r=0;	 c=0;		 do {		 d1+=matrice[r] [c];		 r++;		 c++;		 }	 while (c<MAX_DIM && r<MAX_DIM && m==1);		  r=0;	 c=0;		   do {		 d2+=matrice[r] [c];		 r++;		 c++;		 }	 while (c<MAX_DIM && r<MAX_DIM && m==1);		  if (d1!=d2)		m=0;		  if (m==1)		printf ("Quadrato magico");	 else		 printf ("Nulla di magico...");  return m;  }

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Riformattalo a dovere, va' :) :dia:

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

:)

Ehm...facendo copia incolla del codice nel post si è scombussolato tutto...però il programma funziona a meraviglia ;-)

:P

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Crea un account o accedi per lasciare un commento

Devi essere un utente registrato per partecipare

Crea un account

Iscriviti per un nuovo account nella nostra community. È facile!


Registra un nuovo account

Accedi

Sei già registrato? Accedi qui.


Accedi Ora
Accedi per seguire   
Seguaci 0