Foreach loop behaviour and manipulation
Joseph Rushton Wakeling
joseph.wakeling at webdrake.net
Fri Nov 29 01:15:22 PST 2013
On 29/11/13 00:36, Binarydepth wrote:
> I'm wondering in the case of manipulating the variable from the foreach loop, Do
> I have to reset that variable so the loop can work as intended ?(chronologically).
I think that you are approaching this problem in the wrong way. Instead of
using a temporary variable to preserve the loop value, why not keep the loop
value constant (immutable, in fact) and use a temporary variable to calculate
the values that you wish to write to the array?
Like so:
////////////////////////////////////////////////////////////////////////
import std.stdio : write, readf;
void main()
{
int a, r, f;
int[102] arr;
write("Digite su año de nacimiento : ");
readf(" %d", &a);
write("\n");
foreach (immutable t; 1 .. 51)
{
int temp = (((t * 20) + 420) * 5) + 3;
arr[t - 1] = temp - a;
temp = (((t * 5) + 50) * 20) + 1013;
arr[t] = temp - a;
}
write("BD\tAnonimo\n");
foreach(count; 0..102)
{
write(arr[count]);
if(count%2==0)
write("\n");
else
write(" : ");
}
}
////////////////////////////////////////////////////////////////////////
This gives same results as your existing code but (to me at least) is much
simpler and easier to follow.
2nd thing -- do I assume right that you are getting incorrect output and that
the later output values shouldn't be all zero? I think this is because you are
incorrectly choosing array indexes to write to, but we should perhaps talk about
what your program is _supposed_ to do before addressing that.
Am I also right to assume that you're used to languages where the array index
starts from 1 rather than from 0?
Best wishes,
-- Joe
More information about the Digitalmars-d-learn
mailing list