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;
}
Darmowy hosting zapewnia PRV.PL