AIUTO - Programma struct

di il
2 risposte

AIUTO - Programma struct

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

2 Risposte

  • Re: AIUTO - Programma struct

    Puoi specificare meglio cosa deve fare la funzione? cosa deve ritornare?
  • Re: AIUTO - Programma struct

    PePer esempio nel caso del vettore operazioni:
    struct Operazione v[3]={{'+',{2.1,3.1},{-1.2,-0.5}},{'*',{-1.1,-0.2},{2-1,3.4}},{'+',{-1.2,-0.5},{-1.1,-0.2}}};
    la funzione deve restituire l'intervallo {0.2646, 24,9458} ottenuto come prodotto (a*b=[min(a1*b1,a1*b2,a2*b1,a2*b2),max(a1*b1,a1*b2,a2*b1,a2*b2)]) degli intervalli delle operazioni [{0.9,2.9}(prima operazione)*{2.1,3.4}(seconda operazione)]*{-2.3,-0.7}(terza operazione).
    un po' complicato....
Devi accedere o registrarti per scrivere nel forum
2 risposte