No se que significa este error

mrpolo
21 de Junio del 2005
Hola a todos les escrbo para ver que significa este error que me da en este programa sencillo aqui esta el codigo y abajo el error que me da.
#include<iostream.h>
#include<math.h>
#include<process.h>
class dimensiones{
public:
dimensiones();
void intro();
void unidim();
void dosdim();

int a, b, c, d, e, i, j, k, l, m, p;
private:
char o;
};
dimensiones x;
dimensiones::dimensiones(){
a=0;
}
void dimensiones::intro(){
do{
system("cls");
cout<<"Introduzca las dimensiones del arreglo: ";
cin>>p;
if(p==1){unidim();}
if(p==2){dosdim();}
cout<<"Desea realizar de nuevo la operacion (s/n)";
cin>>o;
}
while(o=='s'||o=='S');
}
void dimensiones::unidim(){
double A[99999];
cout<<"Introduzca el tamano de las columnas del arreglo: ";
cin>>a;
for(i=1;i<=a;i++){
A[i]=i;
cout<<"Dato("<<i<<") = "<<A[i]<<" ";
cout<<endl;
}
cout<<"Desea realizar la operacion de nuevo (s/n)";
cin>>o;
if(o=='s'||o=='S')
intro();
}

void dimensiones::dosdim(){
double A[99999][99999];
cout<<"Introduzca el tamano de las columnas del arreglo: ";
cin>>a;
cout<<"Introduzca el tamano de las filas del arreglo: ";
cin>>b;
for(i=1;i<=a;i++){
for(j=1;j<=b;j++){
A[i][j]=i+j;
cout<<"Dato("<<i<<","<<j<<") = "<<A[i][j]<<" ";
cout<<endl;
}
}
cout<<"Desea realizar la operacion de nuevo (s/n)";
cin>>o;
if(o=='s'||o=='S'){intro();}
}


void main(){
x.intro();
}
El error me dice Fatal error C1126: '2G' : automatic allocation exceeds ‰F ‹F€Ì‰F‹Ç_^ÃÁèƒàHt0ƒèt+é5•
Error executing cl.exe. // y me señala la llave que cierra la funcion unidim()..
Sin mas a que referirme me despido esperando su pronta respuesta y dandoles la gracias de antemano.

Miguel
21 de Junio del 2005
Hola.

En primer lugar, en C/C++ los arreglos o matrices comienzan en la celda 0, no en la 1, luego donde escribes cosas del tipo:

for(i=1;i<=a;i++){
A[i]=i;
cout<<"Dato("<<i<<") = "<<A[i]<<" ";
cout<<endl;
}

debes cambiar la siguiente linea:

for(i=1;i<=a;i++){

por esta otra:

for(i=0;i<a;i++){

porque si no, te sales del arreglo o matriz, lo que puede dar error.

Teniendo en cuenta esto, revisa el programa, quizás ya funcione.

Un último dato, cuidado con las declaraciones como:

double A[99999][99999];

porque quizás sean demasiado grande. Con que pongas algo de 100x100 es suficiente, controla que no se pueda introducir un valor superior y ya está.

Un saludo,
Miguel Angel
www.maacera.com