## Why does this code not do what it should

I can't see what is wrong with this code, but for some reason it doesn't work. It compiles, just doesn't do what it should.

Code:
for(i=0; i<n; i++)
{
delx[i] = i/n;
}
I have defined delx as an array, with n elements, and just want to fill the array with evenly spaced values from 0 to n. When I try running it, it says that all elements of the array are 0. Any chance someone could explain to me where the problem is.

 PhysOrg.com science news on PhysOrg.com >> Hong Kong launches first electric taxis>> Morocco to harness the wind in energy hunt>> Galaxy's Ring of Fire
 If i is declared type int, and n is declared type int, that would explain the behavior. try this: delx[i] = float(i)/float(n); this is called casting, when you force the the type of a variable to change for a particular calculation (I am not sure if float() is the correct syntax for C). Alternatively I think you can declare n as a float, but I am no C expert. The problem though is that when you divide a small integer by a large one and get an integer result, the result has to be zero.
 Recognitions: Homework Help Science Advisor Presumably i and n are integers? Integer division will round down. Use delx[x] = (float)i/(float)n;

Recognitions:
Gold Member

## Why does this code not do what it should

The problem seems to be that you're not casting correctly (assuming array type int). The way I would do it is to make my array a float and then do a integer division and perform casting:

Code:
#include <stdio.h>

#define n 10

int main()
{
float delx[n];
int i=0;

for(i=0; i<n; i++)
{
delx[i] = (float) i/n;
printf("%f\n", delx[i]);
}
return 0;
}
 Quote by mgb_phys Presumably i and n are integers? Integer division will round down.
Well if his array has n elements, then array size cannot be specified by a non-integer type. So I guess integer division is sort of implicit.

 Recognitions: Homework Help Science Advisor The code in the op doesn't define i or n, or say if n is the array size; Some (naughty) compilers will cast a float index to an array to int.

 Quote by mgb_phys Presumably i and n are integers? Integer division will round down.
Only if both operands are positive, otherwise the behaviour is implementation defined.

Recognitions:
Homework Help