DaniWeb IT Discussion Community

DaniWeb IT Discussion Community (http://www.daniweb.com/forums/index.php)
-   C++ (http://www.daniweb.com/forums/forum8.html)
-   -   arrays proplem (http://www.daniweb.com/forums/thread102743.html)

bis student Dec 28th, 2007 3:48 pm
arrays proplem
 
hello ,Im a new member and Im not very good in english , so please excuse me , I have question :
write a C++ program that declares an array alpha of 50 component of type double . Initialize the array so that the first 25 components are equal to the square of the index variable , and the last 25 components are equal to the three times the index variable . output the array so that 10 elements per line are printed .

what does it this mean Initialize the array so that the first 25 components are equal to the square of the index variable ?

Narue Dec 28th, 2007 3:58 pm
Re: arrays proplem
 
>what does it this mean Initialize the array so that the first 25
>components are equal to the square of the index variable ?
I would assume something like this:
for ( int i = 0; i < 25; i++ )
  alpha[i] = i * i;

dubeyprateek Dec 28th, 2007 5:33 pm
Re: arrays proplem
 
Once you declare an array you just reserve some amount of memory. This memory contains garbage. if you try to print all values of the array just after delaring it you will see just garbage. See folowing line of code.
int alpha[50];
int i = 0;
for(i=0;<50;++i)
{
    cout<<alpha[i]<<"  ";
}

Initialization means providing valid values to elements for the first time.
Narue's code intializes first 25 elements of the array. You can try initializing rest.

Lerner Dec 28th, 2007 6:28 pm
Re: arrays proplem
 
I thought this was initialization:

int num[] = {1, 2, 3, 4};

and this:
int num[4];
for(int i = 0; i < 4; i++i)
  num[i] = i;
represented serial assignment.

Furthermore I think that either the instructor, the OP, or I (and I don't think it's me this time) don't know the difference between iniatialization of the elements of an array and assignment to the elements of an array and use the two concepts interchangeably, as they can end up with the same result.

dubeyprateek Dec 28th, 2007 7:15 pm
Re: arrays proplem
 
I believe we are confused in Initialization and declaration.

int i ; // declaration
int i = 10 ; declaration + initialization

i= 15 ; // assignment

You cannot only do initialization without declaration.

As per the initial question is concerned it is stupid to initialize the array with different values.

int alpha [50] = {1,2*2,3*3,…………………} ;// wrong syntax

int alpha[50] = {0} ; //initialize all the fifty elements by 0

Naure’s solution presumes taht the instructor wants to *assign* values to the array not exactly initialize. I agree with the solution.

bis student Dec 29th, 2007 5:04 am
Re: arrays proplem
 
before every thing thank you for helping , and Im asking if these answer is right :
# include <iostream>
using namespace std ;
int main ()
{
int alpha[50];
for (int i=0;i<25;i++)
{
alpha[i]=i*i;
cout<<alpha[i]<<" ";
for(i=25;i<50;i++)
{
alpha[i]=3*i;
cout<<alpha[i]<<" ";
}
return 0
}
also I have question how can I print 10 elements per line if I had 2 loop
and thank you very much ,

superjacent Dec 29th, 2007 9:55 am
Re: arrays proplem
 
Quote:

Originally Posted by bis student (Post 500122)
before every thing thank you for helping , and Im asking if these answer is right :
# include <iostream>
using namespace std ;
int main ()
{
int alpha[50];
for (int i=0;i<25;i++)
{
alpha[i]=i*i;
cout<<alpha[i]<<" ";
for(i=25;i<50;i++)
{
alpha[i]=3*i;
cout<<alpha[i]<<" ";
}
return 0
}
also I have question how can I print 10 elements per line if I had 2 loop
and thank you very much ,

You're on the right track. Another solution would be to use only one
for loop
and use an
if else
test condition to test for the first 25, do whatever...

As regards printing 10 per line, you could make use of the % modulus operator to determine whether a newline should be printed
if (i % 10 == 0)
.

I hope this is of value.

invisal Dec 29th, 2007 10:16 am
Re: arrays proplem
 
Quote:

Originally Posted by superjacent (Post 500223)
You're on the right track. Another solution would be to use only one
for loop
and use an
if else
test condition to test for the first 25, do whatever...

If you want to use only one loop, you don't need to use condition.

for(int i =0; i<25; i++) {
  alpha[i] = i * i;
  alpha[49-i] = (49-i) * 3;
}

bis student Dec 30th, 2007 3:51 am
Re: arrays proplem
 
thank you again for helping , and I want another hint about print 10 elements per line because this if (i % 10 == 0) does is not work .

invisal Dec 30th, 2007 4:04 am
Re: arrays proplem
 
Quote:

Originally Posted by bis student (Post 500520)
thank you again for helping , and I want another hint about print 10 elements per line because this if (i % 10 == 0) does is not work .

After you successfully initialize your array, you create another loop for print each element of your array. Every 10 elements, you insert the newline character. (Hint: everytimes the counter is divisable by 10, then it means you have already print 10 elements in that line)

rajatC Dec 30th, 2007 5:19 am
Re: arrays proplem
 
for(int i=0 ; i<50 ; i++)
{cout<<a[i]<<" ";
if(i%10 == 0)
cout<<endl;
}


you had to use cout<<endl if i is divisble by 10 i.e. 10 elements has been printed..

rajatC Dec 30th, 2007 5:21 am
Re: arrays proplem
 
it will print 11 elements in first line and 10 in all others...
to be more accurate use...
for(int i=1 ; i<51 ; i++)
    {
           
            cout<<setw(3)<<a[i-1]<<" ";
            if(i%10 == 0)
            cout<<endl;
    }

invisal Dec 30th, 2007 6:10 am
Re: arrays proplem
 
Quote:

Originally Posted by rajatC (Post 500542)
for(int i=0 ; i<50 ; i++)
{cout<<a[i]<<" ";
if(i%10 == 0)
cout<<endl;
}


you had to use cout<<endl if i is divisble by 10 i.e. 10 elements has been printed..

It should be:
if( (i+1)%10 == 0)
Because i was started from 0

bis student Dec 30th, 2007 6:49 am
Re: arrays proplem
 
this is my answer ; is it right ?
# include <iostream>
#include <iomanip >
using namespace std ;
int main ()
{
       
int alpha[50];
for (int i=0;i<25;i++)
{
alpha[i]=i*i;
cout<<alpha[i]<<" ";
}
for(int i=25;i<50;i++)
{
alpha[i]=3*i;
cout<<alpha[i]<<" ";
}
for(int i=1 ; i<51 ; i++)    {                         
    {
           
            cout<<setw(3)<<alpha[i-1]<<" ";
            if( (i+1)%10 == 0)
            cout<<endl;
    }
   
}

return 0;
}

superjacent Dec 30th, 2007 6:52 am
Re: arrays proplem
 
This works if you don't mind the newline right from the get go.
if (i % 10 == 0)
  cout << endl;
cout << alpha[i] << "\t";

superjacent Dec 30th, 2007 7:06 am
Re: arrays proplem
 
Quote:

Originally Posted by bis student (Post 500564)
this is my answer ; is it right ?

I'd guess that you should be able to determine if it's right or not and I'm suspecting you're guessing it's not.

I'd suggest removing the
cout
statements from the
for
loops of the assignment statements, they just print 25 across the line, which is not what you want.

I removed those cout statements and your code is nearly there. The first line only prints 9 numbers, the rest print 10.

invisal Dec 30th, 2007 7:15 am
Re: arrays proplem
 
for(int i=1 ; i<51 ; i++)    {                           
    {
           
            cout<<setw(3)<<alpha[i-1]<<" ";
            if( (i+1)%10 == 0)
            cout<<endl;
  }
   
}
Double open brace and double close brace?

There are 2 ways to choose to print 10 numbers for each line.
for (int i=0; i<50; i++) {
  cout << alpha[i] << "  ";
    if ((i+1) % 10 == 0)
        cout << endl;
}
Or
for (int i=1; i<51; i++) {
  cout << alpha[i-1] << "  ";
    if (i % 10 == 0)
        cout << endl;
}
This one also work too
for (int i=0; i<50; ) {
  cout << alpha[i] << "  ";
    if (++i % 10 == 0)
        cout << endl;
}


All times are GMT -4. The time now is 5:01 am.

Forum system based on vBulletin Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
©2003 - 2009 DaniWeb® LLC