Witam, dostałem do zrobienia na zaliczenie zadanie o poniższej treści
OPIS ZADANIA
Mały Bajtocjanin - Bajtek ma problemy z obliczeniem pól trapezu. Pomóż mu pisząc uniwersalną aplikacje wyręczającą go w męczących obliczeniach.
WEJSCIE
W pliku datain.txt znajdują się dane o wierzchołkach trapezu w układzie kartezjańskim.
Wierzchołki nie są w żaden sposób uporządkowane. Należy napisać program obliczający pole i obwód zadanego trapezu . Należy uwzględnić wszystkie sytuacje nietypowe (np. trójkąt, kwadrat, prostokąt, lub nie prawidłowe dane) i poinformować Bajtka o zaistniałej sytuacji lub problemie.
WYJSCIE
Wyprowadzić wyniki obliczeń do pliku dataout.txt
Np. dla danych wejściowych
1 1
3 1
2.5 2
1.5 2
pole = 1.5
obwód = 4,232
a dla danych
-1 -1
-1 0
1 1
0 1
Pole = 1.5
Obwód = 6.242
Póki co udało mi się napisać coś takiego
#include <iostream>
#include <cstdio>
#include <math.h>
#include <cmath>
#include <fstream>
#include <string>
using namespace std;
string tablica[5];
double dl_w[5];
fstream plik1;
fstream plik2;
int x;
int y;
/*
1. sprawdzanie ilosci danych
jesli > 4 -> nieprawidlowe dane
jesli = 3 -> trojkat
jesli < 3 -> nieprawidlowe dane
jesli = 4 ->
komb1
liczmy dlugosci bokow
jesli wszystkie boki sa rowne -> kwadrat
jesli (a-b)^2 > |c^2-d^2| -> trapez
liczymy pole i obw
jesli wszystkie boki rozne -> wielokat (bledne dane)
jesli a = b i c = d ale a <> c i b <> d -> prostokat
*/
void komb1()
{
for(int i=0;i>3;i++)
{
x= //x 1 pkt
y= //y 1 pkt
dl_w[i] = sqrt((x*x)+(y*y));
}
if(dl_w[0]==dl_w[1] || dl_w[0]==dl_w[2] || dl_w[0]==dl_w[3])
{
cout<<"kwadrat"<<endl;
}
int j=(dl_w[0]-dl_w[1]);
int wb=abs((dl_w[2]*dl_w[2])-(dl_w[3]*dl_w[3]));
if((j*j)>wb)
{
cout<<"trapez"<<endl;
//wyliczenie p i obw
}
//to samo dla wszystkich bokow rownych i prostokata
}
int main()
{
plik1.open("dane1.txt", std::ios::in);
for(int i=0;i=5;i++)
{
getline(plik1,tablica[i]);
if (tablica[i]=="")
{
if (tablica[4]!="")
{
cout<<"Nieprawidlowe dane"<<endl;
}
else{
switch(i)
{
case 1:
cout<<"Nieprawidlowe dane, tylko 1 pkt"<<endl;
break;
case 2:
cout<<"Nieprawidlowe dane, tylko 2 pkt"<<endl;
break;
case 3:
cout<<"Powstanie trojkat"<<endl;
break;
case 4:
komb1();
//[..]komb24();
break;
}
}
}
}
plik1.close();
};
Niestety tu pojawił się problem bo nie wiem jak wyciągnąć liczby z wczytanego wiersza( w całości bez pomijania fragmentów)
oraz jak to zrobić w wypadku liczb ujemnych
Wszelka pomoc byłaby mile widziana, Pozdrawiam.