-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTrova numero
62 lines (53 loc) · 1.92 KB
/
Trova numero
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int numeroElementi(char stringa[]){
int contatore,numero=0;
for(contatore=0;contatore<strlen(stringa);contatore++){
if(stringa[contatore]==' ') numero++;
}
return numero+1;
}
int char_to_int(char array[], int intervallo_inf, int intervallo_sup){
char arrayTemp[intervallo_sup-intervallo_inf+1];
int contatore;
for(contatore=intervallo_inf;contatore<=intervallo_sup;contatore++){
arrayTemp[contatore-intervallo_inf]=array[contatore];
}
return atoi(arrayTemp);
}
void riempiArray(char origine[], int dest[]){
int contatore,intervallo_inf,intervallo_sup,contatore2=0;
for(contatore=0;contatore<strlen(origine);contatore++){
if(origine[contatore]==' '){
contatore++;
contatore2++;
intervallo_inf=contatore;
while(origine[contatore]!=' ' && contatore<strlen(origine)) contatore++;
intervallo_sup=contatore+1;
dest[contatore2]=char_to_int(origine,intervallo_inf,intervallo_sup);
contatore--;
}
}
contatore=0;
while(origine[contatore]!=' ') contatore++;
dest[0]=char_to_int(origine,0,contatore);
}
int eval(char * val, char * pos) {
int valori[numeroElementi(val)], posizioni[numeroElementi(pos)],valoreTemporaneo,valoreMinimo,contatore;
riempiArray(val, valori);
riempiArray(pos, posizioni);
valoreMinimo=valori[posizioni[0]];
printf("Valore iniziale:%i\n",valoreMinimo);
for(contatore=0;contatore<numeroElementi(pos);contatore++){
if(posizioni[contatore]>=0 && posizioni[contatore]<numeroElementi(val)) valoreTemporaneo=valori[posizioni[contatore]];
if(valoreTemporaneo<valoreMinimo) valoreMinimo=valoreTemporaneo;
}
return valoreMinimo;
}
int main(){
char val[]="1 21 386 2 107 71 644";
char pos[]="0 1 0";
printf("Valore minimo: %i",eval(val,pos));
return 1;
}