# Write a function to calculate the area of a circle

1,303 views (last 30 days)
Mr. NailGuy on 12 Feb 2018
Hi everyone,
I need to write a function named areaCircle to calculate the area of a circle with the ff conditions: 1. The function should take one input that is the radius of the circle. 2. The function should work if the input is a scalar, vector, or matrix. 3. The function should return, one output, the same size as the input, that contains the area of a circle for each corresponding element. 4. If a negative radius passed as input, the function should return the value -1 to indicate the error.
I already have my code for the function that satisfies 1 to 3 except for 4. My code is as shown below:
function area = areaCircle(r)
if any(r<0)
A = r % array of random integers
negIndices = A < 0;
B = A; % copy A into new array B
B(negIndices) = -1 % replace the negative values in B with -1
area = B(negIndices);
else
area = pi*r.^2;
end
end
And the test inputs area:
r1 = 2;
area1 = areaCircle(r1)
r2 = [2 5; 0.5 1];
area2 = areaCircle(r2)
r3 = [1 1.5 3 -4];
area3 = areaCircle(r3)
area3 must give an array of values where the last element must be -1 to show an error. It must not be used for the calculation of the area. Thanks in advance!
##### 2 CommentsShowHide 1 older comment
Jose Raulito De Ocampo on 2 Sep 2022
If you don't mind me asking, what does "negIndices" mean?

Edited: Adam on 12 Feb 2018
It isn't obvious from point 4 if it is expected that you just output -1 if any input is negative or -1 in only that location, but since you interpret it as the latter the simplest option would seem to be to use a logical mask as you have done, but you need to just always calculate
area = pi*r.^2;
Then you can just use the mask you created as B to overwrite the areas of any negative inputs with -1.
You can simplify the mask though as simply:
B = r < 0;
then
area( B ) = -1;
In your code you are not calculating any of the areas if any input is < 0. If that is what you want then it would seem that outputting just a scalar -1 would be sensible.
Image Analyst on 7 Jul 2018
B is a binary image. If you use it as a logical index to an array, the operation will happen to those locations where B is true (1). So when B is a binary image of a circle, then setting area(B) to -1 will make the image of "area" have a value of -1 for every pixel in the circle defined by the "B" image.

vedant mate on 5 Dec 2018
You have just written a compicated code which is unecessary. You could simply do this:
function area = areaCircle(r)
area = pi*r.^2;
if any(r<0)
B = r < 0;
area (B) = -1;
end
%as simple as that:)
##### 2 CommentsShowHide 1 older comment
ahmed samy on 6 Aug 2019
plz can you explain to me why you put area(B)=-1;
if i put
if any(r>0)
B=r>0;
area(B)=1;
then the output not the same ..... thanks for help

Garvit Amipara on 14 May 2019
Edited: Garvit Amipara on 14 May 2019
Here, with the following code you can give positive or negative- scalar or matrix input and get positive output.
function area = areacircle (r)
r = input('Enter the radius to calculate the area')
for j = size(r)
i = 1:j;
area(i) = 2 * pi * (r(i).^2) ;
if area(i) < 0;
B = -1 * area(i);
area = B
end
end
end

Abdurasul Choriyorov on 1 Dec 2019
function area = areaCircle(r)
for c = 1:length(r)
if r(c)>=0
area = pi.*r.^2;
else
b = r<0;
area(b) = -1;
end
end
end

Tehreem Zafar on 24 Apr 2021
Write and execute the function for calculating volume of the cylinder. [5+1+2+2]
Attach screenshots of your work in MATLAB
1. Name it Volume_cylinder that calculates volume of cylinder
2. How many inputs it has.
3. Name inputs
4. Run the function for two different inputs