How do i convert this for loop into a while loop?

Asked by Ilker Enes Çirkin

Ilker Enes Çirkin (view profile)

on 28 May 2019
Latest activity Commented on by Ilker Enes Çirkin

Ilker Enes Çirkin (view profile)

on 28 May 2019
Accepted Answer by James Tursa

James Tursa (view profile)

I just couldn't figure out how to convert it into a while loop. here is the code:
clc;
clear;
clear all;
n=input('Enter the number of elements in your array:'); % number of array elements
for i=1:n
values(i)=input('Enter the values:')
if values(i)<0
values(i)=values(i)*(-1)
end
end
for k=1:(n-1)
d=k+1
Xaverage(k)=(values(d)+values(k))/2
end
y=1:1:n;
plot(values,y)
hold on
z=1:1:(n-1);
plot(Xaverage,z)

1 Comment

Ilker Enes Çirkin

Ilker Enes Çirkin (view profile)

on 28 May 2019
this is what i have tried so far:
clc;
clear;
clear all;
n=input('Enter the number of elements in your array:'); % number of array elements
i=1;
while i<n
values(i)=input('Enter the values:');
if values(i)<0
values(i)=values(i)*(-1)
end
end
k=1;
while k<(n-1)
d=k+1
Xaverage(k)=(values(d)+values(k))/2
end
y=1:1:n;
plot(values,y)
hold on
z=1:1:(n-1);
plot(Xaverage,z)

Tags

No tags entered yet.

Release

R2019a

Answer by James Tursa

James Tursa (view profile)

on 28 May 2019

This for loop:
for i=1:n
% stuff
end
is equivalent to this while loop:
i = 1;
while i <= n
% stuff
i = i + 1;
end
Your biggest problem is you never increment i or k in your while loops.

Ilker Enes Çirkin

Ilker Enes Çirkin (view profile)

on 28 May 2019
yes ı noticed that after i shared this but after changing it i get the error saying Index exceeds the number of array elements (2).
James Tursa

James Tursa (view profile)

on 28 May 2019

Answer by Ilker Enes Çirkin

Ilker Enes Çirkin (view profile)

on 28 May 2019

This is my current code:
n=input('Enter the number of elements in your array:'); % number of array elements
i=1;
while i<=n
i=i+1;
values(i)=input('Enter the values:')
if values(i)<0
values(i)=values(i)*(-1)
end
end
k=1;
while k<=(n-1)
k=k+1;
d=k+1
Xaverage(k)=(values(d)+values(k))/2
end
y=1:1:n;
plot(values,y)
hold on
z=1:1:(n-1);
plot(Xaverage,z)

James Tursa

James Tursa (view profile)

on 28 May 2019
You did not copy the form of the while loop correctly. Incrementing the index variable is the LAST thing you do in the loop as I have written it. So your i=i+1 and k=k+1 lines need to be the LAST things you do in the loop, not the first.
Ilker Enes Çirkin

Ilker Enes Çirkin (view profile)

on 28 May 2019
oh thank you so much it works now :)