salve a tutti!
ho provato a compilare un programma per redigere le tabelle millesimali dei condomini.
questo è il mio sorgente:
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