fork download
  1. #include <iostream>
  2. #include <cmath>
  3. using namespace std;
  4. double z(double x, double y){
  5. return 1;//<-- место для ввода формулы нахождения координаты z.
  6. }
  7. double dl(double x, double y, double z){
  8. return sqrt(x*x+y*y+z*z);//Длина вектора.
  9. }
  10. double ras(double xi, double xj, double yi, double yj){
  11. double zii, zjj, zij, zji, v1x=0, v1y=0, v1z=0, v2x=0, v2y=0, v2z=0;
  12. zii=z(xi, yi); //Найдём координату z каждой вершины треугольников.
  13. zjj=z(xj, yj);
  14. zij=z(xi, yj);
  15. zji=z(xj, yi);
  16. v1x=(yi-yj)*(zji-zii); //Вычислим векторное произведение векторов.
  17. v1y=(zii-zij)*(xj-xi);
  18. v1z=(yj-yi)*(xj-xi);
  19. v2x=(yj-yi)*(zji-zjj);
  20. v2y=(zjj-zij)*(xi-xj);
  21. v2z=(yi-yj)*(xi-xj);
  22. return (dl(v1x, v1y, v1z)+dl(v2x, v2y, v2z))/2;//Найдём площадь треугольников.
  23. }
  24.  
  25. int main(){
  26. double xi, xj, yi, yj, s=0, h;
  27. int a, b, c, d;
  28. cin >> a >> b >> c >> d >> h;
  29. xi = a;
  30. while(xi<=(b-h)){
  31. yi=c;
  32. xj=xi+h;
  33. while(yi<(d-h)){
  34. yj=yi+h;
  35. s+=ras(xi, xj, yi, yj);
  36. yi=yj;
  37. }
  38. xi=xj;
  39. }
  40. cout<<s;
  41. return 0;
  42. }
Success #stdin #stdout 0.03s 3472KB
stdin
0 100 0 100 0.1
stdout
10000