Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Miejsce zerowe funkcji liniowej

Ostatnio zmodyfikowano 2014-03-23 11:45
Autor Wiadomość
masa...
Temat założony przez niniejszego użytkownika
Miejsce zerowe funkcji liniowej
» 2014-03-23 09:15:13
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:
C/C++
#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ź.
C/C++
#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.
P-107044
WarnaX
» 2014-03-23 10:39:10
nie jest to trochę zbyt skomplikowane rozwiązanie, jak na takie zadanie?
P-107052
docentpp
» 2014-03-23 11:45:31
zmienne a,b powinny być typu RZECZYWISTEGO, a ty
używasz typu naturalnego !!!
P-107059
« 1 »
  Strona 1 z 1