C programs

Tuesday, November 29, 2005

 

Program za racunanje obima trougla na osnovu koordinata

  1. /*******************************************
  2. *
  3. *  Program koji racuna obim trouga na osnovu
  4. *  unetih koordinata u koordinatnom sistemu
  5. *
  6. *******************************************/
  7. #include <stdio.h>
  8. #include <math.h>
  9. main () {
  10.     /***********************************************
  11.     *
  12.     *  x1, x2 i x3 su koordinate na X osi za tri tacke
  13.     *  y1, y2 i y3 su koordinate na Y osi za tri tacke
  14.     *  a, b i c su stranice trougle
  15.     *  O je obim trougla
  16.     *
  17.     ************************************************/
  18.     double x1, x2, x3, y1, y2, y3, a, b, c, O; 
  19.    
  20.    
  21.     /****************************************
  22.     *
  23.     *  again je pomocna promenljiva koja sluzi za vracanje programa na pocetak
  24.     *  ako korinsik hoce da ponovi program
  25.     *
  26.     *****************************************/
  27.     char again = 'y';
  28.    
  29.    
  30.     /*****************************************
  31.     *
  32.     *  Prvo unosenje koordinata tacaka!
  33.     *  Kasnije sledi provera da li se neke tacke poklapaju
  34.     *
  35.     *******************************************/
  36.     printf("**Program za racunanje obima trougla pomocu koordinata**\n");
  37.     while(again=='y') {
  38.     /****************************************
  39.     *
  40.     *  Unos prve tacke
  41.     *
  42.     *****************************************/
  43.     printf("\nUnesite koordinate prve tacke: ");
  44.     printf("\n\tx= ");
  45.     scanf("%lf", &x1);
  46.     printf("\ty= ");
  47.     scanf("%lf", &y1);
  48.     /****************************************
  49.     *
  50.     *  Unos druge tacke
  51.     *
  52.     *****************************************/
  53.     printf("\nUnesite koordinate druge tacke: ");
  54.     printf("\n\tx= ");
  55.     scanf("%lf", &x2);
  56.     printf("\ty= ");
  57.     scanf("%lf", &y2);
  58.     /****************************************
  59.     *
  60.     *  Unos trece tacke
  61.     *
  62.     *****************************************/
  63.     printf("\nUnesite koordinate trece tacke: ");
  64.     printf("\n\tx= ");
  65.     scanf("%lf", &x3);
  66.     printf("\ty= ");
  67.     scanf("%lf", &y3);
  68.    
  69.     /******************************************
  70.     *
  71.     *  Racunanje duzine stranice pomocu koordinata
  72.     *  dve tacke u koordinatnom sistemu!
  73.     *
  74.     *******************************************/
  75.     a = sqrt(pow((x1-x2), 2)+pow((y1-y2), 2));
  76.     b = sqrt(pow((x2-x3), 2)+pow((y2-y3), 2));
  77.     c = sqrt(pow((x1-x3), 2)+pow((y1-y3), 2));
  78.  
  79.  
  80.     /*************************************************
  81.     *
  82.     *  Provera da li je bar jedna od stranica trugla jednaka nuli
  83.     *  Ako jeste to znaci da se neke koordinate poklapaju
  84.     *  U tom slucaju trazi se od korisnika da ponovo unese koordinate
  85.     *  krajnjih tacaka stranice koja je jedanaka nuli
  86.     *
  87.     ***************************************************/
  88.     while (a==0 || b==0 || c==0) {
  89.         /*********************************************************
  90.         *
  91.         *  Ako je stranica a jednaka nuli, prva i druga tacka se poklapaju
  92.         *
  93.         **********************************************************/
  94.         while (a==0) {
  95.             printf("\nKoorinate prve i druge tacke se poklapaju!\n");
  96.             /****************************************
  97.             *
  98.             *  Unos prve tacke
  99.             *
  100.             *****************************************/
  101.             printf("\nUnesite koordinate prve tacke: ");
  102.             printf("\n\tx= ");
  103.             scanf("%lf", &x1);
  104.             printf("\ty= ");
  105.             scanf("%lf", &y1);
  106.            
  107.             /****************************************
  108.             *
  109.             *  Unos druge tacke
  110.             *
  111.             *****************************************/
  112.             printf("\nUnesite koordinate druge tacke: ");
  113.             printf("\n\tx= ");
  114.             scanf("%lf", &x2);
  115.             printf("\ty= ");
  116.             scanf("%lf", &y2);
  117.            
  118.             a = sqrt(pow((x1-x2), 2)+pow((y1-y2), 2));
  119.         }
  120.         /*******************************************************
  121.         *
  122.         *  Ako je stranica b jednaka nuli, druga i treca tacka se poklapaju
  123.         *
  124.         ********************************************************/
  125.         while (b==0) {
  126.             printf("\nKoorinate druge i trece tacke se poklapaju!\n");
  127.             /****************************************
  128.             *
  129.             *  Unos druge tacke
  130.             *
  131.             *****************************************/
  132.             printf("\nUnesite koordinate druge tacke: ");
  133.             printf("\n\tx= ");
  134.             scanf("%lf", &x2);
  135.             printf("\ty= ");
  136.             scanf("%lf", &y2);
  137.            
  138.            
  139.             /****************************************
  140.             *
  141.             *  Unos trece tacke
  142.             *
  143.             *****************************************/
  144.             printf("\nUnesite koordinate trece tacke: ");
  145.             printf("\n\tx= ");
  146.             scanf("%lf", &x3);
  147.             printf("\ty= ");
  148.             scanf("%lf", &y3);
  149.            
  150.             b = sqrt(pow((x2-x3), 2)+pow((y2-y3), 2));
  151.         }
  152.         /******************************************************
  153.         *
  154.         *  Ako je stranica c jednaka nuli, prva i treca tacka se poklapaju
  155.         *
  156.         ********************************************************/
  157.         while (c==0) {
  158.             printf("\nKoorinate prve i trece tacke se poklapaju!\n");
  159.            
  160.             /****************************************
  161.             *
  162.             *  Unos prve tacke
  163.             *
  164.             *****************************************/
  165.             printf("\nUnesite koordinate prve tacke: ");
  166.             printf("\n\tx= ");
  167.             scanf("%lf", &x1);
  168.             printf("\ty= ");
  169.             scanf("%lf", &y1);
  170.            
  171.             /****************************************
  172.             *
  173.             *  Unos trece tacke
  174.             *
  175.             *****************************************/
  176.             printf("\nUnesite koordinate trece tacke: ");
  177.             printf("\n\tx= ");
  178.             scanf("%lf", &x3);
  179.             printf("\ty= ");
  180.             scanf("%lf", &y3);
  181.            
  182.             c = sqrt(pow((x1-x3), 2)+pow((y1-y3), 2));
  183.         }
  184.        
  185.         /*****************************************************
  186.         *
  187.         *  Ponovno racunanje stranica je neophodno jer
  188.         *  moze da se desi da se na primer prva i treca koordinara
  189.         *  poklapaju, odnosno da je stranica c jednaka nulu.
  190.         *  Kada korinsik ponovo unese koordinate prve i treca tacke
  191.         *  moze da se desi da se jedan od njih dve poklopi sa dugom.
  192.         *  Zbog toga se ponovo racunaju stranice,
  193.         *  da bi se obezbedila veca sigurnost!
  194.         *
  195.         *********************************************************/
  196.         a = sqrt(pow((x1-x2), 2)+pow((y1-y2), 2));
  197.         b = sqrt(pow((x2-x3), 2)+pow((y2-y3), 2));
  198.         c = sqrt(pow((x1-x3), 2)+pow((y1-y3), 2));
  199.  
  200.      }
  201.  
  202.     /************************************************
  203.     *
  204.     *  Ispis duzine stranica i obima trougla
  205.     *
  206.     *************************************************/
  207.     O = a+b+c;
  208.     printf("\n\nStranica a je %.2f!\n", a);
  209.     printf("\nStranica b je %.2f!\n", b);
  210.     printf("\nStranica c je %.2f!\n", c);
  211.     printf("\n Obim trougla je %.2f\n\n\n", O);
  212.  
  213.    
  214.     /****************************************************
  215.     *
  216.     *  Provera da li korinsik zeli da ponovo izvrsi program
  217.     *
  218.     *****************************************************/
  219.     scanf("%c", &again); /*ovo je neophodno zbog entera iz bafera tastature */
  220.     printf("\n\nDa li zelite da ponovite program? (y/n) ");
  221.     scanf("%c", &again);
  222.     while (again!='y' && again!='n') {
  223.         scanf("%c", &again); /*ovo je neophodno zbog entera iz bafera tastature */
  224.         printf("\nUnesite vrenost 'y' za DA ili 'n' za NE!\n");
  225.         printf("Da li zelite da ponovite program? (y/n) ");
  226.         scanf("%c", &again);
  227.         }
  228.  
  229. }
  230.     /****************************************************
  231.     *
  232.     * Kraj programa
  233.     *
  234.     *****************************************************/
  235.     printf("\nKRAJ PROGRAMA\n\n\n");
  236.     }
  237.  

Comments: Post a Comment



<< Home

Archives

November 2005   December 2005   January 2006  

This page is powered by Blogger. Isn't yours?