[C con Clase] Programa para sumar dos arreglos del mismo tamaño
Steven Davidson
srd4121 en njit.edu
Mar Ago 19 20:23:46 CEST 2008
Hola Cristian,
Cristian wrote:
> Hoy en clase de programacion vi arreglos y me pidieron hacer un
> ejercicio de suma de dos arreglos.
>
> me atore un una parte, esto es lo que llevo:
>
Veamos el código fuente.
> #include <iostream.h>
>
> main ()
Sospecho que estás usando un compilador de C++ antiguo y ya obsoleto
como puede ser Turbo C++ o incluso Borland C++. La "preparación"
correcta es la siguiente:
#include <iostream>
using namespace std;
int main()
> {
> int size;
> cout <<"Cuantos valores quieres?"
Te hace falta un punto y coma al final.
> cin >> size;
> int a [size];
> int b [size];
> int c [size];
Esto no es correcto. No puedes crear un array de esta manera. Algunos
compiladores aceptarán esta forma, pero realmente establece 0 (cero) de
tamaño. Por otro lado, hay algunos compiladores que sí realizarán lo que
quieres hacer. El comportamiento estándar es no aceptar esta forma y
simplemente marcar un error.
El array es una entidad estática. Esto significa que el compilador debe
conocer su tamaño, obviamente en la fase de compilación. Por esta razón,
sólo podemos usar expresiones constantes para indicar la cantidad de
elementos para un array. Esto es,
int a[100];
o incluso,
int a[100/2+9];
(Nota: Sí existe una manera de crear "arrays dinámicos", pero necesitas
saber punteros y memoria dinámica como el operador 'new[]').
> generar (a,size);
> generar (b,size);
No existe la función 'generar()'.
> sumaArreglos (a,b,c,size);
> cout << "Arreglo A";
> imprimir (a, size);
> cout <<"Arreglo B";
> imprimir (b, size);
>
>
> }
Hace falta retornar un valor. Por convenio, se retorna 0 (cero) para
indicar que todo ha ido bien. Esto es,
int main()
{
...
return 0;
}
>
> void imprimir(int x[],int n)
> {
> int j;
> for(j=0;j<n;j++)
> cout<<x[j]<<" ";
> cout<<endl;
> }
>
> void sumaArreglos (int a[], inte b[], int c[], int n)
Debería ser: int b[] y no 'inte'.
> {
> int i;
> for (1=0; i<n;i++)
Aquí tienes escrito inicialmente "uno es asignado cero". Esto debería ser:
for( i=0; i<n; i++ )
> c[i]=a[i]
Sospecho que aquí tienes la suma:
c[i] = a[i] + b[i];
El otro problema que tienes es que no has escrito los prototipos de
estas dos funciones antes de que las uses; o sea, antes de definir
'main()'. Debes escribir al menos los prototipos; por ejemplo,
#include <iostream>
using namespace std;
void imprimir( int x[], int n );
void sumaArreglos( int a[], int b[], int c[], int n );
void generar( int a[], int n );
int main()
{
...
}
Espero haber aclarado las dudas.
Steven
Más información sobre la lista de distribución Cconclase