Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Circonferenza - main.c

main.c

Caricato da: Poggi Marco
Scarica il programma completo

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include "Sistema.h"
  5. #include "Equazioni.h"
  6.  
  7. double domanda(const char *, double, double);
  8. void caricaMatrice(Tmatrice);
  9. void stampaSistema(Tcirconferenza);
  10. void CaricaSistema(Tcirconferenza);
  11.  
  12. int main()
  13. {
  14.     printf("Circonferenza passante per tre punti\n");
  15.     Tcirconferenza cerchio;
  16.     allocaCirconferenza(&cerchio);
  17.     CaricaSistema(cerchio);
  18.     char soluzioni[500]="";
  19.     if (calcolaSoluzioni(cerchio, soluzioni))
  20.     {
  21.         printf("----------------------------------------------------------------------");
  22.         printf("\nRisultato:\n%s", soluzioni);
  23.     }
  24.     distruggiCirconferenza(&cerchio);
  25.     printf("\n\nFine... ");
  26.     while (getchar() != '\n');
  27.     return 0;
  28. }
  29.  
  30. double domanda(const char *messaggio, double lInf, double lSup)
  31. {
  32.         char numero[80]="";
  33.         double esito=0.0;
  34.         while (1)
  35.         {
  36.                 printf("%s", messaggio);
  37.                 gets(numero);
  38.                 esito=atof(numero);
  39.                 if (esito < lInf)
  40.                 {
  41.                         printf("Inserire un valore superiore a %lf\n", lInf);
  42.                         continue;
  43.                 }
  44.                 if (esito > lSup)
  45.                 {
  46.                         printf("Inserire un valore inferiore a %lf\n", lSup);
  47.                         continue;
  48.                 }
  49.                 break;
  50.         }
  51.         return esito;
  52. }
  53.  
  54. void caricaMatrice(Tmatrice matrix)
  55. {
  56.         int i, j;
  57.         double valore;
  58.         char messaggio[80]="";
  59.         printf("\nCaricamento della matrice: \n");
  60.         for (i=0; i < matrix.lato; i++)
  61.         {
  62.                 printf("\n------------------------------------\n");
  63.                 for (j=0; j < matrix.lato; j++)
  64.                 {
  65.                         sprintf(messaggio, "Valore in riga %3d e colonna %3d ? ", i+1, j+1);
  66.                         valore=domanda(messaggio, -1e30, 1e30);
  67.                         setElemento(matrix, i, j, valore);
  68.                 }
  69.         }
  70.         printf("\n------------------------------------\n");
  71. }
  72.  
  73. void stampaSistema(Tcirconferenza sistema)
  74. {
  75.     int i;
  76.     printf("\nCirconferenza passante per \n");
  77.     for (i=0; i < 3; i++)
  78.     {
  79.         printf("Punto %d: (%0.5lf | %0.5lf)\n", i+1, sistema.punti[i].x, sistema.punti[i].y);
  80.     }
  81.     printf("\nMatrici: \n");
  82.     for (i=0; i<4; i++)
  83.     {
  84.         printf("%d:", i+1);
  85.         stampaMatrice(sistema.equazioni[i]);
  86.         printf("Determinante: %lf", determinante(sistema.equazioni[i]));
  87.         printf("\n  -----------------------------------------------------\n");
  88.     }
  89. }
  90.  
  91. void CaricaSistema(Tcirconferenza cerchio)
  92. {
  93.     Tpunto coordinate;
  94.     int i;
  95.     printf("Immetti le coordinate dei tre punti in cui passa la circonferenza\n\n");
  96.     for (i=0; i < 3; i++)
  97.     {
  98.         printf("Punto %d: \n", i + 1);
  99.         coordinate.x=domanda("Coordinata x ? ", -1e100, 1e100);
  100.         coordinate.y=domanda("Coordinata y ? ", -1e100, 1e100);
  101.         immettiCoordinata(cerchio, coordinate, i);
  102.         printf("   ----------------------------------\n");
  103.     }
  104. }