# Write a function to calculate the area of a circle

1,303 views (last 30 days)

Show older comments

Mr. NailGuy
on 12 Feb 2018

Commented: Jose Raulito De Ocampo
on 2 Sep 2022

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 Comments

### Accepted Answer

Adam
on 12 Feb 2018

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.

##### 5 Comments

Image Analyst
on 7 Jul 2018

### More Answers (4)

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 Comments

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

##### 0 Comments

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

##### 0 Comments

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

- Name it Volume_cylinder that calculates volume of cylinder
- How many inputs it has.
- Name inputs
- Run the function for two different inputs

##### 0 Comments

### See Also

### Categories

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!