Anteprima
Vedrai una selezione di 5 pagine su 18
Soluzione Esercizi Esame Programmazione 1 Parthenope Pag. 1 Soluzione Esercizi Esame Programmazione 1 Parthenope Pag. 2
Anteprima di 5 pagg. su 18.
Scarica il documento per vederlo tutto.
Soluzione Esercizi Esame Programmazione 1 Parthenope Pag. 6
Anteprima di 5 pagg. su 18.
Scarica il documento per vederlo tutto.
Soluzione Esercizi Esame Programmazione 1 Parthenope Pag. 11
Anteprima di 5 pagg. su 18.
Scarica il documento per vederlo tutto.
Soluzione Esercizi Esame Programmazione 1 Parthenope Pag. 16
1 su 18
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

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

Dettagli
Publisher
A.A. 2015-2016
18 pagine
14 download
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher GG4core di informazioni apprese con la frequenza delle lezioni di Programmazione I e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Napoli - Parthenope o del prof Giunta Giulio.