Simple program to fill an array

  • Thread starter Thread starter cs23
  • Start date Start date
  • Tags Tags
    Array Program
Click For Summary

Discussion Overview

The discussion revolves around a C programming issue related to initializing an array before computing its sum. Participants explore various methods for initializing the array and the implications of uninitialized values in the context of programming. The focus includes technical explanations, proposed solutions, and clarifications on array initialization.

Discussion Character

  • Technical explanation
  • Debate/contested
  • Homework-related

Main Points Raised

  • Some participants note that the array 'theta' is uninitialized, leading to unpredictable results when summing its values.
  • One participant suggests initializing the array with zeros using the syntax double theta[100] = { 0 };.
  • Another participant provides examples of different ways to initialize an array, including direct assignment and reading from input.
  • There is a discussion about the potential values in uninitialized arrays, with one participant mentioning that certain compilers may prefill memory with specific values for debugging purposes.
  • Some participants express confusion about the purpose of summing an array filled with zeros, questioning the intent behind the original code.
  • A later reply clarifies that the goal is to modify the program to initialize the array with values from 1 to 100.

Areas of Agreement / Disagreement

Participants generally agree that the array needs to be initialized, but there are differing opinions on the best method to achieve this. The discussion includes multiple approaches and remains unresolved regarding the most effective solution.

Contextual Notes

Some participants mention the importance of attention to detail in programming, particularly in relation to the initialization of variables and the implications for program correctness.

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.
 

Similar threads

  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 25 ·
Replies
25
Views
3K
  • · Replies 23 ·
Replies
23
Views
2K
Replies
6
Views
6K
Replies
1
Views
2K
  • · Replies 6 ·
Replies
6
Views
3K
Replies
4
Views
3K
  • · Replies 3 ·
Replies
3
Views
3K
Replies
47
Views
5K
Replies
20
Views
2K