Próbuję od jakiegoś czasu sił w C++ i natknąłem się na kilka problemów.
Pierwsze dwa problemy są poniekąd powiązane. Próbuję odczytać parametry wiersza polecenia tą metodą:
int main(int argc, char *argv[])
{
char *var;
var = argv[1];
[...]
Wiem, że zmienna “argc” jest niepotrzebna, ale bez niej nie działa. Potem potrzebuję zmienną “var” zmienić na typ int lub od razu wychwycić parametr jako int. Byłbym też wdzięczny gdyby ktoś mi wytłumaczył co oznacza ta gwiazdka przed zmienną. Poza tym mam jeszcze kłopot z funkcją do potęgowania.
int Power(int x, int y)
{
int z;
if(y != 0)
{
z = x;
if(y > 0)
{
for(unsigned int i = 1; i < y; ++i)
{
z = z*x;
}
}
else
{
for(unsigned int i = 1; i < -y; ++i)
{
z = z*x;
}
}
if(y < 0)
z = 1 / z;
}
else
z = 1;
return z;
}
Nie wiem czemu, ale zawsze zwraca 0. Co ciekawe, w prostym kalkulatorze, który kiedyś napisałem, działa bez zarzutu. Chociaż tam była częścią funkcji main, a nie oddzielną funkcją - może tu jest problem.
Co do funkcji Power to czemu nie użyć std::pow? Przede wszystkim dzielisz liczby całkowite w z = 1/z, więc dostaniesz również liczbę całkowitą, a nie zmiennoprzecinkową. Nie wspomnę już o zbędnym powtórzeniu kodu.
Z pierwszego akapitu niewiele zrozumiałem, ale poczytam linki.
Miło wiedzieć o funkcji std::pow, przyda się.
No tak! Przecież po przekopiowaniu z mojego kalkulatora, zmieniłem typ zmiennych (teraz to już sam nie wiem po co). Co prawda jak zmieniam na float, to nadal nie działa, ale przynajmniej jest jeden błąd mniej.
Co do powtórzeń, to jeszcze się uczę i zdarzają się różne głupie błędy.
Chciałbym jeszcze wiedzieć jak zmienić zmienną char* na int.
Z tego co widzę, to tam jest opisane jak zmienić znak ze zmiennej char na kod ASCI. Mi chodzi o to, że mam w zmiennej char np. czwórkę i chcę ją dodać do czegoś, a do tego muszę tę zmienną zamienić na int.
@[alex]
Widzę, że poza funkcją “pow” warto też zapamiętać “atoi”. Dzięki.
Mój programik już działa jak trzeba, a ja dowiedziałem się o paru przydatnych funkcjach. Bardzo dziękuję wszystkim za pomoc.