Soluzioni agli esercizi del quinti homework
- Soluzione esercizio 1
- Soluzione esercizio 2
-----------------
LEGENDA
- Compila : significa che il vostro programma e'stato compilato con successo.
- Non Compila : significa che il vostro programma ha dato errori di compilazione.
- Risultato Corretto : significa che il vostro programma ha dato i risultati attesi.
- Output errato : significa che il vostro programma ha dato risultati diversi da quelli attesi.
- E.A.M. : significa Errore in Accesso alla Memoria, state accedendo a memoria non allocata dal vostro programma
o state utilizzando variabili non inizializzate .
- Timeout : significa che il vostro programma e'andato in loop e quindi va rivisto.
Se avete dei dubbi o volete dei chiarimenti sui risultati del terzo homework potete contattare il
Dott. Petroccia.
Vi invitiamo pero' prima a compilare le vostre soluzioni su macchine Linux ed a provare i
test effettuati per essere sicuri che non ci siano stati errori.
Nome | Compila | Test.1 | Test.2 | Test.3 | Test.4 | Risultato |
AlbertoMariaAloisi | Compila | Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Corretto |
AldoNardi | Compila | Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Corretto |
AlessioMario | Compila | Output errato |
Output errato |
Output errato |
Output errato |
Errore |
AndreaLupattelli | Compila | Output errato |
Output errato |
Output errato |
Output errato |
Errore |
AngeloLauletta | Compila | Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Corretto |
AntonellaMarino | Compila | Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Corretto |
AttilioFiore | Compila | Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Corretto |
BeatriceFormai | Compila | Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Corretto |
BledarLera | Compila | Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Corretto |
DamianoIlacqua | Compila | Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Corretto |
DanieleFortuna | Compila | Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Corretto |
DavideFrazzetto | Compila | Output errato |
Output errato |
Output errato |
Output errato |
Errore |
DavideTuccilli | Compila | Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Corretto |
EjonaMile | Compila | Output errato |
Output errato |
Output errato |
Output errato |
Errore |
EmanueleGiarlini | Compila | Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Corretto |
EmanueleMungai | Compila | Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Corretto |
GennyProto | Compila | Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Corretto |
GiovanniMarianelli | Compila | Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Corretto |
GiovanniScigliano | Compila | Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Corretto |
GiuliaGiacomini | Compila | Output errato |
Output errato |
Output errato |
Output errato |
Errore |
GiuseppeImperato | Compila | Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Corretto |
LeonardoMasci | Compila | Risultato Corretto |
Risultato Corretto |
Output errato |
Output errato |
Errore |
LucaPellegrino | Compila | E.A.M. |
Risultato Corretto |
Output errato |
Output errato |
Errore |
ManuelMauro | Compila | Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Corretto |
MarcoMogliani | Compila | Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Corretto |
MarioGattiPaganoBrundo | Compila | Risultato Corretto |
Timeout |
Output errato |
Output errato |
Timeut + Errore |
MarioGreco | Compila | Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Corretto |
NicolaDonato | Compila | Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Corretto |
PierPaoloPetti | Compila | Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Corretto |
RiccardoMassullo | Compila | Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Corretto |
RobertoFeola | Compila | Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Corretto |
RobertoFravili | Compila | Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Corretto |
SerenaMatrone | Compila | Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Corretto |
StefanoLauletta | Compila | Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Corretto |
StefanoMarra | Compila | Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Corretto |
StefanoMarra | Compila | Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Corretto |
TaniaIelpo | Compila | Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Corretto |
ValerioMoroni | Compila | Risultato Corretto |
Risultato Corretto |
Output errato |
Output errato |
Errore |
Test | - | Input.1 = 5 15 8 40 24 0 19 30 -1 10
| output.1 = 5 30 40
0 8 15 19 24
| | Input.2 = 100
99
98
97
96
95
94
93
92
91
90
89
88
87
86
85
84
83
82
81
80
79
78
77
76
75
74
73
72
71
70
69
68
67
66
65
64
63
62
61
60
59
58
57
56
55
54
53
52
51
50
49
48
47
46
45
44
43
42
41
40
39
38
37
36
35
34
33
32
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
-1
12
| output.2 = 1 2 3 4 6 12 24 36 48 60 72 84 96
0 5 7 8 9 10 11 13 14 15 16 17 18 19 20 21 22 23 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 49 50 51 52 53 54 55 56 57 58 59 61 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 78 79 80 81 82 83 85 86 87 88 89 90 91 92 93 94 95 97 98 99 100
| | Input.3 = 10 5 20 15 5 40 35 30 20 40 -1 5
| output.3 = 5 5 10 15 20 20 30 35 40 40
| | Input.4 = 4 7 10 16 13 2 -1 3
| output.4 =
2 4 7 10 13 16
| | ExTotali = 38 | ExCorretti = 29 | ExErrati = 9 | |
Nome | Compila | Test.1 | Test.2 | Test.3 | Test.4 | Risultato |
AlbertoMariaAloisi | Compila | Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Corretto |
AldoNardi | Compila | Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Output errato |
Errore |
AngeloLauletta | Compila | Output errato |
Output errato |
Output errato |
Output errato |
Errore |
AttilioFiore | Compila | Risultato Corretto |
Output errato |
Risultato Corretto |
Risultato Corretto |
Errore |
BeatriceFormai | Compila | Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Corretto |
BledarLera | Compila | Output errato |
Output errato |
Output errato |
Output errato |
Errore |
DavideTuccilli | Compila | Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Output errato |
Errore |
EjonaMile | Compila | Output errato |
Output errato |
Output errato |
Output errato |
Errore |
EmanueleGiarlini | Compila | Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Corretto |
EmanueleMungai | Compila | Output errato |
Output errato |
Output errato |
Output errato |
Errore |
EnricoCalciano | Compila | Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Corretto |
GiovanniScigliano | Compila | Output errato |
Output errato |
Output errato |
Output errato |
Errore |
GiuseppeImperato | Compila | Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Corretto |
LeonardoMasci | Compila | Risultato Corretto |
Output errato |
Risultato Corretto |
Output errato |
Errore |
ManuelMauro | Compila | Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Output errato |
Errore |
MarcoMogliani | Compila | Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Output errato |
Errore |
MarioGattiPaganoBrundo | Compila | Output errato |
Output errato |
Output errato |
Output errato |
Errore |
MarioGreco | Compila | Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Corretto |
NicolaDonato | Compila | Output errato |
Output errato |
Output errato |
Output errato |
Errore |
PierPaoloPetti | Compila | E.A.M. |
Output errato |
E.A.M. |
E.A.M. |
Errore |
RobertoFeola | Compila | Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Timeout |
Timeout |
RobertoFravili | Compila | Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Output errato |
Errore |
SerenaMatrone | Compila | Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Corretto |
StefanoLauletta | Compila | Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Corretto |
TaniaIelpo | Compila | Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Risultato Corretto |
Corretto |
Test | - | Input.1 = 8 10 0.43 -1 1 6 2 3.45 -4 -2 14 2.46 4 12.03 14
| output.1 = 2 2.46
| | Input.2 = 12 10 0.43 -10 10 6.01 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10
| output.2 = 0 6.01
| | Input.3 = 4 1 3.7 2 4.2 12 4.3 11 3.8 2
| output.3 = 2 4.20
| | Input.4 = 10 1 1 11 2 21 3 31 4 41 5 51 6 61 7 71 8 81 9 -1 12
| output.4 = 8
| | ExTotali = 24 | ExCorretti = 8 | ExErrati = 16 | |
Soluzione esercizio 1
#include <stdio.h>
#include <stdlib.h>
typedef struct nodo{
int val;
struct nodo * succ;
} Nodo;
void separa_liste( Nodo ** origine, int k, Nodo ** multipli_e_divisori, Nodo ** resto);
void inserisci ( Nodo ** lista, int val);
void stampa_lista (Nodo * l);
int main () {
Nodo * origine, * mul_e_div, * resto;
int val;
origine = NULL;
mul_e_div = NULL;
resto = NULL;
scanf("%d", &val);
while(val >= 0) {
inserisci(&origine, val);
scanf("%d", &val);
}
scanf("%d", &val);
if(val <= 0) return 1;
separa_liste(&origine, val, &mul_e_div, &resto);
stampa_lista(mul_e_div);
stampa_lista(resto);
if(origine != NULL){
printf("Errore! origine e' diversa da NULL\n!");
return 1;
}
return 0;
}
void inserisci ( Nodo ** lista, int val){
Nodo * n, *s, *p;
n = malloc(sizeof(Nodo));
n->val = val;
n->succ = NULL;
p = NULL;
s = *lista;
while((s!=NULL) && (s->val < val)){
p=s;
s=s->succ;
}
if (p != NULL){
n->succ = s;
p->succ = n;
} else {
*lista = n;
n->succ = s;
}
}
void separa_liste( Nodo ** origine, int k, Nodo ** multipli_e_divisori, Nodo ** resto) {
Nodo * t;
if(*origine == NULL) return;
separa_liste(&((*origine)->succ), k, multipli_e_divisori, resto);
if(((*origine)->val>0)&&(((*origine)->val%k==0)||(k%(*origine)->val==0))){
t=*multipli_e_divisori;
*multipli_e_divisori = *origine;
(*multipli_e_divisori)->succ = t;
} else {
t=*resto;
*resto = *origine;
(*resto)->succ = t;
}
*origine = NULL;
}
void stampa_lista(Nodo * l){
while(l != NULL){
printf(" %d", l->val);
l = l->succ;
}
printf("\n");
}
Soluzione esercizio 2
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
typedef struct nodo{
int chiave;
double val;
struct nodo * succ;
} Nodo;
void inserisci( Nodo * tabella [10], int c, double v);
void elimina( Nodo * tabella [10], int c);
Nodo * trova( Nodo * tabella [10], int c);
int max_sbilanciamento( Nodo * tabella[10]);
int main () {
Nodo * tabella [10];
Nodo * n;
int chiave, elementi, i;
double val;
for(i=0; i<10; i++){
tabella[i] = NULL;
}
scanf("%d", &elementi);
for (i=0; i < elementi; i++){
scanf("%d", &chiave);
if(chiave > 0){
scanf("%lf", &val);
inserisci(tabella, chiave, val);
}
if (chiave<0) {
elimina(tabella, abs(chiave));
}
}
printf("%d ", max_sbilanciamento(tabella));
scanf("%d", &chiave);
n = trova(tabella, chiave);
if (n!=NULL){
printf("%.2lf", n->val);
}
printf("\n");
}
void inserisci( Nodo * tabella [10], int c, double v){
Nodo * n;
n = trova(tabella, c);
if(n != NULL){
n->val = v;
} else {
n = tabella[c%10];
tabella[c%10]=malloc(sizeof(Nodo));
tabella[c%10]->chiave = c;
tabella[c%10]->val = v;
tabella[c%10]->succ = n;
}
}
void elimina( Nodo * tabella [10], int c){
Nodo * l, *p;
l = tabella[c%10];
p = NULL;
while((l != NULL) && (l->chiave != c)){
p=l;
l=l->succ;
}
if(l != NULL){
if(p != NULL){
p->succ = l->succ;
} else{
tabella[c%10] = l->succ;
}
free(l);
}
}
Nodo * trova( Nodo * tabella [10], int c){
Nodo * r;
r = tabella[c%10];
while((r != NULL) && (r->chiave != c)){
r = r->succ;
}
return r;
}
int max_sbilanciamento( Nodo * tabella[10]){
int max = 0, min =-1;
int i, e;
Nodo * n;
for(i = 0; i < 10; i++){
if(tabella[i]==NULL){
min = 0;
} else {
e = 0;
n = tabella[i];
while(n != NULL){
e++;
n = n->succ;
}
if (max < e)
max = e;
if(min > e || min==-1)
min = e;
}
}
return max-min;
}