codice:
#include<stdio.h>
#define Nmax 100 //numero max di unità immobiliari
struct t
{
char nome[20];
double val;
double mil;
};
/* prototipi delle funzioni definite dall'utente */
double valori(struct t*, int);
double mille(struct t*, int);
void stampa(struct t*, double, double, int);
/* programma principale */
int main()
{
int scelta, i, k_max;
double m_tot, v_tot, v_max;
struct t u_imm[Nmax];
do {
printf(" MENU' CREAZIONE TABELLA GENERALE");
printf("\n\n\n\n 1 - Ceazione tabella generale");
printf("\n\n 2 - Stampa tabella generale");
printf("\n\n 3 - USCITA");
printf("\n\n scegliere l'operazione da effettuare");
scanf("%d", &scelta);
switch(scelta) {
case 1: printf("\n Numero unita' immobiliari: ");
scanf("%d", &k_max);
v_tot = valori(u_imm, k_max);
m_tot = mille(u_imm, k_max);
break;
case 2: stampa(u_imm, v_tot, m_tot, k_max);
break;
case 3: break; /*fine del programma */
}
}while(scelta !=3);
}
/* la funzione valori calcola i valori virtuali delle singole unità immobiliari e il valore virtuale totale */
double valori(struct t *v, int i_max)
{
int i, continua, k;
double area, coef1, coef2, coef3, val_tot;
val_tot = 0;
for(i=0; i<i_max; i++)
{ k = 1;
v[i].val = 0;
printf("\n Unita' Immobiliare: ");
scanf("%s", v[i].nome);
do {
printf("\n\n Locale n.ro %d: Superficie: ",k);
scanf("%lf", &area);
printf("\n\n Coeficiente di destinazione: ");
scanf("%lf", &coef1);
printf("\n\n Coeficiente di prospetto: ");
scanf("%lf", &coef2);
area = area * coef1 * coef2;
v[i].val = v[i].val + area;
printf("\n\n\n\n Continua = 1: ");
scanf("%d", &continua);
k++;
} while(continua == 1);
printf("\n\n\n coefficiente di piano: ");
scanf("%lf", &coef3);
val_tot = val_tot + v[i].val;
}
return (val_tot);
}
/* la funzione mille calcola i millesimi di ogni unità immobiliare */
double mille(struct t *m, double val_tot, double mil_tot, int i_max)
{
int i;
mil_tot = 0;
for(i=0; i<i_max; i++) {
m[i].mil = 1000 * m[i].val / val_tot;
mil_tot = mil_tot + m[i].mil;
}
return(mil_tot);
}
void stampa(struct t *m, double val_tot, double mil_tot, int i_max)
{
int i;
fprintf(stdout, "\n STAMPA TABELLA GENERALE \n\n\n");
for (i=0; i<i_max; i++){
fprintf(stdout, "\nU.Immobiliare: %s - Valore: %lg - Millesimi: %lg", m[i].nome, m[i].val, m[i].mil);
}
fprintf(stdout, "\nVal.tot: %lg - Mill.tot: %lg", val_tot, mil_tot);
}
mi da errore "link error", s elo compilate vedrete. eppur eè strano mi sembra di non aver sbagliato nulla