Finding decimal values without mod

Is it possible or is there any way to find a value in an array that is a decimal without using mod(or any other function)?

5 个评论

By decimal value, do you mean a fractional number. Do you want to seperate fractional numbers from integers?
Please provide a small example of input and desired output.
For example, i want to separate the odd and even integers. I know there is easier ways,but i cant use functions only loops. (its a hw problem)
A=[1; 2; 3; 4; 5; 6; 7; 8]
[r,c]=size(A)
for i=1:r
if (i/2) = % Need help in the if condition
EvenV=i % I want to store the Even integers
elseif (i/2) ~= % Need help in the if condition
OddV=i % i want to store the odd integers
end
"For example, i want to separate the odd and even integers. I know there is easier ways,but i cant use functions only loops. (its a hw problem)"
You asked for with loop and without mod function, you can do multiple ways-
A=[1; 2; 3; 4; 5; 6; 7; 8]
m=1;n=1;
for i=1:length(A)
if rem(A(i),2)==0
EvenV(m)=A(i); % I want to store the Even integers
m=m+1;
else
OddV(n)=A(i); % i want to store the odd integers
n=n+1;
end
end
EvenV
OddV
You are going to have to use some functions for this. Even the / you are currently using is a function. Which functions are explicitly forbidden?

请先登录,再进行评论。

回答(1 个)

Right now, this is the only way I can think of to detect even and odd numbers without using any rounding functions and just a while loop. I suspect there might be more efficient solutions.
A=[1; 2; 3; 4; 5; 6; 7; 8];
Evens = [];
Odds = [];
for i=1:numel(A)
x = A(i);
tf = isEven(x);
if tf
Evens = [Evens x];
else
Odds = [Odds x];
end
end
function tf = isEven(x)
x = abs(x);
while true
x = x - 2;
if x == 0
tf = 1;
return
elseif x < 1
tf = 0;
return
end
end
end

类别

帮助中心File Exchange 中查找有关 Logical 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by