Salve dovrei compilare un programma in c :
Sono definite due struct: Intervallo e Operazione, le operazioni aritmetiche di somma e moltiplicazione applicate agli intervalli a+b= [a1+b1, a2 + b2] e a*b=[min(a1+b1,a2*b2,a1*b2,a2*b1), max(a1+b1,a2*b2,a1*b2,a2*b1)].
Le operazioni fra intervalli possono essere descritte attraverso la struct Operazione, che contiene l'operazione da eseguire (+ e *) e i due intervalli su quali operare.
Nel programma ci deve essere una funzione che dato un vettore di struct Operazione e la sua dimensione n, restituisca l'intervallo ottenuto come prodotto di tutti i risultati dell'applicazione delle operazioni contenute nel vettore.
Ci sto sbattendo la testa come un matto ma non ne vengo a capo...una bozza di quello che ho cercato di fare è questo:
#include <stdio.h>
#include <stdlib.h>
#define DIM 100
struct Intervallo {
float v_min;
float v_max;
};
struct Operazione {
char op[3];
struct Intervallo a;
struct Intervallo b;
};
int main(){
int i, n;
struct Operazione v[DIM];
printf("Digita il numero di operazioni (+ o *) e due intervalli (valore minimo e massimo)\n");
scanf("%d", &n);
for(i=0; i<n; i++){
printf("Digita il tipo di operazione (+ o *):\n");
scanf("%s", v[i].op);
printf("Digita il valore minimo (primo intervallo):\n");
scanf("%g", &v[i].a.v_min);
printf("Digita il valore massimo (primo intervallo):\n");
scanf("%g", &v[i].a.v_max);
printf("Digita il valore minimo (secondo intervallo):\n");
scanf("%g", &v[i].b.v_min);
printf("Digita il valore massimo (secondo intervallo):\n");
scanf("%g", &v[i].b.v_max);
}
Funzione(v, n)
printf("Il risultato è: {%g, %g}\n", )
return 0;
}
float Funzione(struct Operazione v[], int n){
int i;
struct Intervallo r[i];
struct Operazione d[i];
for(i=0; i<n; i++){
if(strcmp(d[i].op, '+')==0){
ris[i].v_min=d[i].a.v_min+d[i].b.v_min;
ris[i].v_max=d[i].a.v_max+d[i].b.v_max;
} else if(strcmp(d[i].op, '*')==0){
ris[i].v_min=Minimo(d);
ris[i].v_max=Massimo(d);
}
}
}
dove sbaglio?
grazie mille
Edit skynet: inserimento tag code