Я едва учился на 4-й неделе C ++ в школе и искал ориентир в правильном направлении.
#include "std_lib_facilities_3.h"
class BadArea{};
int area(int length, int width){
if(length <= 0 || width <=0) throw BadArea();
return length * width;
}
double mysqrt(double x){
if(x < 0.0) error("mysqrt");
return 1.0; //dummy value for now, need to write code later
}
int main(){
try{
char length = 0;
char width = 0;
cout << "Enter length and width seperated by a space\n";
cin >> length;
cin >> width;
vector<double> v(10);
v[9] = 7.5;
cout << area(7, -10) << '\n';
cout << mysqrt(-2.0) << '\n';
return 0;
}
catch(BadArea){
cerr << "Exception: Bad area\n";
}
catch(exception& e){
cerr << "ExceptionZ: " << e.what() << '\n';
}
catch(...){
cerr << "Exception occurred\n";
}
}
И это то, что задание просит нас;
//Check for overflow in the area function
result = length * width
if result is negative or result/length <> width, throw an exception
//Use 3 iterations of the Newton-Raphson method for mysqrt
if x is 0, result is 0 so return it
if x is 1, result is 1 so return it
otherwise,
result = (x^4 + 28x^3 + 70x^2 + 28x + 1)/(8*(1 + x)*(1 + 6x + x^2))
Измените main, чтобы иметь бесконечный цикл вокруг части try / catch; в попытке
блок запрашивать длину и ширину; если cin терпит неудачу, возвращайте, иначе выведите
области, и распечатать mysqrt области. Назовите вашу программу hw3pr2.cpp. (Отзыв
этот cin потерпит неудачу, если вы введете что-то, что не является должным образом отформатированным int,
например, слово «конец».)
Я понимаю, как читать код, но у меня возникают трудности с его запуском, и я как-то путаюсь с «scope», пока он компилируется правильно, но продолжает давать мне Range Error: 10. значит ли это, что я использую область класса не так?
Может ли кто-нибудь, пожалуйста, указать мне в правильном направлении?
Спасибо!
Вы объявляете вектор из 10 элементов и пытаетесь получить доступ к 11-му элементу с помощью v[10]
,
area(7, -10)
, так что вы всегда получите исключение. Я думаю, что вы хотите передать длину и ширину функции площади: cout << area(length, width) << '\n';
Других решений пока нет …