Przykłady prostych programów geodezyjnych w C i C++

1. Obliczenie długości ze współrzędnych


/* Program dlug.cpp

wersja szkolna
*/

/* Dolaczenie bibliotek standardowych */
#include <stdio.h>
#include <conio.h>
#include <ctype.h>
#include <stdlib.h>
#include <math.h>


/* Definicja stalych symbolicznych */
#define P 1     /* dolny zakres            */
#define K 10000  /* gorny zakres przedzialu */

char o;

/* Deklaracja funkcji  */

void czekaj();
void dlugosc();
double dlug(double x1, double y1, double x2, double y2);
void opis(void);
void koniec();



/* Definicja funkcji o nazwie main - glownej, ktora nie oczekuje zadnych
    wartosci argumentow */
/* void main ()  lub  void main(void)*/

/* ------------- Glowna ----- */
 void main()
{
 char znak;

 randomize();

 do
 {
  clrscr();

  printf("                 Program dlug.cpp\n");
  printf("               ------------------------\n\n");
  printf("                wersja szkolna\n");

  for (int i=1; i<4; i++)
  printf("\n");
  printf("\n          Menu glowne\n\n");
  printf("  1 : Obliczenie dlugosci ze wspolrzednych \n");
  printf("  2 : Krotki opis programu\n");
  printf("  3 : Wyjscie z programu \n");
  znak=getch();
  switch(znak)
    {
     case '1' : dlugosc();   break;
     case '2' : opis();   break;
     case '3' : koniec(); break;
    }
 }while(znak!='3');

} // main


//-------- Funkcje  -------------

void koniec()
{
 clrscr();
 printf("KONIEC");
}



void czekaj()
 {
  printf("Nacisnij cos ");
  while(!kbhit());
        getch();
 clrscr();
 }



void opis(void)
// char o;
{
 clrscr(); /* czyszczenie okna w trybie tekstowym */

 printf("            Program dlug.cpp\n");
 printf("\nProgram oblicza dlugosc t ze wspolrzednych\n" );
 printf("\nStosujemy znak kropki zamiast przecinka!\n");
 printf("\nNacisnij cos .. ");
 o=getch();
 clrscr();


} /* opis*/



void dlugosc()
{

float x1, y1, x2, y2, dx, dy, d;

clrscr();
printf("\nProgram oblicza dlugosc \n ");
printf("\Podaj x1, y1, x2, y2\n");

scanf("%f%f%f%f",&x1,&y1,&x2, &y2);

// cout << x1;

dx=x2-x1;
dy=y2-y1;

d=dlug(x1,y1,x2,y2);

printf("dx=%f dy=%f\n",dx,dy);

printf("d=%f\n",d);

czekaj();
clrscr();

}

/* Funkcja dlug */



double dlug(double x1, double y1, double x2, double y2)
{
 double dx, dy, d;
 dx=x2-x1;
 dy=y2-y1;
 d=sqrt(dx*dx+dy*dy);

 return d;
 }



Obliczenie azymutu i długości ze współrzędnych

/* Program az_dl.cpp
Obliczenie azymutu i dlugosci ze wspolrzednych
wersja szkolna
*/

/* Dolaczenie bibliotek standardowych */

#include <stdio.h>
#include <conio.h>
#include <ctype.h>
#include <stdlib.h>
#include <math.h>
#include <iostream.h>


/* Deklaracja funkcji  */

void czekaj();
void dlugosc();
double dlug(double x1, double y1, double x2, double y2);
void azymut();
void opis(void);
void koniec();


/* ------------Funkcja  glowna ----- */
 void main()
{
 char znak;
 do
 {
  clrscr();

  printf("               Program az_dl.CPP\n");

  for (int i=1; i<3; i++)
  printf("\n");
  printf("\n         Menu glowne\n\n");
  printf("  1 : Obliczenie dlugosci ze wspolrzednych \n");
  printf("  2 : Obliczenie azymutu ze wspolrzednych \n");
  printf("  3 : Krotki opis programu\n");
  printf("  4 : Wyjscie z programu \n");

  cout << "\nWcisnij opcje wyboru ";
  znak = getchar();
  switch(znak)
    {
     case '1' : dlugosc();   break;
     case '2' : azymut();   break;
         case '3' : opis(); break;
     case '4' : koniec(); break;
    }
 }while(znak!='4');

} // main


/* Definicja funkcji */

void koniec()
{
// clrscr();
 printf("KONIEC");
}

void czekaj()
 {
  printf("Nacisnij cos ");
 // while(!kbhit());
  getch();
// clrscr();
 }


void opis(void)
{
 char o;
 clrscr(); /* czyszczenie okna w trybie tekstowym */

 printf("            Program az_dl.cpp\n");
 printf("\nProgram oblicza dlugosc lub azymut \nze wspolrzednych 2 punktow P1(x1,y1), P2(x2,y2)\n" );
 printf("\nDane z klawiatury, oddzielone spacja.  \n");
 printf("\nUwaga! Liczbe dziesietna wprowadzamy z kropka, zamiast przecinka. \n ");
 printf("\nNacisnij cos .. ");
 getch();

}


void dlugosc()
{
float x1, y1, x2, y2, dx, dy, d;
clrscr();
cout << "\nObliczenie  dlugosci ze wspolrzednych 2 punktow: P1(x1,y1), P2(x2,y2):\n";
cout << "Podaj wspolrzredne oddzielone spacjami, liczby z kropka\n";
cout << "x1, y1, x2, y2 ==> ";
scanf("%f%f%f%f",&x1,&y1,&x2, &y2);
dx=x2-x1;
dy=y2-y1;
d=dlug(x1,y1,x2,y2);
cout << endl;
printf("Przyrosty:  dx=%f dy=%f\n",dx,dy);
printf("\nDlugosc: d=%.3f\n",d);
cout << endl;
czekaj();
clrscr();
}


/* Funkcja dlug */
double dlug(double x1, double y1, double x2, double y2)
{
 double dx, dy, d;
 dx=x2-x1;
 dy=y2-y1;
 d=sqrt(dx*dx+dy*dy);
 return d;
 }



void azymut()
{
 float pi, rg, rs, x1, y1, x2, y2, dx, dy, d, a, azg, azs;
  pi = 4.0 * atan(1.0);
 rg = 200.0 / pi;
 rs = 180.0 / pi;
clrscr();
cout << "\n\nObliczenie azymutu:\n";
cout << "Podaj wspolrzedne (oddzielone spacjami)\n";
cout << "x1, y1, x2, y2:   ";
scanf("%f%f%f%f",&x1,&y1,&x2, &y2);
dx=x2-x1;
dy=y2-y1;
d=dlug(x1,y1,x2,y2);
cout << endl;
printf("Przyrosty: dx=%f dy=%f  d = %f\n",dx,dy, d);

if (dx==0)
 {
  if (dy>0) a = pi / 2;
  else  a = 1.5 * pi;
 } // END IF dx==0

else  // if (dx != 0)
{
 a = atan(dy / dx);

    if (dx < 0) //  dx  <0
      a = a + pi;
     else
          {
            if (dy < 0)
         a = a + 2 * pi;
          }
}

azg = a * rg;  // obliczenie azymutu w gradach
azs = a * rs;  // obliczenie azymutu w stopniach
printf("dx = %6.3f   ", dx);
printf ("     dy = %6.3f\n", dy);
printf ("Azymuty: azg = %10.4f [grad]", azg);
printf ("   azs = %10.4f [stopn]\n", azs);
printf ("odleg  = %6.3f\n", dlug(x1, y1, x2, y2));
cout << endl;
czekaj();
clrscr();
}










Wersja Dev-cpp


/* Program azdldevc.cpp
Obliczenie azymutu i dlugosci ze wspolrzednych wersja szkolna
*/


/* Dolaczenie bibliotek standardowych */


#include <cstdlib>
#include <iostream>
#include <conio.h>
#include <math.h>

using namespace std;

/* Deklaracja funkcji  */

void czekaj();
void dlugosc();
double dlug(double x1, double y1, double x2, double y2);
void azymut();
void opis(void);
void koniec();
void puste_linie();


//-------------------------------------

// funkcja glowna
int main(int argc, char *argv[])

{
 int znak;

 znak=4;

 do
 {

  printf("                 Program az_dl.cpp\n");
  printf("               ------------------------\n");
  printf("                wersja szkolna \n");

  for (int i=1; i<4; i++)
  printf("\n");
  printf("\n          Menu glowne\n\n");
  printf("  0 : Wyjscie z programu \n");
  printf("  1 : Obliczenie azymutu ze wspolrzednych \n");
  printf("  2 : Obliczenie dlugosci ze wspolrzednych \n");
  printf("  3 : Krotki opis programu\n");

  cin >> znak;

  switch(znak)
    {
       case 0 :     break;
       case 1 : azymut();   puste_linie(); break;
          case 2 : dlugosc();  puste_linie(); break;
       case 3 : opis();  puste_linie(); break;
    }
 }while(znak!=0);
 
//  return 0;

 system("PAUSE");
 return EXIT_SUCCESS;

} // main


//--------------------------------------------



// Funkcje


void puste_linie()
{
// clrscr();
for (int i=1; i<=50; i++)
 printf("\n");
}


void czekaj()
 {
  for (int i=0; i<5; i++)
   cout << "\n";   
  printf("Funkcja czekaj (). Nacisnij cos ");
 
  while(!kbhit());
        getch();
// clrscr();
 }



void opis(void)

{
 char o;
// clrscr(); /* czyszczenie okna w trybie tekstowym */

 printf("            Program az_dl.cpp\n");
 printf("\nProgram oblicza dlugosc lub azymut ze wspolrzednych\n" );
 printf("\nDane z klawiatury, oddzielone spacja.  \n");
  printf("\nUwaga! Liczbe dziesietna wprowadzamy z kropka, zamiast przecinka. \n ");
 printf("\nNacisnij cos .. ");
 o=getch();
// clrscr();


} /* opis*/


void dlugosc()
{

float x1, y1, x2, y2, dx, dy, d;

cout << "\nProgram oblicza dlugosc \n ";

cout << "\nPodaj x1, y1, x2, y2 \n";

scanf("%f%f%f%f",&x1,&y1,&x2, &y2);

// cout << x1;

dx=x2-x1;
dy=y2-y1;

d=dlug(x1,y1,x2,y2);

printf("dx=%f dy=%f\n",dx,dy);

printf("d=%f\n",d);


czekaj();
//clrscr();


  printf("\nNacisnij jakis klawisz... ");
  while(!kbhit()); getch();
//  clrscr();


}



/* Funkcja dlug */

double dlug(double x1, double y1, double x2, double y2)
{
 double dx, dy, d;
 dx=x2-x1;
 dy=y2-y1;
 d=sqrt(dx*dx+dy*dy);

 return d;
 }



// Funkcja azymut

void azymut()
{

 float pi, rg, rs, x1, y1, x2, y2, dx, dy, d, a, azg, azs;

 pi = 4.0 * atan(1.0);
 rg = 200.0 / pi;
 rs = 180.0 / pi;

//clrscr();

cout << "\nProgram oblicza dlugosc \n ";
printf("\nPodaj x1, y1, x2, y2\n");

// scanf("%f%f%f%f",&x1,&y1,&x2, &y2);
cin >> x1 >> y1 >> x2 >> y2;

dx=x2-x1;
dy=y2-y1;

d=dlug(x1,y1,x2,y2);

printf("dx=%f dy=%f  d = %f\n",dx,dy, d);


if (dx==0)
 { //  IF dx==0

  if (dy>0)
          a = pi / 2;
  else
          a = 1.5 * pi;
 } //  IF dx==0


else  // if (dx != 0)

{  // if (dx != 0)
 a = atan(dy / dx);

    if (dx < 0) //  dx  <0
      a = a + pi;
     else
          { // dx >=0
            if (dy < 0)
         a = a + 2 * pi;
          } // dx >=0
} // if (dx != 0)


azg = a * rg;  // obliczenie azymutu w gradach
azs = a * rs;  // obliczenie azymutu w stopniach

printf("dx = %6.3f\n", dx);
printf ("dy = %6.3f\n", dy);
printf ("azg = %10.4f [grad]\n", azg);
printf ("azs = %10.4f [stopn]\n", azs);
printf ("odleg z funkcji = %6.3f\n", dlug(x1, y1, x2, y2));

czekaj();

} // koniec funkcji azymut



Obliczenie pola czworoboku ze wspolrzednych


// PCxy.cpp
// Obliczenie pola czworoboku ze wspolrzednych
// Zad I. Gr4
// Dolaczenie bibliotek jezyka
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
#include <dos.h>

// Funkcje - zapowiedź
void witaj();
void pomoc();
void dane();
double area(double x1, double y1, double x2, double y2, double x3, double y3,
double x4, double y4);
double area1(double x1, double y1, double x2, double y2, double x3, double y3);
void boki();
float area2(float da, float db, float dc);
float dl(float x1, float y1, float x2, float y2);
void wyniki();
void WydrPlik();

// zmienne globalne
float x1, y1, x2, y2, x3, y3, x4, y4; // dane
float a, b, c, d, e, f, p1, p2, p3;  // wyniki

// Funkcja glowna
void main()
{
 int kont='t';
 do
 {
   clrscr();
   witaj();
   dane();
   p1=area(x1,y1,x2,y2,x3,y3, x4, y4);
   p2=area1(x1,y1,x2,y2,x3,y3)+ area1(x4,y4,x1,y1,x3,y3);
   boki();
   p3=area2(a,b,e)+area2(d,c,e);
   wyniki();
   WydrPlik();
   puts("\nDalsze obliczenia (T, lub t) ");
   fflush(stdin);
   kont=getchar();
  } while (kont=='T' || kont=='t');
} // Koniec funkcji glownej

// Inne funkcje
void  witaj()
{
       int odp;
       clrscr();
       puts ("Program Obliczenie pola trojkata ze wspolrzednych ");
       printf("\n1 - obliczenia , 2 - koniec 3 - pomoc i obliczenia => ");
       odp=getchar();
       if(odp == '2') exit(1);
       if (odp== '3') pomoc();
 }



void pomoc()
{
 clrscr();
 puts("Program oblicza pole czworoboku na podstawie danych wspolrzednych 3 punktow");
 puts("wg wzoru ");
 puts("    |DX13 DY13|");
 puts("2P= |DX24 DY24|1\n");
 puts("czyli\n");
 puts("P=(DX13*DY24-DX24*DY13)/2\n");
 puts("lub ze wzoru wyznacznikowego na pole trojkata\n");
 puts("              - a - ");
 puts(" 1(x1,y1) o----------o 2(x2,y2)");
 puts("          |          |  ");
 puts("        d |          | b   ");
 puts("          |          | ");
 puts(" 4(x4,y4) o----------o 3(x3,y3)");
 puts("               c    ");
 puts("Boki 1-3 = e,  4-2 = f");
 putchar('\n');
 puts("Kontrola: Obliczenie dlugosci bokow i pola ze wzoru Herona\n");
 fflush(stdin);
 printf("Nacisnij Enter:  ");
 getchar();
}

void dane()
{
int kont='n';
clrscr();
puts("\nWprowadzenie danych: współrzednych 3 punktów: A(x1,y1), B(x2,y2), C(x3,y3)");

do
{
 printf("\nPodaj  x1 => ");
 scanf("%f",&x1);
 printf("Podaj  y1 => ");
 scanf("%f",&y1);
 printf("\nPodaj  x2 => ");
 scanf("%f",&x2);
 printf("Podaj  y2 => ");
 scanf("%f",&y2);
 printf("\nPodaj  x3 => ");
 scanf("%f",&x3);
 printf("Podaj  y3 => ");
 scanf("%f",&y3);
 printf("\nPodaj  x4 => ");
 scanf("%f",&x4);
 printf("Podaj  y4 => ");
 scanf("%f",&y4);
 puts("\n\nWprowadzono dane: ");
 printf("1(%.3f,%.3f)\n2(%.3f,%.3f)\n3(%.3f,%.3f)\n4(%.3f,%.3f)\n", x1,y1,x2,y2,x3,y3, x4,y4);
 printf("\nDane dobre (T, N) ");
 fflush(stdin);
 kont=getchar();
 } while (kont=='N' || kont=='n');

}

// Pole z przyrostow wspolrzednych
double area(double x1, double y1, double x2, double y2, double x3, double y3,
double x4, double y4)
{
 double  p2, p1, dx13, dy13, dx24, dy24;
 clrscr();
 puts("Funkcja area(x1,y1,x2,y2,x3,y3, x4, y4\n");
 printf("x1=%.3f\t",x1);
 printf("y1=%.3f\n",y1);
 printf("x2=%.3f\t",x2);
 printf("y2=%.3f\n",y2);
 printf("x3=%.3f\t",x3);
 printf("y3=%.3f\n",y3);
 printf("x4=%.3f\t",x4);
 printf("y4=%.3f\n",y4);
 dx13=x3-x1; dy13=y3-y1;
 dx24=x4-x2; dy24=y4-y2;
 printf("dx13=%.3f\t",dx13);
 printf("dy13=%.3f\n",dy13);
 printf("dx24=%.3f\t",dx24);
 printf("dy24=%.3f\n",dy24);
 p2=dx13*dy24-dx24*dy13;
 p1=p2*0.5;
 return(p1);
}

double area1(double X1, double Y1, double X2, double Y2, double X3, double Y3)
// met. wyznacznikowa
{
 float p2;
 clrscr();
 p2=(X1*Y2+X2*Y3+X3*Y1-X2*Y1-X3*Y2-X1*Y3)/2;
 printf("Funkcja area1().  Pole 2 = %f\n",p2);
 fflush(stdin);
// puts("Nacisnij Enter ");
// getchar();
 return(p2);
 }

// dlugosc ze wspolrz
float dl(float x1, float y1, float x2, float y2)
{
float d, dx, dy;
dx=x2-x1; dy=y2-y1;
d=sqrt(dx*dx+dy*dy);
return(d);
}

// Obliczenie bokow
void boki()
{
 clrscr();
 puts("Obliczenie bokow\n");
 a=dl(x1,y1,x2,y2);
 b=dl(x2,y2,x3,y3);
 c=dl(x4,y4,x3,y3);
 d=dl(x4,y4,x1,y1);
 e=dl(x1,y1,x3,y3);
 f=dl(x2,y2,x4,y4);
// printf("Boki:");
// printf("\na=%.3f  b=%.3f  c=%.3f\n",a, b, c);
// printf("\nd=%.3f  e=%.3f  f=%.3f\n",d, e, f);
// puts("\nNacisnij Enter ");
// getchar();
}

// Pole ze zworu Herona - dane boki
float area2(float da, float db, float dc)
{
 clrscr();
// puts("Funkcja area(3) - wzor Herona\n");
 float p, ph, ph2;
 p=0.500*(da+db+dc);
 ph=sqrt(p*(p-da)*(p-db)*(p-dc));
 return(ph);
}


// Wyswietlenie wynikow na ekran
void wyniki()
{
clrscr();
puts("\tWyniki obliczen");
putchar('\n');
puts("\nPola obliczone: ");
putchar('\n');
printf("\nPole z form Hausbrandta                 :  %.3f",p1);
printf("\nPole z metody wyznacznikowej            :  %.3f",p2);
putchar('\n');
printf("\nPole na podstawie bokow wg wzoru Herona :  %.3f",p3);
putchar('\n');
puts("\nBoki obliczone ze wspolrzednych\n");
printf("a = %.3f  b = %.3f  c = %.3f ", a, b, c);
printf("d = %.3f  d = %.3f  f = %.3f ", d, e, f);
putchar('\n');
putchar('\n');
puts("\nNacisnij Enter ");
getchar();
}

// Wydruk do pliku - dopisywanie
void WydrPlik()
{
FILE *fw;  // zmienna plikowa
char nazwapliku[20], obl[20];
struct date d; // struktura daty
clrscr();
puts("Wydruk wynikow do pliku");
printf("\nPodaj nazwe pliku wynikow (do 8 znakow, np. w1.txt) :   ");
gets(nazwapliku);
printf("\nNazwisko obliczajacego: ");
gets(obl);
fw=fopen(nazwapliku,"a"); // otwarcie pliku do dopisywania wynikow

if (fw==NULL)
   {
    puts("Nie mozna otworzyc lub zalozyc pliku");
    exit(1);
   }
fprintf(fw,"\t\tProgram PCxy.cpp\n");
fprintf(fw,"\nObliczenie pola czworoboku ze wspolrzednych punktow\n");
fprintf(fw,"\nDane wspolrzedne punktow: \n");
fprintf(fw,"1(%.3f, %.3f)\n2(%.3f, %.3f)\n", x1,y1,x2,y2);
fprintf(fw,"3(%.3f, %.3f)\n4(%.3f, %.3f)\n", x3,y3,x4,y4);
fprintf(fw,"\n\tWyniki obliczen");
fprintf(fw,"\nPola obliczone: ");
fprintf(fw,"\nPole z form Hausbrandta                 :  %.3f",p1);
fprintf(fw,"\nPole z metody wyznacznikowej            :  %.3f",p2);
fprintf(fw,"\nPole na podstawie bokow wg wzoru Herona :  %.3f",p3);
fprintf(fw,"\nBoki obliczone ze wspolrzednych: ");
fprintf(fw,"\na=1-2, b=2-3, c=3-4, d=1-4, e=1-3, f=2-4\n");
fprintf(fw,"a = %.3f  b = %.3f  c = %.3f ", a, b, c);
fprintf(fw,"d = %.3f  e = %.3f  f = %.3f ", d, e, f);
fprintf(fw,"\n\nObliczyl: %s   ", obl);
getdate(&d);
fprintf(fw,"    Data: %d-%d-%d\n\n", d.da_day, d.da_mon,  d.da_year);
fprintf(fw,"\n\n");
fclose(fw); // zamkniecie pliku
}



Pole trojkata - dane 2 dlugosci i kat miedzy nimi


/* PT2dKt.cpp Jezyk C, C++
Pole trojkata - dane 2 dlugosci i kat miedzy nimi
Grupa 2, zad 1.  
*/
// Dolaczenie bibliotek jezyka
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
#include <dos.h>

// Definicja stalych
#define RG (200.0/M_PI) // RG - Ro gradowe, M_PI - Pi z bibliot. math.h
#define PI M_PI

// Zapowiedz funkcji
void witaj();
void pomoc();
void dane();
float area1(float b, float c, float alfa);
float area(float da, float db, float dc);
void Kontrola();
void wyniki();
void WydrPlik();

// Zmienne
float a, b, c, ag, ar, pole, p, p1, p2, p3, ha, hb, hc;
float a1, a2, b1, b2, g1, g2, s1, s2; // katy obliczone
/* ag - kat Alfa[grad], ar - Alfa[rad] */
char nazwapliku[]="w_PT2bK.txt"; /* plik wynikow */
char obl[20]="Obliczajacy"; // Nazwisko obliczajacego

//-------------------------------------------------------
// Funkcja glowna
void main()
{
int kont='t';
 do
 {
   clrscr();
   witaj();
   dane();
   pole=area1(b,c,ag);
   p=area(a,b,c);
   Kontrola();
   wyniki();
   WydrPlik();
   puts("\nDalsze obliczenia (T, lub t) ");
   fflush(stdin);
   kont=getchar();
 } while (kont=='T' || kont=='t');
}

//------------------------------------------------------

// Inne funkcje
void  witaj()
{
       int odp;
       clrscr();
       puts ("Program PT2KT.CPP\n");
       puts("Obliczenie pola trojkata, gdy dane 2 boki i kat miedzy nimi\n");
       puts("1 - obliczenia , 2 - koniec 3 - pomoc i obliczenia ");
       odp=getchar();
       if(odp == '2') exit(1);
       if (odp== '3') pomoc();
 }

void pomoc()
{
 int odp;
 clrscr();
 puts("Program oblicza pole trojkata na podstawie danych 2 bokow b, c  ");
 puts("i kata Alfa miedzy nimi");
 puts("\n"); /* 2 puste linie */
 puts("     Szkic\n");
 puts("       B ");
 puts("       o");
 puts("  a? /  \\ c");
 puts("    /    \\");
 puts("   /   Alfa");
 puts("  o----b----o");
 puts("C           A");
 puts("\n\nDane: b, c, Alfa.  Obliczyc: bok a i pole trojkata\n");
 getchar();
 puts("\n1 - obliczenia, 2 - koniec ");
 odp=getchar();
 if(odp =='2') exit(1);

}

void dane()
{
float ar1, ar2, rg;
// 63.661977;
clrscr();
rg=200.0/M_PI;
puts("\t\tDane\n");
puts("Wprowadzenie danych: dlugosci bokow trojkata:  b, c, Alfa ");
printf("Podaj dlugosc  b           => ");
scanf("%f",&b);
printf("Podaj dlugosc  c           => ");
scanf("%f",&c);
printf("Podaj kat      Alfa[grad]  => ");
scanf("%f",&ag);
puts("\nWprowadzono dane: \n");
printf("b = %f   c = %f   Alfa[grad] = %f \n", b, c, ag);
ar=ag/rg;
ar2=ag/RG;
ar1=ag/rg;
puts("\nWydruki kontrolne:\n");
printf("PI= %f  RG=%f  rg=%f", PI, RG, rg);
printf("\nRG %f  ag= %f  ar %f  ar1=%f  ar2=%f\n",RG, ag, ar,  ar1, ar2);
printf("\ncos = %f ",cos(ar));
a=sqrt(b*b+c*c-2*b*c*cos(ar));
puts("\n\nObliczone");
printf("\nAlfa[grad]= %f  Alfa[rad]= %.10f",ag, ar);
printf("\nBok a= %.3f\n", a);
fflush(stdin);
puts("\nNacisnij Enter");
getchar();
}

// Pole z wzoru Herona
float area(float da, float db, float dc)
{
 float p, pole, p2;
 p=0.5*(da+db+dc);
 pole=sqrt(p*(p-da)*(p-db)*(p-dc));
 p2=2*pole;
 ha=p2/a; hb=p2/b; hc=p2/c;
 return(pole);
}

// Pola
float area1(float b, float c, float alfa)
{
float pp, rg;
rg=200.0/M_PI;
pp=0.5*b*c*sin(alfa/rg);
ha=2.0*pp/a;
hb=2*pp/b;
hc=2*pp/c;
p1=a*ha/2;
p2=b*hb/2;
p3=c*hc/2;
return(pp);
}

void Kontrola()
{
float sa1, sa2, sb1, sb2, sg1, sg2, rg;
rg=RG;
clrscr();
sa1=hb/c; sa2=hc/b;
sb1=hc/a; sb2=ha/c;
sg1=hb/a; sg2=ha/b;
a1=asin(sa1); a2=asin(sa2);
b1=asin(sb1); b2=asin(sb2);
g1=asin(sg1); g2=asin(sg2);
a1=a1*rg; a2 *= rg;
b1 *= rg; b2 *= rg;
g1 *= rg; g2 *= rg;
s1=a1+b1+g1;
s2=a2+b2+g2;
puts("Kontrola - obliczenie katow   ");
putchar('\n');
printf("Ro[grad]=%f",rg);
printf("\nAlfa1  = %.4f   Alfa2  = %.4f ", a1, a2);
printf("\nBeta1  = %.4f   Beta2  = %.4f ", b1, b2);
printf("\nGamma1 = %.4f   Gamma2 = %.4f ", g1, g2);
printf("\nSuma katow 1 = %.4f", s1);
printf("\nSuma katow 2 = %.4f", s2);
fflush(stdin);
puts("\nNacisnij Enter");
getchar();
}


// Wyswietlenie wynikow
void wyniki()
{
clrscr();
puts("\tWyniki obliczen\n");
puts("Obliczenie pola trojkata gdy dane 2 boki: b i c oraz kat Alfa\n");
puts("Dane boki  b, c\n");
printf("b = %.3f  b = %.3f  Alfa = %.4f\n", b, c, ag);
printf("Kat Alfa = %.4f[grad]\n",  ag);
putchar('\n');
puts("Wyniki:");
printf("\nPole = %2.f ", pole);
printf("\nBok a = %.3f",a);
printf("\nPole obliczone z dlugosci  = %2.f\n", p);
printf("\nKaty obliczone: Alfa1 %.4f, Beta1 %.4f , Gamma1 %.4f ",a1, b1, g1);
printf("\nKaty obliczone: Alfa2 %.4f, Beta2 %.4f , Gamma2 %.4f ",a2, b2, g2);
printf("\nKaty obliczone: Alfa1 %.4f, Beta1 %.4f , Gamma1 %.4f ",a1, b1, g1);
printf("\nKaty obliczone: Alfa2 %.4f, Beta2 %.4f , Gamma2 %.4f ",a2, b2, g2);
putchar('\n');
printf("\nWyniki obliczen w pliku %s\n",nazwapliku);
fflush(stdin);
puts("\nNacisnij Enter");
getchar();
}

// Wydruk do pliku
void WydrPlik()
{
FILE *f; // zmienna plikowa
struct date d;  // struktura daty
clrscr();
f=fopen(nazwapliku,"a"); // Otwarcie pliku do dopisywania
if (f==NULL)
   {
    puts("Nie mozna otworzyc pliku");
    exit(1);
   }
fprintf(f,"\t\tProgram PT2DKat.cpp\n");
fprintf(f,"Obliczenie pola trojkata gdy dane 2 boki i kat miedzy nimi\n");
fprintf(f,"\nDane boki  b, c, Kat Alfa[grad]\n");
fprintf(f,"b = %.3f  c = %.3f  Alfa = %.4f[grad]\n", b, c, ag);
fprintf(f,"\n\tWyniki obliczen");
fprintf(f,"\nPole = %10.2f \n", pole);
fprintf(f,"\nBok a = %10.3f \n", a);
fprintf(f,"\nPole z wzoru Herona = %10.2f \n", p);
fprintf(f,"\nWysokosci: ha= %.3f  hb= %.3f  hc= %.3f", ha, hb, hc);
fprintf(f,"\nPola kontrolne: a*ha/2 = %.2f   b*hb/2 = %.2f  c*hc/2= %.2f ",
a*ha/2, b*hb/2, c*hc/2);
fprintf(f, "\nKaty obliczone: Alfa1 %.4f, Beta1 %.4f , Gamma1 %.4f ",a1, b1, g1);
fprintf(f,"\nKaty obliczone: Alfa2 %.4f, Beta2 %.4f , Gamma2 %.4f ",a2, b2, g2);
fprintf(f,"\n\nObliczyl: %s   ", obl);
getdate(&d);
fprintf(f,"    Data: %d-%d-%d\n\n", d.da_day, d.da_mon,  d.da_year);
fclose(f);
printf("\nWyniki obliczen w pliku %s\n",nazwapliku);
fflush(stdin);

}


Obliczenie trojkata, dane 2 kąty i bok


// PT2KBok.cpp
// Obliczenie trojkata, dane 2 kąty i bok
// Zad I. 

// Dolaczenie bibliotek jezyka
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
#include <dos.h>

// definicja dtalych
#define ROG (200/M_PI) // ROgrad z M_PI
#define PI (4.0*atan(1.0))  // Pi  obliczone
#define RG (200.0/PI)  // Ro w grad z PI

// Funkcje - zapowiedź
void witaj();
void pomoc();
void dane();
void boki();
void area();
float area2(float da, float db, float dc);
void wyniki();
void WydrPlik();

// zmienne globalne
float alfa, beta, c; // dane
float gamma, a, b, hc1, hc2, p1, p2, p3, p4, p5, p6;  // wyniki
double  ar, br, gr;

//----------------------------------------------------------------
// Funkcja glowna
void main()
{
 int kont='t';
 do
 {
   clrscr();
   witaj();
   dane();
   boki();
   area();
   p3=area2(a,b,c);
   wyniki();
   WydrPlik();
   puts("\nDalsze obliczenia (T, lub t) ");
   fflush(stdin);
   kont=getchar();
  } while (kont=='T' || kont=='t');

} // Koniec main()


//-------------------------------------------------------------
// Funkcje

void  witaj()
{
       int odp;
       clrscr();
       puts ("Program Obliczenie pola trojkata gdy dane 2 katy i dlugosc boku ");
       printf("\n1 - obliczenia , 2 - koniec 3 - pomoc i obliczenia => ");
       odp=getchar();
       if(odp == '2') exit(1);
       if (odp== '3') pomoc();
 }


void pomoc()
{
 clrscr();
 puts("Program oblicza pole trojkata na podstawie danych 2 katow i boku\n");
 puts("Szkic i oznaczenia\n");
 puts("               C ");
 puts("              /|\\ ");
 puts("             / | \\");
 puts("          a /hc|  \\ b ");
 puts("          Beta | Alfa  ");
 puts("        B o--------o A");
 puts("               c    ");
 puts("Dane: Alfa =<(BAC) w punkcie A, Beta=<(CBA)w punkccie B; |AB| = c");
 puts("Niewiadome: Gamma=<(ACB) w punkcie C, boki a, b, pole trojkata ABC");
 puts("Obliczenia: ");
 puts(" Gamma = 200 - (Alfa + Beta)");
 puts("PI=4*atan(1); RG=200/PI lub ROG=(200/M_PI) gdzie M_PI -z bibl. math.h");
 puts("Katy w [rad]: kat_rad=kat_grad/ROG; ar=Alfa/ROG; br=Beta/ROG; gr=Gamma/rg");
 puts("Boki: a=c*sin(ar)/sin(gr); b=c*sin(br)/sin(gr) - w radianach");
 puts("Wysokosci: hc1=a*sin(br); hc2=b*sin(ar);");
 puts("Pola: p1=c*hc1/2;  p2=c*hc2/2;");
 puts("Kontrola:");
 puts("Pole ze wzoru Herona: p3=sqrt(p((p-a)*(p-b)*(p-c))/2; p=1/2(obwodu)");
 puts("Pola na podstawie 2 bokow i kata miedzy nimi");
 puts("p4=0.5*a(c(sin(br); p5=0.5*b*c*sin(ar); p6=0.5*a*b*sin(gr)");
 putchar('\n');
 fflush(stdin);
 printf("Nacisnij Enter:  ");
 getchar();
}


void dane() // Wprowadzenie danych
{
int kont='n';
clrscr();
puts("\nWprowadzenie danych: katow Alfa i Beta w gradach i boku c\n");

do
{
 printf("Podaj  Alfa[grad]      => ");
 scanf("%f",&alfa);
 printf("Podaj  Beta[grad]      => ");
 scanf("%f",&beta);
 printf("\nPodaj dlugosc boku c => ");
 scanf("%f",&c);
 puts("\n\Wprowadzono dane: ");
 printf("Alfa=%.4f  Beta=%.4f  c=%.f", alfa, beta, c);
 printf("\nDane dobre (T, N) ");
 fflush(stdin);
 kont=getchar();
 } while (kont=='N' || kont=='n');

 gamma=200-(alfa+beta);
 printf("\nGamma =  %.4f",gamma);
 // Katy w radianach
 ar=alfa/ROG;
 br=beta/ROG;
 gr=gamma/ROG;
 printf("\nsin(ar)=%f, sin(br)=%f  sin(gr)=%f", sin(ar), sin(br), sin(gr));
// a=c*sin(ar)/sin(gr);
// b=c*sin(br)/sin(gr);
// hc1=a*sin(br);
// hc2=b*sin(ar);
}


// Obliczenie bokow
void boki()
{
 clrscr();
 puts("Obliczenie bokow\n");
 a=c*sin(ar)/sin(gr);
 b=c*sin(br)/sin(gr);
 hc1=a*sin(br);
 hc2=b*sin(ar);
}



void area() // pola
{
 clrscr();
 p1=a*hc1/2;
 p2=c*hc2/2;
 p4=0.5*a*c*sin(br);
 p5=0.5*b*c*sin(ar);
 p6=0.5*a*b*sin(gr);
}




float area2(float da, float db, float dc) // pole z wzoru Herona
{
 clrscr();
 float p, ph, ph2;
 p=0.500*(da+db+dc);
 ph=sqrt(p*(p-da)*(p-db)*(p-dc));
 return(ph);
}


void wyniki() // wyniki na ekran
{
clrscr();
printf("\nObliczenie pole trojkata na podstawie danych 2 katow i boku\n");
printf("\nDane: Alfa = %.4f  Beta=%.4f  c = %.4f\n",alfa, beta, c);
puts("\tWyniki obliczen");
putchar('\n');
printf("Kat Gamma = %.4f",gamma);
printf("\nBoki: a=%.3f  b=%.3f\n", a, b);
puts("\Pola obliczone: ");
putchar('\n');
printf("\nPole obliczone z wysokosci hc:\n");
printf("\P1=c*hc1= %.3f,  P2= c*hc2=%.3f\n",p1, p2);
printf("\Pole z obliczone z dlugosci bokow wzorem Herona:\n");
printf("P3= sqrt(p*(p-a)*(p-b)*(p-c))= %.3f\n",p3);
putchar('\n');
printf("\nPole na podstawie 2 bokow i kata miedzy nimi:\n",p3);
printf("P4=0.5*a*c*sin(Beta) = %.3f\n", p4);
printf("P5=0.5*b*c*sin(Alfa) = %.3f\n", p5);
printf("P6=0.5*a*b*sin(Gamma)= %.3f\n", p6);
putchar('\n');
puts("\Nacisnij Enter ");
getchar();
}


// Wydruk do pliku - dopisywanie
void WydrPlik()
{
FILE *fw;  // zmienna plikowa
char nazwapliku[20], obl[20]; // nazwa pliku, nazwisko obliczajacego
struct date d; // struktura do daty

clrscr();
puts("Wydruk wynikow do pliku");
printf("\nPodaj nazwe pliku wynikow (do 8 znakow, np. w1.txt) :   ");
gets(nazwapliku);
printf("\nNazwisko obliczajacego: ");
gets(obl);

fw=fopen(nazwapliku,"a"); // otwarcie pliku w trybie dopisywania

if (fw==NULL)
   {
    puts("Nie mozna otworzyc lub zalozyc pliku");
    exit(1);
   }

fprintf(fw,"\t\tProgram PT2Kbok.cpp\n");
fprintf(fw,"\nProgram oblicza pole trojkata na podstawie danych 2 katow i boku\n");
fprintf(fw,"\nSzkic i oznaczenia\n");
fprintf(fw,"               C \n");
fprintf(fw,"               o \n");
fprintf(fw,"              / \\ \n");
fprintf(fw,"             / | \\\n");
fprintf(fw,"          a /hc|  \\ b \n");
fprintf(fw,"          Beta | Alfa \n");
fprintf(fw,"        B o---------o A\n");
fprintf(fw,"               c    \n");
fprintf(fw,"\nDane: Katy Alfa =<(BAC) w punkcie A, Beta=<(CBA) w punkcie B");
fprintf(fw,"\noraz dlugosc boku |AB| = c");
fprintf(fw,"\nNiewiadome: Kąt Gamma =<(ACB)w punkcie C, boki a, b, pole trojkata ABC");
fprintf(fw,"\nDane: Alfa = %.4f  Beta=%.4f  c = %.4f\n",alfa, beta, c);
fprintf(fw,"\n\tWyniki obliczen");
fprintf(fw,"\nKat Gamma = %.4f",gamma);
fprintf(fw,"\nBoki: a=%.3f  b=%.3f, wysokosc hc1=%.3f,  hc2=%.3f", a, b, hc1, hc2);
fprintf(fw,"\nPola obliczone: ");
fprintf(fw,"\nPole obliczone z wysokosci hc:\n");
fprintf(fw,"\P1=c*hc1= %.3f,  P2= c*hc2=%.3f\n",p1, p2);
fprintf(fw,"\Pole z obliczone z dlugosci bokow wzorem Herona:\n");
fprintf(fw,"P3= sqrt(p*(p-a)*(p-b)*(p-c))= %.3f\n",p3);
fprintf(fw,"\nPole na podstawie 2 bokow i kata miedzy nimi:\n",p3);
fprintf(fw,"P4=0.5*a*c*sin(Beta) = %.3f\n", p4);
fprintf(fw,"P5=0.5*b*c*sin(Alfa) = %.3f\n", p5);
fprintf(fw,"P6=0.5*a*b*sin(Gamma)= %.3f\n", p6);
fprintf(fw,"\n\nObliczyl: %s   ", obl);
getdate(&d);
fprintf(fw,"    Data: %d-%d-%d\n\n", d.da_day, d.da_mon,  d.da_year);
fprintf(fw,"\n\n");
fclose(fw); // zamkniecie pliku
}


Pole trojkata, gdy dane dlugosci bokow


// PTHeron.cpp - w C++
// Pole trojkata, gdy dane dlugosci bokow
// Grupa 1:  zad. 1
// Dolaczenie bibliotej jezyka C, C++
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
#include <dos.h>

// Zapowiedz funkcji
void witaj();
void pomoc();
void dane();
float area(float da, float db, float dc);
void wyniki();
void WydrPlik();
void KontrolaBokow();

// Zmienne typu float
float a, b, c, p, ha, hb, hc;


// Funkcja glowana
void main()
{
 int kont='t';
 do
 {
   clrscr();
   witaj();  // wywolanie funkcji witaj()
   dane();
   KontrolaBokow();
   p=area(a,b,c);
   wyniki();
   WydrPlik();
   puts("\nDalsze obliczenia (T, lub t) ");
   fflush(stdin);
   kont=getchar();
  } while (kont=='T' || kont=='t');
}


// Funkcje inne
void  witaj()

{
       int odp;
       clrscr();
       puts ("Program Obliczenie pola trojkata, gdy dane boki");
       puts("1 - obliczenia , 2 - koniec 3 - pomoc i obliczenia ");
       odp=getchar();
       if(odp == '2') exit(1);
       if (odp== '3') pomoc();
 }


 void pomoc()
{
 clrscr();
 puts("Program oblicza pole trojkata na podstawie danych bokow a, b, c\n");
 puts("    B ");
 puts("    o");
 puts(" a /  \\ c");
 puts("  /    \\");
 puts("Co---b---oA");
 fflush(stdin);
 puts("\nNacisnij Enter");
 getchar();
}

void dane()
{
clrscr();
puts("\t\tDane");
puts("Wprowadzenie danych: dlugosci bokow trojkata: a, b, c ");
printf("Podaj a  => ");
scanf("%f",&a);
printf("Podaj b  => ");
scanf("%f",&b);
printf("Podaj c  => ");
scanf("%f",&c);
puts("Wprowadzono dane: ");
printf("a = %f   b = %f   c = %f ", a, b, c);
puts("\nNacisnij Enter");
getchar();
}

float area(float da, float db, float dc)
{
 float p, pole, p2;
 p=0.5*(da+db+dc);
 pole=sqrt(p*(p-da)*(p-db)*(p-dc));
 p2=2*pole;
 ha=p2/a; hb=p2/b; hc=p2/c;
 return(pole);
}

void wyniki()
{
clrscr();
puts("Obliczenie pola trojkata wg wzoru Herona");
puts("Dane boki a, b, c\n");
printf("a = %.3f  b = %.3f  c = %.3f ", a, b, c);
putchar('\n');
printf("\nPole = %f ", p);
puts("\nNacisnij Enter");
getchar();
}


void KontrolaBokow()
{
int w1, w2, w3, w;
w1 = a<(b+c);
w2 = b<(a+c);
w3 = c<(a+b);
w = w1 && w2 && w3;
clrscr();
puts("Kontrola bokow: bok < sumy 2 bokow pozostalych  ");
putchar('\n');
if ( w != 1)
{ puts("To nie jest trojkat"); getchar();  exit(1); }
else
printf("\nTrojkat OK ");
puts("\nNacisnij Enter");
getchar();
}


void WydrPlik()
{
FILE *f;
char nazwapliku[20], obl[20];
struct date d;
clrscr();
puts("Wydruk wynikow do pliku");
printf("\nPodaj nazwe pliku wynikow (do 8 znakow, np. w1.txt) :   ");
gets(nazwapliku);
printf("\nNazwisko obliczajacego: ");
gets(obl);

f=fopen(nazwapliku,"a");

if (f==NULL)
   {
    puts("Nie mozna otworzyc pliku");
    exit(1);
   }
fprintf(f,"\t\tProgram PT3boki.cpp\n");
fprintf(f,"Obliczenie pola trojkata wg wzoru Herona\n");
fprintf(f,"\nDane boki a, b, c\n");
fprintf(f,"a = %.3f  b = %.3f  c = %.3f\n", a, b, c);
fprintf(f,"\n\tWyniki obliczen");
fprintf(f,"\nPole = %10.2f \n", p);
fprintf(f,"\nWysokosci: ha= %.3f  hb= %.3f  hc= %.3f", ha, hb, hc);
fprintf(f,"\nPola kontrolne: a*ha/2 = %.2f   b*hb/2 = %.2f  c*hc/2= %.2f ",
a*ha/2, b*hb/2, c*hc/2);
fprintf(f,"\n\nObliczyl: %s   ", obl);
getdate(&d);
fprintf(f,"    Data: %d-%d-%d ", d.da_day, d.da_mon,  d.da_year);
fprintf(f,"\n\n");
fclose(f);
}



Obliczenie pola trojkąta ze wspolrzednych punktow

// PTxy.cpp
// Obliczenie pola trojkąta ze wspolrzednych punktow
// Zad I, Gajewski, Kaleta

// Dolaczenie bibliotek jezyka C
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
#include <dos.h>

// #define JD  0.500000000

// Funkcje - zapowiedz
void witaj();
void pomoc();
void dane();
double area(double x1, double y1, double x2, double y2, double x3, double y3);
double area1(double x1, double y1, double x2, double y2, double x3, double y3);
void boki();
float area2(float da, float db, float dc);
float dl(float x1, float y1, float x2, float y2);
void wyniki();
void WydrPlik();

// Zmienne
float x1, y1, x2, y2, x3, y3, a, b, c, p1, p2, p3, pole, ha, hb, hc;



// Funkcja glowna
void main()
{
 int kont='t';
 do
 {
   clrscr();
   witaj();
   dane();
   p1=area(x1,y1,x2,y2,x3,y3);
   p2=area1(x1,y1,x2,y2,x3,y3);
   // printf("Pole 1 =%f\n",p1);
   // printf("Pole 2 =%f\n",p2);
   boki();
   p3=area2(a,b,c);
   printf("Pole 3 =%f\n",p3);
   wyniki();
   WydrPlik();
   puts("\nDalsze obliczenia (T, lub t) ");
   fflush(stdin);
   kont=getchar();
  } while (kont=='T' || kont=='t');

}


//--------- Funkcje - definicje ------------------
void  witaj()
{
       int odp;
       clrscr();
       puts ("Program Obliczenie pola trojkata ze wspolrzednych ");
       printf("\n1 - obliczenia , 2 - koniec 3 - pomoc i obliczenia => ");
       odp=getchar();
       if(odp == '2') exit(1);
       if (odp== '3') pomoc();

 }

void pomoc()
{
 clrscr();
 puts("Program oblicza pole trojkata na podstawie danych wspolrzednych 3 punktow");
 puts("wg wzoru zapisanego w postaci formy Hausbrandta jako funkcja 1");
 puts("lub jako iloczyn wyznacznikowy");
 puts("na podstawie przyrostow wspolrzednych\n");
 puts("2P=F1= |DX12 DY12|");
 puts("       |DX13 DY13| ");
 puts("czyli");
 puts("P=(DX12*DY13-DX13*DY12)/2");
 puts("\nlub ze wzoru wyznacznikowego na podstawie wspolrzednych");
 puts("Pole=(X1*Y2+X2*Y3+X3*Y1-X2*Y1-X3*Y2-X1*Y3)/2");
 puts("\nSzkic i oznaczenia");
 puts("     B(x2,y2) ");
 puts("     o");
 puts(" c  /  \\ a");
 puts("   /    \\");
 puts("  o--b---o");
 puts("A(x1,y1) C(x3,y3)");
 putchar('\n');
 puts("Kontrola: Obliczenie długosci bokow i pola ze wzoru Herona");
 puts("Pole=sqrt(p*(p-a)*(p-b)*(p-c)), gdzie p=(a+b+c)/2");
 fflush(stdin);
 printf("\nNacisnij Enter:  ");
 getchar();
}


void dane()
{
int kont='n';
clrscr();
puts("\nWprowadzenie danych: wspolrzednych 3 punktow: A(x1,y1), B(x2,y2), C(x3,y3)");
do
{
printf("\nPodaj  x1 => ");
scanf("%f",&x1);
printf("Podaj  y1 => ");
scanf("%f",&y1);
printf("\nPodaj  x2 => ");
scanf("%f",&x2);
printf("Podaj  y2 => ");
scanf("%f",&y2);
printf("\nPodaj  x3 => ");
scanf("%f",&x3);
printf("Podaj  y3 => ");
scanf("%f",&y3);
puts("\n\nWprowadzono dane: ");
printf("A(%.3f,%.3f)\nB(%.3f,%.3f)\nC(%.3f,%.3f)\n", x1,y1,x2,y2,x3,y3);
printf("\nDane dobre (T, N) ");
fflush(stdin);
kont=getchar();
 } while (kont=='N' || kont=='n');
}

double area(double x1, double y1, double x2, double y2, double x3, double y3)
{
 double  p2, p1, dx12, dy12, dx13, dy13;
 clrscr();
 puts("Funkcja area(x1,y1,x2,y2,x3,y3\n");
 printf("x1=%.3f\t",x1);
 printf("y1=%.3f\n",y1);
 printf("x2=%.3f\t",x2);
 printf("y2=%.3f\n",y2);
 printf("x3=%.3f\t",x3);
 printf("y3=%.3f\n",y3);
 dx12=x2-x1; dy12=y2-y1;
 dx13=x3-x1; dy13=y3-y1;
 printf("dx12=%.3f\t",dx12);
 printf("dy12=%.3f\n",dy12);
 printf("dx13=%.3f\t",dx13);
 printf("dy13=%.3f\n",dy13);
 p2=dx12*dy13-dx13*dy12;
 p1=p2*0.5;
 printf("\n2P =%10.4f   Pole=%10.3f\n",p2, p1);
 fflush(stdin);
// puts("Nacisnij Enter ");
// getchar();
 return(p1);
}

double area1(double X1, double Y1, double X2, double Y2, double X3, double Y3)
// met. wyznacznikowa
{
 float p2;
 clrscr();
 p2=(X1*Y2+X2*Y3+X3*Y1-X2*Y1-X3*Y2-X1*Y3)/2;
 printf("Funkcja area1().  Pole 2 = %f\n",p2);
 fflush(stdin);
// puts("Nacisnij Enter ");
// getchar();
 return(p2);
 }

// dlugosc ze wspolrz
float dl(float x1, float y1, float x2, float y2)
{
float d, dx, dy;
dx=x2-x1; dy=y2-y1;
d=sqrt(dx*dx+dy*dy);
return(d);
}

// Obliczenie bokow
void boki()
{
 clrscr();
 puts("Obliczenie bokow\n");
 a=dl(x2,y2,x3,y3);
 b=dl(x1,y1,x3,y3);
 c=dl(x2,y2,x1,y1);
 printf("Boki:  a=%.3f  b=%.3f  c=%.3f\n",a,b,c);
// puts("\nNacisnij Enter ");
// getchar();
}


float area2(float da, float db, float dc)
{
 clrscr();
 puts("Funkcja area(3) - wzor Herona\n");
 float p, ph, ph2;
 printf("\nDlugosci: a=%f  b=%f  c=%f",da,db,dc);
 p=0.500*(da+db+dc);
 ph=sqrt(p*(p-da)*(p-db)*(p-dc));
 ph2=2*ph;
 ha=ph2/a; hb=ph2/b; hc=ph2/c;
 printf("\np=%.3f",p);
 printf("\nWysokosci: ha=%.3f  hb=%.3f  hc=%.3f",ha,hb,hc);
 printf("\nPole z dlugosci bokow: P3=%.3f",ph);
// puts("\nNacisnij Enter ");
// getchar();
 return(ph);
}



// Wyniki na ekran
void wyniki()
{
clrscr();
puts("\tWyniki obliczen");
putchar('\n');
puts("\nPola obliczone: ");
putchar('\n');
printf("\nPole z form Hausbrandta                 :  %.3f",p1);
printf("\nPole z metody wyznacznikowej            :  %.3f",p2);
putchar('\n');
printf("\nPole na podstawie bokow wg wzoru Herona :  %.3f",p3);
putchar('\n');
puts("\nBoki obliczone ze wspolrzednych\n");
printf("a = %.3f  b = %.3f  c = %.3f ", a, b, c);
putchar('\n');
puts("Obliczone wysokosci a, b, c:  ");
printf("ha = %.3f  hb = %.3f  hc = %.3f ", ha, hb, hc);
putchar('\n');
putchar('\n');
puts("\nNacisnij Enter ");
getchar();
}

// Wydruk do pliku
void WydrPlik()
{
FILE *f;
char nazwapliku[20], obl[20];
struct date d;

clrscr();
puts("Wydruk wynikow do pliku");
printf("\nPodaj nazwe pliku wynikow (do 8 znakow, np. w1.txt) :   ");
gets(nazwapliku);
printf("\nNazwisko obliczajacego: ");
gets(obl);

f=fopen(nazwapliku,"a"); // otwarcie pliku do dopisywania

if (f==NULL)
   {
    puts("Nie mozna otworzyc pliku");
    exit(1);
   }
fprintf(f,"\t\tProgram PTxy.cpp\n");
fprintf(f,"\nObliczenie pola trojkata ze wspolrzednych punktow\n");
fprintf(f,"\nDane: \n");
fprintf(f,"A(%.3f, %.3f)\nB(%.3f, %.3f)\nC(%.3f, %.3f)\n", x1,y1,x2,y2,x3,y3);
fprintf(f,"\n\tWyniki obliczen");
fprintf(f,"\nPola obliczone: ");
fprintf(f,"\nPole z form Hausbrandta                 :  %.3f",p1);
fprintf(f,"\nPole z metody wyznacznikowej            :  %.3f",p2);
fprintf(f,"\nPole na podstawie bokow wg wzoru Herona :  %.3f",p3);
fprintf(f,"\nBoki obliczone ze wspolrzednych\n");
fprintf(f,"a = %.3f  b = %.3f  c = %.3f ", a, b, c);
fprintf(f,"\nObliczone wysokosci a, b, c:  ");
fprintf(f,"\nha = %.3f  hb = %.3f  hc = %.3f ", ha, hb, hc);
fprintf(f,"\n\nObliczyl: %s   ", obl);
getdate(&d);
fprintf(f,"    Data: %d-%d-%d\n\n", d.da_day, d.da_mon,  d.da_year);
fprintf(f,"\n\n");
fclose(f); // zamkniecie piku

}


Obliczenie domiarow prostok. ze wspolrz X, Y

// program dompros.cpp;  obliczenie domiarow prostok. ze wspolrz X, Y
// Zad. 2  Grupa 1,
#include <iostream.h>
#include <math.h>
#include <conio.h>
#include <fstream.h>
#include <iomanip.h>


char *const plikwyn = "wyndompr.txt";
char *const str1 = "Hello, world";

double xa, ya, xb, yb, dxab, dyab, dab, bm, c, s, d, b, x, y;
int nr, nra, nrb;
char odp;
char obliczajacy[20];
// FILE *f;


float dl(float x1, float y1, float x2, float y2)
{ float dx, dy, d;
  dx=x2-x1; dy=y2-y1;
  d=sqrt(dx*dx+dy*dy);
  cout << "d_funkcja=";
  cout.width(10);
  cout  <<  d  << endl;
  return(d);
}


void start(char *str)
{
  clrscr();
  cout << str;
  cout << "\nZapis wynikow do pliku  " << plikwyn << endl;
}




void Dane1()
{


  cout << "Funkcja Dane1" << endl;
  cout << "Dane punktow prostej AB, na ktora rzutujemy punkty" << endl;
  cout << "Podaj Nry (liczby calkowite) oraz X i Y oddzielone spacjami";
  cout << endl;
  cout << "NrA Xa Ya: ";
  cin >> nra   >> xa  >> ya;
  cout << "NrB Xb Yb: ";
  cin >> nrb >> xb >> yb;
  dab=dl(xa,ya,xb,yb);
  cout << "Dlug obl. A-B = " << dab << endl;
  cout << "Podaj dlugosc pomierzona lub obliczona : ";
  cin >> bm;
  dxab=xb-xa; dyab=yb-ya;
  c=dxab/bm; s=dyab/bm;
  cout << "c= " << c << "  s= " << s;
// ifstream f (plikwyn, ios::app);

 cout << endl << endl;
 cout << "\nNacisnij Enter  ";
 getchar();

}


void domiary()
{
float dx, dy, d, b;
int kont=1;

clrscr();
cout << "Obliczenie rzutow na podstawie podanych wspolrzednych\n";

   do
   {
      cout <<endl;
      cout << "Podaj Nr(i) X(i)  Y(i) ";
      cin  >>  nr >>  x  >> y;
      dx=x-xa; dy=y-ya;   d=c*dy-s*dx;
      b=c*dx+s*dy;
      cout << "Punkt " << nr << "  Odcieta = ";
      cout << b <<  " Rzedna = " << d << endl;
      cout << "Kontynuacja obliczen 1 - TAK, 2 - NIE ";
      cin >> kont;
    }   while (kont==1);

}




int plik()
{
 float d1=0.0, h1=0.0, h2=0.0;
 ofstream f(plikwyn);
  //skojarzenie pliku na dysku z nazwa plikwyn i otwarcie do zapisu
 if (! f) //jezeli nie da sie otworzyc
  {
   cout << "Plik nie moze zostac otwarty."<<endl;
   return -1;  //zakonczenie programu z bledem
  }
  f << "Plik wynikow " << endl << endl;
  f << "Obliczenie domiarow na podstawie wspolrzednych" << endl;
  f << "Plik wynikow " << endl << endl;
  f << "Nr         X          Y          d         h \n";
  f << "Punkty prostej, na ktora rzutujemy\n";
  f << setw(6) << nra ;
  f.precision(3);
  f.setf(ios::fixed,ios::floatfield);   // floatfield set to fixed
  f.width(15);
  f << xa << "  " ;
  f << ya << "  " ;
  f << d1 << "  " ;
  f << h1 << "  " ;
  f << "   punkt A"  << endl;
  f << setw(6) << nrb  ;
  f.width(15);
  f << xb << "  " ;
  f << yb << "  " ;
  f << bm << "  " ;
  f << h2 << "  " ;
  f << "   punkt B"  << endl;
  f << "\nd(AB)pom= " << bm <<  " d(AB)obl= " << dab;
  f <<  "\nWspolczynniki c=Dx(AB)/d(AB)pom= ";
  f << c;
  f << "\ns:=Dy*AB)/d(AB)pom= " << s;
  f<< "\nPunkty rzutowane i obliczone domiary prostokatne \n";
  f << endl;
  f << "Obliczyl " << obliczajacy;
  f.close();
  return 0;
}

void koniec()
{
  cout << "Nazwisko obliczajacego: ";
  cin >> obliczajacy;
}




int main()
{
 clrscr();
 start("Obliczenie domiarow prostokatnych ze wspolrzednych");
 Dane1();
 domiary();
 plik();
 koniec();
 cout << "\nNacisnij Enter  ";
 getchar();
 return 0;
}