Simple program to fill an array

  • Thread starter Thread starter cs23
  • Start date Start date
  • Tags Tags
    Array Program
AI Thread Summary
The discussion revolves around a C program intended to compute the sum of an array, but it fails due to uninitialized values in the array. Participants highlight that the array `theta` is not initialized, leading to the accumulation of random values in the `sum` variable. Suggestions for initializing the array include setting it to zero or populating it with specific values, such as the integers from 1 to 100. The use of a for loop for initialization is recommended, and there is clarification on the difference between QNA and QNAN, indicating potential issues with the output. The conversation emphasizes the importance of proper initialization in programming to avoid incorrect results.
cs23
Messages
64
Reaction score
0
#include <stdio.h>
int main()
{
double sum, theta[100];
int i;
sum = 0.0;
i = 0;
while (i < 100)
{
sum = sum + theta;
i = i + 1;
}
printf("The sum of the array is %lf\n", sum);

}

when i run it i get a wrong answer...i don't know how to initialize the array
 
Technology news on Phys.org
cs23 said:
#include <stdio.h>
int main()
{
double sum, theta[100];
int i;
sum = 0.0;
i = 0;
while (i < 100)
{
sum = sum + theta;
i = i + 1;
}
printf("The sum of the array is %lf\n", sum);

}

when i run it i get a wrong answer...i don't know how to initialize the array


What do you want to initialize it with?
Your array is filled with random values and you are adding up those random values into the variable sum. It would help if you say what you are trying to do?
 
I've taken the liberty to put your code in [code ] tags and format it:
Code:
#include <stdio.h>

int main()
{
    double sum, theta[100];
    int i;
    sum = 0.0;
    i = 0;
    while (i < 100) 
    {
        sum = sum + theta[i];
        i = i + 1;
    }
    printf("The sum of the array is %lf\n", sum);
}

theta[100] is an uninitialized array. You need to initialize it, as phiby said. You should also consider using a for loop instead of a while loop.
 
Last edited:
jhae2.718 said:
theta[100] is an array of 0.0 one hundred times.
No - it's not. I don't see any code which puts 0.0 into the array.

If you want it to be array containing all 0's, this is the simplest way to do it

Code:
double theta[100] = { 0 };
 
cs23 said:
i don't know how to initialize the array

Here are the 3 ways to initialize an array:

double theta[3] = { 1.0, 2.0, 3.0 };

theta[0] = 1.0;
theta[1] = 2.0;
theta[2] = 3.0;

read from file (or standard input)
 
phiby said:
No - it's not. I don't see any code which puts 0.0 into the array.

You are of course correct. I was thinking of filling remaining elements of an array when not fully initialized.

cs23 said:
i don't know how to initialize the array

If there is a relationship between the elements you could also loop through. E.g. the following will produce an array of the first 10 squares:
Code:
[B]int[/B] array[10];
[B]int[/B] i;
[B]for[/B] (i = 0; i < 10; i++) {
        array[i] = (i + 1) * (i + 1);
}

I would recommend The C Programming Language (Amazon link b/c of Wiki blackout) by K&R as an introduction to C.
 
Last edited:
phiby said:
No - it's not. I don't see any code which puts 0.0 into the array.

While you are right there is no code initializing the array, values it contains don't have to be random. For example if you are using Microsoft C++ compiler (VisualStudio) in _DEBUG mode memory can be (or always is?) prefilled with things like 0xBAADF00D, 0xCDCDCDCD or 0xFDFDFDFD (plus some more) to make debugging easier.
 
phiby said:
What do you want to initialize it with?
Your array is filled with random values and you are adding up those random values into the variable sum. It would help if you say what you are trying to do?

I'm trying to compute the sum of the array
 
cs23 said:
I'm trying to compute the sum of the array

Do you just need an arbitrary array then?
 
  • #10
when i run it, i get -1.#QNA

I know that double theta[100] = {0}; will fill each element with 0.
 
  • #11
cs23 said:
when i run it, i get -1.#QNA

I know that double theta[100] = {0}; will fill each element with 0.


Is it QNA or QNAN?
QNAN is a quiet NAN. NAN is "Not a Number".

Anyway, could you post the full program with which you are getting this error?

Also why are you trying to find the sum of an array which is filled with 0s?
 
  • #12
Well this is the question that uses the code

The previous program for computing the sum of an array may not produce a correct
result since the elements of the array have not been properly initialized. Modify the program so that the array elements have values 1, 2, . . . , 100.
 
  • #13
cs23 said:
Well this is the question that uses the code

The previous program for computing the sum of an array may not produce a correct
result since the elements of the array have not been properly initialized. Modify the program so that the array elements have values 1, 2, . . . , 100.

Declare the array, and then use a for loop to put values 1, 2, ..., 100 into it.
 
  • #14
phiby said:
Anyway, could you post the full program with which you are getting this error?

Also why are you trying to find the sum of an array which is filled with 0s?

cs23 said:
Well this is the question that uses the code

The previous program for computing the sum of an array may not produce a correct
result since the elements of the array have not been properly initialized. Modify the program so that the array elements have values 1, 2, . . . , 100.
Your answer was not what phiby asked. To be successful in programming, you have to pay attention to details.
 
Back
Top