- Soluzione esercizio 1 - Soluzione esercizio 2 - Soluzione esercizio 3 - Soluzione esercizio 4 - Soluzione esercizio 5 - Soluzione esercizio 6 - Soluzione esercizio 7 - Soluzione esercizio 8
-----------------
#include <stdio.h>
#define LEN 10
int Esercizio1() {
int somma = 0;
int i = 0;
for (i = 2; i < 100; i+= 3) {
somma += i;
}
return somma;
}
#include <stdio.h>
#define LEN 10
void Esercizio2(float temp) {
if (temp < 0) {
printf("GHIACCIO\n");
}
else if (temp > 100) {
printf("VAPORE\n");
}
printf("ACQUA\n");
}
#include <stdio.h>
#define LEN 10
double Esercizio3(int A[]) {
double B[8] = {2.0, 1.0, 0.5, 0.2, 0.1, 0.05, 0.02, 0.01};
int i = 0;
double somma = 0.0;
for (i = 0; i < 8; i++) {
somma += (double)A[i] * B[i];
}
return somma;
}
#include <stdio.h>
#define LEN 10
int Esercizio4(int A[], int B[]) {
//controlla il prefisso comune piu' lungo di A e B
int i = 0;
int check = 1;
while (check && i < LEN) {
// quando A[i] != B[i] il prefisso comune termina
if (A[i] != B[i]) {
check = 0;
}
else {
i++;
}
}
return i;
}
#include <stdio.h>
#define LEN 10
int Esercizio5(int A[], int B[]) {
//controlla la sequenza comune piu' lunga tra il suffisso di A ed il prefisso di B
int start = 0;
int i, j;
int aux1, aux2;
i = 0;
j = 0;
while (i < LEN) {
aux1 = i;
aux2 = 0;
//controllo se la sequenza che inizia ad aux1 di A e' comune ad un prefisso di B
while(aux1 < LEN && A[aux1] == B[aux2]) {
aux1++;
aux2++;
}
if (aux1 >= LEN) {
//sono arrivato alla fine di A
return aux2;
}
i++;
}
return 0;
}
#include <stdio.h>
#define LEN 10
void Esercizio7 (int A[]) {
//ordino un vettore
int i, j;
int aux;
//metto in testa al vettore il valore piu' piccolo e poi rieseguo sulla parte restante del vettore
for (i = 0; i < LEN; i++) {
for (j = i + 1; j < LEN; j++) {
if (A[i] > A[j]) {
aux = A[i];
A[i] = A[j];
A[j] = aux;
}
}
}
}
#include <stdio.h>
#define LEN 10
int Esercizio6 (int A[], int B[]) {
//controllo gli elementi comuni di due vettori
int i, j;
//ordino A
Esercizio7(A);
int count = 0;
int curr = A[0];
//controllo se A[0] e' in B
if (find(B, LEN, curr)) {
count++;
}
for (i = 1; i < LEN; i++) {
//trovo l'elemento successivo in A diverso da curr
//quindi trovo un elemento ancora da controllare
if (A[i] != curr) {
curr = A[i];
//controllo se l'elemento di A appartiene anche a B
if (find(B, LEN, curr)) {
count++;
}
}
}
return count;
}
#include <stdio.h>
#define LEN 10
int Esercizio8 (int A[], int B[]) {
//controllo se A e B sono due permutazioni degli stessi elementi
//ossia se hanno gli stessi elementi che appaiono lo stesso numero di volte
int i, j;
//ordino A e B
Esercizio7(A);
Esercizio7(B);
//controllo se i due vettori sono uguali
for (i = 0; i < LEN; i++) {
if (A[i] != B[i]) {
return 0;
}
}
return 1;
}
void stampa (int A[], int n) {
//stampa un vettore
int i;
for (i = 0; i < n; i++) {
printf("%d ", A[i]);
}
printf("\n");
}