Здравствуйте, я новичок в программировании. Написал следующую программу, которая просто умножает число t само на себя k раз. Среда: MSVS 2008 SP2. OC: MS Vista. Никак не вызывается исключение "деление на 0" (если, к примеру t=0, k=(-2)). Точнее вызывается, но не перехватывается, даже если catch(...), а уж если catch(DivideByZeroException), то пишет: "error C2061: синтаксическая ошибка: идентификатор "DivideByZeroException"". Помогите, опытные, пожалуйста. Где лежит этот класс DivideByZeroException, если не в System? Или дело еще в чем? Код:
Код:
---------------------------------header.h------------------------------------
#include <stdio.h>
#include <iostream>
#include <windows.h>
#include <string>
#include <exception>
using namespace std;
float power(int t, int k);
---------------------------------sam.cpp------------------------------------
#include "header.h"
void main()
{
int k;
int t=k=0;
cout<<"Vvedite t: ";
cin>>t;
cout<<"Vvedite k: ";
cin>>k;
cout<<"t^k = "<<power(t,k);
Sleep(100000);
}
float power(int t, int k)
{
int tempk=abs(k);
int tempt=t;
while((tempk--)>1)
{
t=t*tempt;
}
if(k>1) return t;
else
{
try
{
t=1/t;
}
catch(DivideByZeroException)
{
cerr<<"Delenie na 0";
Sleep(100000);
}
return (t);
}
}
Код:
---------------------------------header.h------------------------------------
#include <stdio.h>
#include <iostream>
#include <windows.h>
#include <string>
#include <exception>
using namespace std;
float power(int t, int k);
---------------------------------sam.cpp------------------------------------
#include "header.h"
void main()
{
int k;
int t=k=0;
cout<<"Vvedite t: ";
cin>>t;
cout<<"Vvedite k: ";
cin>>k;
cout<<"t^k = "<<power(t,k);
Sleep(100000);
}
float power(int t, int k)
{
int tempk=abs(k);
int tempt=t;
while((tempk--)>1)
{
t=t*tempt;
}
if(k>1) return t;
else
{
try
{
t=1/t;
}
catch(DivideByZeroException)
{
cerr<<"Delenie na 0";
Sleep(100000);
}
return (t);
}
}