Postanowiłem zrobić program, który podnosi liczbę do podanej potęgi. Kod wygląda następująco:
#include "pch.h"
#include <iostream>
#include <string>
using namespace std;
int main()
{
ios_base::sync_with_stdio(0);
string liczbaStr, wykladnikStr;
int liczbaInt = 0, wykladnikInt = 0;
cout << "Wprowadz podstawe: ";
cin >> liczbaStr;
cout << "Wprowadz wykladnik (liczba naturalna): ";
cin >> wykladnikStr;
for (int t = 0; t < liczbaStr.length(); t++)
{
if (!(liczbaStr[t] >= 48))
{
cout << "Wprowadzono nieprawidlowe dane!\n";
return 0;
}
else if(!(liczbaStr[t] < 58))
{
cout << "Wprowadzono nieprawidlowe dane!\n";
return 0;
}
}
for (int f = 0; f < wykladnikStr.length(); f++)
{
if (!(wykladnikStr[f] >= 48))
{
cout << "Wprowadzono nieprawidlowe dane!\n";
return 0;
}
else if(!(wykladnikStr[f] < 58))
{
cout << "Wprowadzono nieprawidlowe dane!\n";
return 0;
}
}
liczbaInt = stoi(liczbaStr);
wykladnikInt = stoi(wykladnikStr);
if ((liczbaInt == 0) && (wykladnikInt == 0))
{
cout << "To dzialanie nie jest mozliwe!\n";
return 0;
}
if (wykladnikInt == 1)
{
cout << "Wynik: " << liczbaInt << "\n";
return 0;
}
if (wykladnikInt == 0)
{
cout << "Wynik: 1\n";
return 0;
}
int I = liczbaInt;
long long II = liczbaInt;
for (int i = 2; i <= wykladnikInt; i++)
{
II = II * I;
}
if (II <= 0)
{
cout << "Wynik przekroczyl zakres...\n";
return 0;
}
cout << "Wynik: " << II << "\n";
return 0;
}
Niestety - program umiera przy bardzo dużych liczbach... W Visual Studio pojawia się, że wyjątek out_of_range nie jest obsłużony... Ktoś wie jak to naprawić? jak obsłużyć ten wyjątek? Szukałem na youtube ale tam tylko c# i programowanie obiektowe...