[C++] Kilka pytań odnośnie zmiennych i niedziałająca funkcja

Witam.

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.

Bardzo proszę o jakąś pomoc.

“Gwiazdka przed zmienną” w deklaracji oznacza wskaźnik. Tak więc char* var to wskaźnik na typ char. Jeśli chcesz otrzymać liczbę z jej reprezentacji tekstowej, możesz użyć string streams (http://www.cppreference.com/wiki/io/sstream/start) lub jednej z funkcji ato* - http://www.cppreference.com/wiki/c/string/start

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.

Coś takiego może być?

http://forum.suse.pl/index.php?topic=12720.0%3Bwap2

int main(int argc, char *argv[])

@matiit

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.

Kilka dni temu była dyskusja na temat funkcji pow() na tym forum, wystarczy poszukać.