[C++] ISO C++ forbids comparison between pointer and integer [-fpermissive]
Ostatnio zmodyfikowano 2014-12-10 16:20
Kamil9477 Temat założony przez niniejszego użytkownika |
[C++] ISO C++ forbids comparison between pointer and integer [-fpermissive] » 2014-12-10 15:13:13 Witam, mam do napisania taki program: Uruchamiam program z parametrami startowymi, np. 2 3 +. Program ma podawać wynik działania 2+3, jeżeli zamiast + będzie stało * to ma pomnożyć itd. Napisałem coś takiego: #include <iostream> #include <cstdlib>
using namespace std;
int main( int argc, char * argv[] ) { if( argv[ 3 ] == '+' || argv[ 3 ] == '-' || argv[ 3 ] == '/' || argv[ 3 ] == '*' ) { if( argv[ 3 ] == '+' ) { cout << argv[ 1 ] << "+" << argv[ 2 ] << "=" << atoi( argv[ 1 ] ) + atoi( argv[ 2 ] ) << endl; } if( argv[ 3 ] == '-' ) { cout << argv[ 1 ] << "-" << argv[ 2 ] << "=" << atoi( argv[ 1 ] ) - atoi( argv[ 2 ] ) << endl; } if( argv[ 3 ] == '/' ) { cout << argv[ 1 ] << "/" << argv[ 2 ] << "=" << atoi( argv[ 1 ] ) / atoi( argv[ 2 ] ) << endl; } if( argv[ 3 ] == '*' ) { cout << argv[ 1 ] << "*" << argv[ 2 ] << "=" << atoi( argv[ 1 ] ) * atoi( argv[ 2 ] ) << endl; } } else { cout << "Niepoprawe dane" << endl; } system( "pause" ); return 0; }
Wywala mi błąd kompilacji taki jak w temacie. Jak można porównać element tablicy ze znakiem '+'? |
|
killjoy |
» 2014-12-10 15:30:25 Argv to jest tablica tablic, czyli albo argv[ 1 ][ 0 ] == '+' albo strcmp( argv[ 1 ], "+" ); ze <cstring>. |
|
akwes |
» 2014-12-10 15:31:09 argv[] "zwraca" char*, a nie char. |
|
Kamil9477 Temat założony przez niniejszego użytkownika |
» 2014-12-10 16:12:16 Działa, działa. A jeżeli chciałbym operować ne tylko na liczbach całkowitych? Funkcja atoi() już sie nie nada? |
|
Tomek_z_W11 |
» 2014-12-10 16:20:14 skoro atoi() to char to int, to należałoby poszukać czegoś ala char to double atod(), albo char to float atof():
http://cpp0x.pl/dokumentacja/standard-C/atof/238 |
|
« 1 » |