vuoi
o PayPal
tutte le volte che vuoi
Sviluppare una function C che dato come parametro di input un array di tipo struct punto { double x; double y;}
e il suo size, determina e restituisce come parametro di output la massima distanza tra i punti. I campi x e y
contengono l' ascissa e l' ordinata, rispettivamente, di un punto.
#include <math.h> Void distMaxP( Punti vettore[], int n )
{
struct tPunto{ int i,j;
double x; double max =0, diff;
double y;
}; for(i=0; i <n-1: i++)
{
void FindDistMax(tPunto vet[], unsigned int n, int& for(j=1; j<n;j++)
p1, int& p2); {
{ diff=sqrt(pow(vettore[j], x-vettore[i].x,2)+
double DistMax, dist; pow(vettore[j].y-vettore[i].y,2));
unsigned int i, j; if((diff > max )
p1 = -1; p2 = -1; { min=diff;
if(n >= 2)
{ }
DistMax = Distanza(vet[0], vet[1]); }
}
for(i = 0; i < (n - 1); i++) retun max;
{ }
for(j = (i + 1); j < n; j++)
{ dist = Distanza(vet[i], vet[j]);
if(dist > DistMax)
{ DistMax = dist;
p1 = i; p2 = j;
}
}
}
}
return;
}
double Distanza(const tPunto& p1, const tPunto& p2)
{ return sqrt((pow(p2.x - p1.x, 2) + pow(p2.y - p1.y,
2)));
}
Appunti di Giacomo Gargiulo per info: g iacomo.gargiulo.made4Core@gmail.com Pag 4
Sviluppare una function C che dati come parametri un array 2D di double, il numero delle righe e il numero delle
colonne, determina e restituisce come parametro di output il massimo tra le somme degli elementi di ogni
colonna.
//presupponendo che vet[a][x] rappresenti una colonna Int MaxSomCol( int *matrice, int nCol, int nRig)
double MaxCol(double vet[][], int c, int r) {
{ int i,j,max=0;
double max, sum; int somma[10];
int i, j; for( i = 0; i <nCol; i++)
{
for(i = 0, max = 0; i < r; r++) somma[i]=0;
max += vet[0][i]; for( j = 0; j <nRig; j++)
{
for (i = 1, sum = 0; i < c; i++) somme[j] += *(matrice +nCol*i+j);
{ if(somme[j] > massimo )
for(j = 0; j < r; j++) {
sum += vet[i][j]; massimo = somme[j];
}
if(sum > max) }
max = sum; }
} return massimo;
}
return max;
}
Sviluppare una function C che dati come parametri un array 2D di double, il numero delle righe e il numero delle
colonne, determina e restituisce come parametro di output il massimo tra le somme degli elementi di ogni riga.
//presupponendo che vet[a][x] rappresenti una riga Int MaxSomRig( int *matrice, int nCol, int nRig)
int MaxRig(int vet[][], int c, int r) {
{ int i,j,max=0;
int max, sum; int somma[10];
int i, j; for( i = 0; i <nRig; i++)
{
for(i = 0, max = 0; i < c; i++) somma[i]=0;
max += vet[0][i]; for( j = 0; j <nCol; j++)
for (i = 1, sum = 0; i < r; i++) {
{ somme[j] += *(matrice +nCol*i+j);
for(j = 0; j < c; j++)
sum += vet[i][j]; if(somme[i] > massimo )
{
if(sum > max) massimo = somme[i];
max = sum; }
} }
}
return max; return massimo;
} }
Appunti di Giacomo Gargiulo per info: g iacomo.gargiulo.made4Core@gmail.com Pag 5
Scrivere una funzione che dati in input due array ordinati ( rispetto al campo matricola ) di elementi della
seguente struttura : struct studente { char * nome; char * cogome; int matricola; } ; retituisca in output l' array
fusione dei due array. La fusione deve avvenire in base al campo matricola.
struct tStudente{ Void FusMatricola( Studente * punt1[ ], Studente
char nome[64]; *punt2[ ] , Studente fusione[ ], int n_a, int n_b )
char cognome[64]; {
int matricola; int a=0,b=0,c=0; // a,b,c sono indici
}; while(a < n_a && b< n_b)
void Merge(tStudente vet1[], int n, tStudente vet2[], int {
m, tStudente fusione[]) if(punt1[a]->matricola<punt2[b]->matricola)
{ {
int i, j, k; fusione[c++]=*punt1[a++];
}
i = 0; j = 0; k = 0; else
while(((i < n) && (j < m))) {
{ fusione[c++]=*punt2[b++];
if(vet1[i].matricola < vet2[j].matricola) }
{ }
fusione[k] = vet1[i]; while( a < n_a)
i++; {
} fusione[c++]=*punt1[a];
else }
{ while( b < n_b)
fusione[k] = vet2[j]; {
j++; fusione[c++]=*punt2[b];
} }
k++; }
}
if(i == n)
{ while(j < m)
{ fusione[k] = vet2[j];
k++;
j++;
}
}
else
{ while(i < n)
{ fusione[k] = vet1[i];
k++; i++;
}
}
return;
}
Appunti di Giacomo Gargiulo per info: g iacomo.gargiulo.made4Core@gmail.com Pag 6
Scrivere una funzione che dati in input due array di strutture del seguente tipo:
struct prodotto { char * nome; int codice; duble prezzo; } ; restituisce in output 1 se i due array di struct sono
uguali,0 se non lo sono. Si noti che due dati di struct sono uguali se sono uguali tutti i loro campi.
#include <stdbool.h> Int EqualProd( Prodotto *punt1[], Prodotto *punt2[],
#include <string.h> int n )
{
struct tProdotto{ int logic = 1, i =0;
char nome[64]; while( logic == 1 && i<n )
int codice; {
double prezzo;
}; if(punt1[i] -> codice == punt2[i] -> codice )
{
//Si presuppone che per uguali si intende ordinatamente
uguali if(strcmp(punt1[i]->nome.punt2[i]-> nome) == 0)
int LoremIpsum(tProdotto vet1[], int n, tProdotto vet2, {
int m)
{ if(punt1[i] -> prezzo == punt2[i]-> prezzo )
bool ris; {
int i; logic =1;
}
if(n == m) else
{ {
for(i = 0; i < n; i++) logic =0;
{ i++;
if(!Equal(vet1[i], vet2[i])) }
i = n + 1; }
} }
}
if (i == n) return logic;
ris = true; }
else
ris = false;
}
else
ris = false;
return ris;
}
bool Equal(tProdotto a, tProdotto b)
{ bool ris;
if((a.codice == b.codice) && (a.prezzo == b.prezzo)
&& (strcmp(a.nome, b.nome) == 0))
ris = true;
else
ris = false;
return ris;
}
Appunti di Giacomo Gargiulo per info: g iacomo.gargiulo.made4Core@gmail.com Pag 7
Sviluppare una function C che, data come parametro di input una stringa che rappresenta un testo in italino,
determina e restituisce come parametro di output il numero di parole di tre lettere contenute nel testo.
Nel testo le parole sono separate da un unico spazio.
Int matchhingLettere( char testo[],n) #include <string.h>
{ int i,cnt1=0, corrispondenze=0, j, logic; int nLettere(char* frase, int n )
j=strlen( testo ); {
for( i=0; i <j;i++) char* tmp;
{ int i;
if(testo[i] !=' ')
{ for (tmp = strtok(frase, " "), i = 0; tmp != NULL;
cnt1++; tmp = strtok(NULL, " "))
} {
else
{ if (strlen(tmp) == n )
cnt1=0: } {
if(cnt == n) i++;
{ }
logic =1; }
} return i;
if(logic == 1) }
{ i++;
if(testo[i] == ' ' || testo[i]=='\0')
{ corrispondenze++;
logic=0;
}
else
{ logic=0;
}
i--;
}
}
retrun corrispondenze;
}
Appunti di Giacomo Gargiulo per info: g iacomo.gargiulo.made4Core@gmail.com Pag 8
Sviluppare una function C che, data come parametro di input una stringa che rappresenta un testo in italino,
determina e restituisce come parametro di output il numero di parole che termiano in ( are ) contenute nel testo.
Nel testo le parole sono separate da un unico spazio.
int EndWith_are_(char* frase) Int matchingAre( char testo[ ] )
{ {
char* tmp; int i,j,n,corrispondenze =0:
int i =0; j=strlen(testo);
tmp = strtok(frase, " "); n=strlen("are");
for ( ; tmp != NULL; tmp = strtok(NULL, " ")) for(i=0; i<j; i++)
{ {
if (strlen(tmp) >= 3 ? strcmp(tmp[strlen(tmp) - if( strcmp(&testo[i],"are",n) == 0)
3], {
"are") : false) i+=n;
{ if(testo[i]==' ' || testo[i] ='\0')
i++; {
} corrispondenze++;
} }
return i; i-=n;
} }
}
return corrispondenze;
}
Sviluppare una function C che data come parametro di input una stringa che rappresenta un testo in italiano,
determina e restituisce come parametri di output il numero di parole che iniziano con ( a ) e terminano con ( e )
contenute nel testo. Nel testo le parole sono separate da un unico spazio.
int BeginWithAEndWithE(char* frase) Int matchingA-E(char testo[ ])
{ {
char* tmp; int i,j,corrispondenze=0,logical=0;
int i =0; j=strlen(testo);
tmp = strtok(frase, " "); for( i=0; i < j; j++ )
{
for ( ; tmp != NULL; tmp = strtok(NULL, " ")) i--;
{ if(testo[i]==' ' || i <= 0)
if ((tmp[i] == 'a') && (tmp[strlen(tmp)-1] == 'e')) {
{ logic =1;
i++; i++; }
} if( logic == 1 && testo[i] == ' ')
} {
return i; logic =0; }
} else if( testo[i] == 'a')
{ if testo[strlen(testo)-1]=='e')
{ i++;
if(testo[i]==' ' || testo[i]=='\0')
{ corrispondenze++;
logic =0; }
i--; } } }
}return corrispondenze; }
Appunti di Giacomo Gargiulo per info: g iacomo.gargiulo.made4Core@gmail.com Pag 9
Sciluppare una function C che, data come parametro di input una stringa che rappresenta un testo in italiano,
determina e restituisce come parametro di output il numero di parole contenute nel testo che hanno almeno 5
vocali. Nel testo le parole sono separate da un unico spazio.
#include <stdbool.h> Int contaPangramma( char testo[ ] )
{
bool IsVowel(char c) int n, cntVocali=0, corrispondenze =0;
{ n=strlen(testo);
c = toupper(c); for( i = 0; i <n ; i++)
return ((c == 'A') || (c == 'E') || (c == 'I') || (c == 'O') || {
(c == 'U')) ? true : false; if(testo[i] == ' ' || testo=='\0')
} { cntVocali=0;
int FiveVowel(char* frase) }
{ if(testo[i] == 'a' || testo[i] =='A')
char* tmp; {
int i=0, j, k; if(testo[i] == 'e' || testo[i] =='E')
tmp = strtok(frase, " "); { if(testo[i] == 'i' || testo[i] =='I')
for ( ; tmp != NULL; tmp = strtok(NULL, " ")) {
{ if(testo[i] == 'o' || testo[i] =='O')
for (j = 0, k = 0; j < strlen(tmp); j++) {
{ if(testo[i] == 'u' || testo[i] =='U')
if(IsVowel(tmp[j])) {
k++; cntVocal++;
} }
if (k == 5) }
i++; }
} }
return i; }
} if( cntVocali >= 5 )
{ corrispondenze++;
}
}
return corrispondenze;
}
Appunti di Giacomo Gargiulo per info: g iacomo.gargiulo.made4Core@gmail.com Pag 10
Sviluppare una function C che, data come paraametro di input una stringa che rappresenta un testo in italiano,
determina e restituisce come parametri di output la parola di lunghezza massima contenuta nel testo e la sua
lunghezza. Nel testo le prole sono separate da un unico spazio.
int LongerWord(char* frase, char* longer) Void LungerMax(chat testo[], int *max, char *parola )
{ {
int max= -1,i=0; int i, cnt =0,n;
tmp = strtok(frase, " "); n=strlen(testo);
f