#include <iostream>
#include <fstream>
#include <math.h>
using namespace std;
struct punkt
{
double x;
double y;
};
int main()
{
ifstream plik_wejscia;
plik_wejscia.open("wejscie.txt"); //w pliku wejscia pierwsza liczba to liczba podawanych punktow, a reszta to kolejne punkty (odpowiednio skladowa x i y)
int n;
plik_wejscia >> n;
punkt * tablica_punktow = new punkt[n];
for (int i = 0; i < n; i++)
plik_wejscia >> tablica_punktow[i].x >> tablica_punktow[i].y;
if (plik_wejscia.fail())
{
cout << "Blad!n";
return 0;
}
if (n == 3)
cout << "Wczytana figura to trojkat\n";
else if (n == 4)
cout << "Wczytana figura to czworokat\n";
else
{
cout << "Mozesz podac tylko wspolrzedne trojkata lub czworoboku\n";
return 0;
}
cout << "Wczytane punkty: ";
for (int i = 0; i < n; i++)
cout << "(" << tablica_punktow[i].x << "," << tablica_punktow[i].y << ")" << " ";
cout << "\nSprawdz wartosc obwodu w pliku wyjscia\n\n";
ofstream plik_wyjscia;
plik_wyjscia.open("wyjscie.txt");
double obwod;
int i;
for (i = 0; i < n - 1; i++)
obwod = sqrt(pow(tablica_punktow[i].x - tablica_punktow[i + 1].x, 2) + pow(tablica_punktow[i].y - tablica_punktow[i + 1].y, 2));
obwod += sqrt(pow(tablica_punktow[0].x - tablica_punktow[i].x, 2) + pow(tablica_punktow[0].y - tablica_punktow[i].y, 2));
plik_wyjscia << "Obwod = " << obwod;
return 0;
}
Ten program liczy tylko obwód, zapisuje go do pliku. Sprawdza też czy zostały wpisane same liczby. Można go używać tylko do liczenia obwodu trójkatów i czworokątów. Wydaje mi się, że te liczenie obwodu zaimplementowałem dobrze ale poczekaj jeszcze na jakąś drugą opinię. Ten kod nie zabezpiecza przed milionem innych opcji które może wpisać użytkownik no i nie liczy pola, więc dużo pracy przed Tobą, powodzenia. Uprzedzam że ten kod to ledwo co szkielet na którym powinieneś bazować, spróbuj rozkminić wszystkie opcje przed którymi nie zabezpieczyłem powyższgo kodu i go ulepszyć