Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > C++ > Array Problems

Reply
Thread Tools

Array Problems

 
 
kohvirus@gmail.com
Guest
Posts: n/a
 
      10-29-2005
Well after embaressing myself and posting in the wrong fourm, I found
my way to the right one and I'm hoping to seek some help. This is the
program without any modifications that I am making recently (because
I'll most likely make it blow up moreso).

I'm currently trying to write a program with an array but for the life
of me I can't seem to get the right syntax for the array. Here is the
program as follows:

#include <iostream>
#include <stdio.h>

void display(int A[] [], int m, int n)

{
int i;
int j;

std::cout << "Enter your value for m ";
std::cin >> m;
std::cout << "\n";

for (i =0; i< m; i++)

{ for (j=0; j < n; j++)

cout << " " << A[i][j];

cout << "\n";
}

}

Sorry if the way I write makes you cringe, still learning to to make
code 'neat'. Anyway, here are the error outputs I am getting and I am
unable to resolve any further:

fail.cpp:9: declaration of `A' as multidimensional array
fail.cpp:9: must have bounds for all dimensions except the first
fail.cpp: In function `void display(int, int)':
fail.cpp:21: `A' undeclared (first use this function)
fail.cpp:21: (Each undeclared identifier is reported only once
fail.cpp:21: for each function it appears in.)

Any help at narrowing the problem would be appreciated. I'm using this
to test for a CGI program I will be creating here soon.

Thanks!

 
Reply With Quote
 
 
 
 
red floyd
Guest
Posts: n/a
 
      10-29-2005
wrote:
> Well after embaressing myself and posting in the wrong fourm, I found
> my way to the right one and I'm hoping to seek some help. This is the
> program without any modifications that I am making recently (because
> I'll most likely make it blow up moreso).
>
> I'm currently trying to write a program with an array but for the life
> of me I can't seem to get the right syntax for the array. Here is the
> program as follows:
>
> #include <iostream>
> #include <stdio.h>
>
> void display(int A[] [], int m, int n)
>
> {
> int i;
> int j;
>
> std::cout << "Enter your value for m ";
> std::cin >> m;
> std::cout << "\n";
>
> for (i =0; i< m; i++)
>
> { for (j=0; j < n; j++)
>
> cout << " " << A[i][j];
>
> cout << "\n";
> }
>
> }
>
> Sorry if the way I write makes you cringe, still learning to to make
> code 'neat'. Anyway, here are the error outputs I am getting and I am
> unable to resolve any further:
>
> fail.cpp:9: declaration of `A' as multidimensional array
> fail.cpp:9: must have bounds for all dimensions except the first
> fail.cpp: In function `void display(int, int)':
> fail.cpp:21: `A' undeclared (first use this function)
> fail.cpp:21: (Each undeclared identifier is reported only once
> fail.cpp:21: for each function it appears in.)
>
> Any help at narrowing the problem would be appreciated. I'm using this
> to test for a CGI program I will be creating here soon.
>
> Thanks!
>


You need to specify the second dimension for A, e.g. int
A[][SOME_CONSTANT];


The two error messages for line 9 are quite clear on this.

 
Reply With Quote
 
 
 
 
John Harrison
Guest
Posts: n/a
 
      10-29-2005
wrote:
> Well after embaressing myself and posting in the wrong fourm, I found
> my way to the right one and I'm hoping to seek some help. This is the
> program without any modifications that I am making recently (because
> I'll most likely make it blow up moreso).
>
> I'm currently trying to write a program with an array but for the life
> of me I can't seem to get the right syntax for the array. Here is the
> program as follows:
>
> #include <iostream>
> #include <stdio.h>
>
> void display(int A[] [], int m, int n)
>
> {
> int i;
> int j;
>
> std::cout << "Enter your value for m ";
> std::cin >> m;
> std::cout << "\n";
>
> for (i =0; i< m; i++)
>
> { for (j=0; j < n; j++)
>
> cout << " " << A[i][j];
>
> cout << "\n";
> }
>
> }
>
> Sorry if the way I write makes you cringe, still learning to to make
> code 'neat'. Anyway, here are the error outputs I am getting and I am
> unable to resolve any further:
>
> fail.cpp:9: declaration of `A' as multidimensional array
> fail.cpp:9: must have bounds for all dimensions except the first
> fail.cpp: In function `void display(int, int)':
> fail.cpp:21: `A' undeclared (first use this function)
> fail.cpp:21: (Each undeclared identifier is reported only once
> fail.cpp:21: for each function it appears in.)
>
> Any help at narrowing the problem would be appreciated. I'm using this
> to test for a CGI program I will be creating here soon.
>
> Thanks!
>


You cannot pass an array to a function in C or C++. You use pointers
instead.

This syntax

void f(int a[])

is just another way of writing

void f(int* a)

In other words the first form is just a way of confusing newbies into
thinking that you can pass an array to a function in C++. Usually they
find out the truth when they try a two dimensinal array.

There are several things you could do at this point

1) You could accept that the second dimension must be a constant, e.g.

void f(int a[][10])

which of course is just another way of writing

void f(int (*a)[10])

Pointers again! Remember no way of passing an array to a function in C++.

2) You could learn about how to represent 2d arrays using pointers. In
this case your function would look like this

void f(int** a)

Trouble with this option is that your calling code would have to change
as well.

3) You could learn about vectors, you can pas a 2d vector to a function

void f(const std::vector< std::vector<int> >& a)

My advice would be option 3, stay away from pointers, they are difficult.

You might also be interrested in the FAQ

http://www.parashift.com/c++-faq-lit...html#faq-16.16

john
 
Reply With Quote
 
Jonathan Mcdougall
Guest
Posts: n/a
 
      10-29-2005
wrote:
> Well after embaressing myself and posting in the wrong fourm, I found
> my way to the right one and I'm hoping to seek some help. This is the
> program without any modifications that I am making recently (because
> I'll most likely make it blow up moreso).
>
> I'm currently trying to write a program with an array but for the life
> of me I can't seem to get the right syntax for the array. Here is the
> program as follows:
>
> #include <iostream>
> #include <stdio.h>


<stdio.h> should be <cstdio> in C++. What's more, you don't need it
here.

> void display(int A[] [], int m, int n)


Well that's illegal. Take a statement like

A[1][2] = 0;

and imagine A is a 3x3 array. That means you are accessing the third
column of the second row, which is equivalent to

A[1*row_length + 2] = 0;

Now, the compiler, in display() has no way to know the value of
"row_length". To do that, you must tell it:

void display(int A[][3], int m, int n)

You could also set the first dimension, but that's not necessary. The
compiler does not need to know how many rows there are.

"But that's a pain". Yes it is. Either use a plain pointer

void display(int *A, int m, int n)

and do the math yourself, as I did earlier, using "m" and "n" (these
are the dimensions, right?) or use a std::vector.

>
> {
> int i;
> int j;


No. Always define variables as near its for use as possible.

> std::cout << "Enter your value for m ";
> std::cin >> m;
> std::cout << "\n";


> for (i =0; i< m; i++)


Here, you should define i:

for (int i=0; i<m; ++i)

> { for (j=0; j < n; j++)


for (int j=0; j<n; ++j)

See

http://www.parashift.com/c++-faq-lit....html#faq-10.6
http://www.parashift.com/c++-faq-lit...html#faq-13.15

and browse the whole faq while you're there.

>
> cout << " " << A[i][j];
>
> cout << "\n";
> }
>
> }
>
> Sorry if the way I write makes you cringe, still learning to to make
> code 'neat'. Anyway, here are the error outputs I am getting and I am
> unable to resolve any further:
>
> fail.cpp:9: declaration of `A' as multidimensional array
> fail.cpp:9: must have bounds for all dimensions except the first
> fail.cpp: In function `void display(int, int)':
> fail.cpp:21: `A' undeclared (first use this function)
> fail.cpp:21: (Each undeclared identifier is reported only once
> fail.cpp:21: for each function it appears in.)


That should be solved. However, I fail to see the point of this
program, so I cannot give you more advices.


Jonathan

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
const and array of array (of array ...) Mara Guida C Programming 3 09-03-2009 07:54 AM
length of an array in a struct in an array of structs in a struct in an array of structs Tuan Bui Perl Misc 14 07-29-2005 02:39 PM
Length of Array of Array of Array Tom Perl Misc 3 12-20-2004 05:23 PM
How to combine 2 int Array into ONE int Array ? S300 Java 4 08-19-2003 07:04 PM
hashed array in array need the keys... and length Daniel Perl 1 08-14-2003 06:49 PM



Advertisments