Mam takie zadanie:
Plik: potega.c
Uruchamianie: ./potega <podstawa> <potega>
Treść: Napisz program, który pobiera z linii poleceń dwie liczby całkowite: ‘podstawę’ i ‘potęgę’. Następnie program, wykorzystując pętlę ‘for’, oblicza wartość ‘podstawa’ do potęgi ‘potęga’ i wypisuje na ekran wynik.
Wyjście:
./potega 2 5
2 ^ 5 = 32
Napisałam taki program:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
if(argc != 3){
printf("Nieprawidlowa liczba danych");
return 0;
}
int podstawa = atoi(argv[1]);
int potega = atoi(argv[2]);
if(potega == 0){
printf("%s ^ %s = 1", argv[1], argv[2]);
return 0;
}
int wynik = podstawa;
for(int i=0; i<potega-1; i++){
wynik = wynik*podstawa;
}
printf("%s ^ %s = %d", argv[1], argv[2], wynik);
return 0;
}
gdzieś jednak jest błąd, bo przy małych liczbach liczy wszystko dobrze, ale przy większych daje dziwne wyniki, a nawet czasem ujemne (czego już kompletnie nie rozumiem xD). Co jest nie tak?