#include <iostream>
#include <cmath>
using namespace std;
int main() {
int n = 5;
float area = 0.0;
float totalarea = 0.0;
float dx = 1.0/n;
float x = 0.0;
cout << "number of rectangles?:";
cin >> n;
for (int i=1; i<=n; i++){
area = (1/n) * pow(1.0 - pow(x,2.0),0.5) ;
totalarea += area;
x = x + dx;
}
cout << totalarea << endl;
return 0;
}
Я пытаюсь оценить площадь четверти круга, используя прямоугольники. Когда я ввожу 1, я получаю 1 в качестве вывода. Когда я ввожу целое число 2-6, я получаю 0 в качестве вывода. Когда я ввожу целое число выше 6, я получаю на выходе «не число». Может кто-нибудь помочь мне исправить мой код.
1/n является целочисленной арифметикой и даст 0 для любого i, кроме 1. Вам нужно 1.0 / n.
Измените это: (1/n) на это (1./n). (Понимание того, почему именно это будет иметь большое значение для вашего обучения)
Возможный дубликат Целочисленное деление всегда равно нулю





В дополнение к исправлению проблемы целочисленного деления, как упоминалось в комментариях, вам также необходимо отложить настройку dx до тех пор, пока вы не получите значение n.
#include <iostream>
#include <cmath>
using namespace std;
int main() {
int n;
float area = 0.0;
float totalarea = 0.0;
float dx;
float x = 0.0;
cout << "number of rectangles?:";
cin >> n;
dx = 1.0/n;
for (int i=1; i<=n; i++){
area = (1./n) * pow(1.0 - pow(x,2.0),0.5) ;
totalarea += area;
x = x + dx;
}
cout << totalarea << endl;
return 0;
}
Вам нужно потратить время, чтобы научиться отлаживать собственные проблемы. Это незаменимый инструмент, который вы должны изучить немедленно. Это сэкономит вам бесчисленные часы, когда вы будете просто смотреть на свой код, задаваясь вопросом, что происходит.