Info

This question is locked. 편집하거나 답변을 올리려면 질문을 다시 여십시오.

Calculate taxi fare by giving multiple inputs and single output

조회 수: 38 (최근 30일)
Divyang Jain
Divyang Jain 2019년 5월 25일
Locked: Rik 2024년 7월 9일
Write a function called taxi_fare that computes the fare of a taxi ride. It takes two inputs: the distance in kilometers (d) and the amount of wait time in minutes (t). The fare is calculated like this:
  • the first km is $5
  • every additional km is $2
  • and every minute of waiting is $0.25.
Once a km is started, it counts as a whole (Hint: consider the ceil built-in function). The same rule applies to wait times. You can assume that d >0 and t >= 0 but they are not necessarily integers. The function returns the fare in dollars. For example, a 3.5-km ride with 2.25 minutes of wait costs $11.75. Note that loops and if-statements are neither necessary nor allowed.
  댓글 수: 11
SALMA HACHIMY
SALMA HACHIMY 2022년 2월 14일
what about random input what we gonna do??
Walter Roberson
Walter Roberson 2022년 2월 14일
You are going to write correct code so that your code passes automatic grading? That's what you are going to do about random input ?

답변 (12개)

Kalpesh Shah
Kalpesh Shah 2019년 9월 22일
Its a Simple Question. Use 'ceil' as suggested in hint and it works fine
function fare = taxi_fare(d,t)
d = ceil(d)
t = ceil(t)
fare=5+(2*(d-1))+(t*0.25)
  댓글 수: 9
Quyen Le
Quyen Le 2021년 5월 30일
@Thato Mokhothu idk why but you have to arrange like that way : func (1st row), ceil for 2nd and 3rd rows, then the equation in the forth row, then it works :)) i don't really get why it can not run when I let the equation on the 2nd row.
LIke this
function fare = taxi_fare (d,t)
d = ceil(d);
t = ceil(t);
fare = 5 + 2*(d-1) + 0.25*t;
end
Instead Of
function fare = taxi_fare (d,t)
fare = 5 + 2*(d-1) + 0.25*t;
d = ceil(d);
t = ceil(t);
end
Walter Roberson
Walter Roberson 2021년 5월 30일
Suppose you do
A = 1
A = 1
B = A * 5
B = 5
A = 2
A = 2
After that series of statements, what is B ?
Answer:
B
B = 5
B did not change. When you wrote B = A * 5, you were not creating a formula for B: instead MATLAB copies the current value for A as of the time of the assignment and uses that to calculate B, and after that B has no knowledge of how it got to have the value it has.
If you were writing formulas instead of expressions, then consider the formula
B = B + 1
B = 6
As a formula, it would have to be interpreted as forcing B to be some value such that B and (B+1) were the same value. There are only three values such that B and (B+1) are the same value:
-inf == -inf + 1
ans = logical
1
inf == inf + 1
ans = logical
1
[nan, nan+1]
ans = 1×2
NaN NaN
I did not try to compare nan and nan+1 because comparisons with nan are always false.
If we understand
B = B + 1
as copying the current value of B, adding 1, and making the result the new value of B, then we get something that is very useful in programming. But if we think we are writing formulas, that
B = B + 1
is defining a formula saying that B and B + 1 must be the same value, then that is something that has very few uses.
Why does it matter? Well, if you define
fare = 5 + 2*(d-1) + 0.25*t;
and then afterwards change d and t, then if you are defining fare as a formula, it might make sense to change d and t afterwards -- but as the B = B + 1 case shows, expecting those to be formulas is often not very useful. If you instead understand it as copying the current values of d and t and using those to compute fare and then forgetting all information about how that exact value came to be, then when you change d and t afterwards, then those changes to d and t do not matter.
Furthermore, if we were interpreting
fare = 5 + 2*(d-1) + 0.25*t;
as being a formula relating fare to whatever value of d and t existed at the time we asked about the value of fare, then we would also have to understand
d = ceil(d);
as being a formula -- and that is a formula that could only be true if d is already an integer. If the input d were, for example, 3.8, then as a formula
3.8 == ceil(3.8)
would be false, and instead of doing something useful, you could only be telling MATLAB that the function as a whole only applies if d was already an integer... and then what would you expect MATLAB to do if the user wanted to calculate the fare for 3.8 miles ?

Vijay G
Vijay G 2020년 8월 17일
편집: Vijay G 2020년 8월 17일
function fare = taxi_fare(x,y)
d = 5+(((ceil (x))-1)*2);
t = ((ceil(y))*.25);
fare = d+t;
end
letme know whether this helped you. Thanks

Raj
Raj 2019년 5월 27일
Seems quite straightforward. Where exactly are you having problem? Your formulation should look like this:
Fare=5+(2*(d-1))+(t*0.25) % Minimum fare of $5 for first KM plus $2 for every additional KM plus waiting time charge
Just pass the inputs d and t to the function named taxi_fare and use ceil on both before putting them in the above mentioned equation. You will get your fare which you can pass as output of the function. Good luck!!
  댓글 수: 18
Sejal Syed
Sejal Syed 2019년 9월 21일
Doesnt work tried it
Walter Roberson
Walter Roberson 2019년 9월 22일
Sejal Syed please explain what it was you tried, and what error you encountered.

amjad khan
amjad khan 2020년 4월 5일
편집: DGM 2023년 3월 4일
function fare=taxi_fare(distance,time)
distance=ceil(distance-1)
time=ceil(time)
fare=5*(2+(distance-1)+0.25*time
end
% "d"can be used instead of distance and "t" instead of time,
  댓글 수: 3
Jessika Lisboa
Jessika Lisboa 2020년 5월 12일
Why it needs to be (distance-1)?? I dont understand, can you please help me?
Thank you
Walter Roberson
Walter Roberson 2020년 5월 13일
the first km is in the base price. You need to calculate "additional" kilometres, after the first, so you subtract the 1 initial kilometre

Arooba Ijaz
Arooba Ijaz 2020년 5월 1일
function [fare] =taxi_fare (d,t)
a=ceil(d)
b=ceil(t)
fare=(b*0.25)+((a-1)*2)+5
end

AYUSH MISHRA
AYUSH MISHRA 2020년 5월 25일
function fare= taxi_fare(d,t)
d=ceil(d); %d=total distance cover by taxi
t=ceil(t); %t=total time taken to complete distance
RD=ceil(d-1); %RD= remaning distace after 1 km distance
fare=5+2*RD+0.25*t;%fare=1st km charge + Remaning km Distance charge + waiting time charge
end
solution of question
fare=taxi_fare(3.5,2.25)
fare =
11.7500
  댓글 수: 1
DGM
DGM 2023년 2월 21일
After the first line, d is an integer, so d-1 is also an integer. Using ceil() on d-1 does nothing.
I'll give you credit for using comments though. That's good.

Dante Gallo Torres
Dante Gallo Torres 2023년 6월 14일
You can use matrix for this problem:
function fare = taxi_fare(d, t)
fare = [1 ceil(d-1) ceil(t)] * [5; 2; 0.25]
end
  댓글 수: 1
Rik
Rik 2023년 6월 14일
Neat solution to 'hide' the addition in the matrix product. The only things missing in your answer are documentation of this function and a semicolon.

Roweida Bawab
Roweida Bawab 2020년 5월 5일
function fare = taxi_fare(d, t)
d = ceil(d);
t = ceil(t);
fare = 5 + (d-1)*2 + t*0.25
end

muyiwabowen
muyiwabowen 2020년 5월 8일
function rare = taxi_fare(d,t)
rare = 5 + 2*ceil((d-1)) + 0.25*ceil(t);
end

Muhammad Talha Malik
Muhammad Talha Malik 2020년 6월 14일
편집: Walter Roberson 2020년 6월 14일
can anyone tell me what is wrong with this code?
function fare = taxi_fare(d,t)
fare = (5+2*(d-1))+0.25*d;
end
  댓글 수: 3
RAHWA ZESLUS
RAHWA ZESLUS 2021년 2월 9일
how can i solve rondom input?
Walter Roberson
Walter Roberson 2021년 2월 9일
@RAHWA ZESLUS by writing correct code?
What happens when you test your code with random input? Is it giving the same answer you get when you manually calculate for the same input?

Stavan
Stavan 2023년 7월 25일
편집: Stavan 2023년 7월 25일
I wrote this code for the test, but somehow it isnt working with the test, i am getting the right answers but it isnt letting me pass, can anyone show what could be the problem
function total_taxi=taxi_fare(d,t)
total_taxi= 5+2*ceil(d-1)+0.25*ceil(t)
end
  댓글 수: 4
Stavan
Stavan 2023년 7월 26일
okay so what should be written instead of -1 according to you
Also the grader just says the answer is incorrect, even though the code works and gives out correct answers
Walter Roberson
Walter Roberson 2023년 7월 26일
add (d>=1) .* kilometer_cost instead of kilometer_cost

Karan
Karan 2023년 10월 25일
I would say this code is more general and can be use for any km if not counted as a whole number, like one can use it for 0.5km.
function fare = taxi_fare(d, t)
d = ceil(d);
t = ceil(t);
fare = 5*(d - (d-1)) + (d-1)*2 + t*0.25
end

This question is locked.

카테고리

Help CenterFile Exchange에서 Matrix Indexing에 대해 자세히 알아보기

제품


릴리스

R2019a

Community Treasure Hunt

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

Start Hunting!

Translated by