                                 /* 3 - Zylinder.c - call by reference */
#include <stdlib.h>
/* Erstellen Sie eine Funktion 'flaeche', die aus Durchmesser und Länge das
Volumen, die Querschnitts- und die Mantelfläche eines Zylinders ermittelt.
Für eine Welle aus mehreren Zylindern sind der Durchmesser und Längen der
verschiedenen Abschnitte(max. 10, Abbruch bei 0) mit Hilfe einer Funktion 'lies'
einzulesen.
Lassen Sie für alla Zylinder Volumen, Querschnitts- und Mantelflaeche mit der
o.g. Funktion berechnen.
Geben Sie alle Daten mit Hilfe einer Funktion 'tabelle' aus! 
Hinweis: pi=3.141593; m= pi*d*l; q= pi/4*d*d; v=q*l
-------------------------------------------------------------------------------
geg.:
ges.:
Lsg.:
------------------------------------------------------------------------------*/
float flaeche( float du, float laenge, float * quer, float * mantel)
{  const float pi=3.1415926;
   *quer= pi/4*du*du;
   *mantel= pi*du*laenge;
   return *quer*laenge;
}
void tabelle(float du[], float laenge[], float vol[], float quer[],
              float mantel[], int n)
{  int i; 
   printf("\n Durchm.      Laenge       Volumen     Querschn.    Mantelfl.\n");
   for( i=0; i<n; i++)
   printf(" %10f   %10f   %10f   %10f %10f\n", du[i], laenge[i], vol[i],
                                                quer[i], mantel[i]);
   printf("\n");
}
int lies( float du[], float laenge[])
{ int n=0;
  do{ printf("\n Durchmesser: "); scanf("%f", &du[n]);
      if( du[n]<=0) break;
      printf("Laenge: "); scanf("%f", &laenge[n]);
      if( laenge[n]>0) n++;
  }while( laenge[n]>0 && n<10);
  return n;    
}
int main()
{  float d[10], l[10], v[10], q[10], m[10];   int i, anz;

   anz= lies( d, l);
   
   for( i=0; i<anz; i++) v[i]= flaeche( d[i], l[i], &q[i], &m[i]);
   
   tabelle( d, l, v, q, m, anz);
   
   system("Pause");  return 0;
}/*---------------------------------------------------------------------------*/
