#include <iostream>
#include <cstdlib>
#include <cmath>
#include <ctime>
#include <string>
using namespace std;
int main()
{
double a[3];
double b,c,d;
int wskaznik,koniec;
bool trafnosc=false;
char dzialanie[100];
for (int i=0; i<sizeof(dzialanie)/sizeof(dzialanie[0]); i++)
{
dzialanie[i]=' ';
}
d=0;
cin >> a[0];
cin >> a[1];
cin >> a[2];
wskaznik=0;
koniec=0;
if (a[0]<a[1])
{
dzialanie[0]='+';
}
else
{
dzialanie[0]='-';
}
while ((trafnosc==false))
{
//
for (int i=0; i<=koniec; i++)
{
if ((dzialanie[i]=='+') or (dzialanie[i]=='-'))
{
d=a[1]-a[0];
cout << d << endl;
for (wskaznik=0; wskaznik<2; wskaznik++)
{
cout << endl << wskaznik << endl;
if ( a[wskaznik]+d==a[wskaznik+1] )
{
trafnosc=true;
}
else
{
trafnosc=false;
}
}
}
else if (dzialanie[i]=='*')
{
cout << endl << a[0] << "," << a[1] << "," << a[2] << endl;
d=(a[2]-a[1])/(a[1]-a[0]);
for (wskaznik=0; wskaznik<2; wskaznik++)
{
cout << d << "," << wskaznik << endl;
if ((a[wskaznik]*d==a[wskaznik+1]))
{
trafnosc=true;
}
else
{
trafnosc=false;
cout << a[wskaznik]*d << "," << a[wskaznik+1] << endl;
cout << d;
if (a[0]*d==a[1])
{
trafnosc=true;
}
system("pause");
}
}
}
else if (dzialanie[i]=='/')
{
d=(a[2]-a[1])*(a[1]-a[0]);
for (wskaznik=0; wskaznik<2; wskaznik++)
{
if (a[wskaznik]/d==a[wskaznik+1])
{
trafnosc=true;
}
else
{
trafnosc=false;
}
}
}
else
{
cout << "nie odnaleziono dzialania";
trafnosc=true;
}
}
cout << dzialanie;
cout << d << endl;
if (trafnosc==false)
{
_sleep(300);
switch(dzialanie[0])
{
case '+':
dzialanie[0]='*';
break;
case '-':
dzialanie[0]='/';
break;
//...
case '*':
//jakiś kod
break;
default:
//jakiś kod
break;
}
}
}
d=abs(d);
system("pause");
system("cls");
for (int i=0; i<=koniec; i++)
{
cout << "x" << dzialanie[i] << d << endl;
}
system("pause");
return 0;
}
Cały program... a teraz czemu nadal jest złe?
Odkryłem, że to coś z d bo jak zmieniłem d na 1.1(w sumie to przy moich danych to to samo) to działa ale 1.1 nie będzie zawsze.
Dokładniej to nie działa poprawnie mnożenie i dzielenie.