Witam. Próbuje rozwiązać to zadanie
http://www.spoj.com/FRAKTAL/problems/MZFL/. Wymyśliłem dwa możliwe rozwiązania gdy je testuje na swoim kompie wyniki są dobre. Gdy wrzucam na spokoja zonk.
1 Rozwiązanie:
Rodzaj błędu:
prog.cpp:52:2: warning: no newline at end of file
prog.cpp: In function 'int main(int, char**)':
prog.cpp:27: error: call of overloaded 'pow(int, int&)' is ambiguous
/usr/include/bits/mathcalls.h:154: note: candidates are: double pow(double, double)
/usr/lib/gcc/i486-linux/4.0.1/../../../../include/c++/4.0.1/cmath:360: note: long double std::pow(long double, int)
/usr/lib/gcc/i486-linux/4.0.1/../../../../include/c++/4.0.1/cmath:356: note: float std::pow(float, int)
/usr/lib/gcc/i486-linux/4.0.1/../../../../include/c++/4.0.1/cmath:352: note: double std::pow(double, int)
/usr/lib/gcc/i486-linux/4.0.1/../../../../include/c++/4.0.1/cmath:348: note: long double std::pow(long double, long double)
/usr/lib/gcc/i486-linux/4.0.1/../../../../include/c++/4.0.1/cmath:344: note: float std::pow(float, float)
prog.cpp:41: error: call of overloaded 'pow(int, int&)' is ambiguous
/usr/include/bits/mathcalls.h:154: note: candidates are: double pow(double, double)
/usr/lib/gcc/i486-linux/4.0.1/../../../../include/c++/4.0.1/cmath:360: note: long double std::pow(long double, int)
/usr/lib/gcc/i486-linux/4.0.1/../../../../include/c++/4.0.1/cmath:356: note: float std::pow(float, int)
/usr/lib/gcc/i486-linux/4.0.1/../../../../include/c++/4.0.1/cmath:352: note: double std::pow(double, int)
/usr/lib/gcc/i486-linux/4.0.1/../../../../include/c++/4.0.1/cmath:348: note: long double std::pow(long double, long double)
/usr/lib/gcc/i486-linux/4.0.1/../../../../include/c++/4.0.1/cmath:344: note: float std::pow(float, float
kod:
#include <iostream>
#include <string>
#include <cmath>
using namespace std;
int main( int argc, char ** argv ) {
string linia;
int spacja = 0;
getline( cin, linia );
for( int i = 0; i < linia.size(); i++ )
if( linia[ i ] == ' ' )
spacja = i;
int a = 0;
int b = 0;
int znak = 1;
for( int i = 0; i < spacja; i++ )
{
if( linia[ i ] == '-' )
{
znak =- 1;
} else {
int f =( spacja - 1 - i );
a +=( linia[ i ] - 48 ) * pow( 10, f );
}
}
a *= znak;
znak = 1;
for( int i = spacja + 1; i < linia.size(); i++ )
{
if( linia[ i ] == '-' )
{
znak =- 1;
} else {
int f = linia.size() - 1 - i;
b +=( linia[ i ] - 48 ) * pow( 10, f );
}
}
b *= znak;
if( a == 0 && b > 0 || b < 0 ) cout << "brak";
else
if( a == 0 && b == 0 ) cout << "nieskonczenie wiele";
else
if( a > 0 || a < 0 ) cout <<( - b ) / a;
return 0;
}
drugie rozwiązanie:
Błedna odpowiedź.
#include <iostream>
#include <string>
#include <cmath>
using namespace std;
int main( int argc, char ** argv ) {
string linia;
int a;
cin >> a;
int b;
cin >> b;
if( a == 0 && b > 0 || b < 0 ) cout << "brak";
else
if( a == 0 && b == 0 ) cout << "nieskonczenie wiele";
else
if( a > 0 || a < 0 ) cout <<( - b ) / a;
return 0;
}
Za bardzo nie wiem co mam z tym zrobić próbowałem kilka razy metodą prób i błedów, ale nie mam pojęcia czego ten kompilator się czepia.