[C con Clase] ayuda VECTOR EN C
Programante
programante en gmail.com
Dom Jun 28 23:14:21 CEST 2009
arturo escribió:
> PROGRAMA KE UNA DOS VECTORES "A" Y "B" EN OTRO VECTOR C.....ESTE CODIGO LO ICE YO PERO LO PROBE EN EL TURBO Y ME SALE ERROR..NOSE KUALES SEAN LOS ERRORES PORKE ASTA AHORA NO DOY KON ELLOS....
>
>
Te comento fallos la primera vez que los cometes.
Los cometes repetidas veces en el código.
> #include <stdio.h>
> #include <conio.h>
> #define MAX A 10
> #define MAX B 12
> #define MAX C 22
>
Esto es incorrecto.
Los nombres de macros no pueden tener espacios.
Al sustituirse te darán código incorrecto. Te sugiero que las renombres
a MAX_A, MAX_B, MAX_C y cambies todos los usos en el programa.
> void main();
> {
>
Si comienzas una función, no pongas ; sólo va el {
> int A[MAX A], B[MAX B], C[MAX C], na, nb, nc;
>
> clrscr();
> void INICIA(A, B, C, na, nb);
> void PROCESO(A, B, C, na, nb ,nb);
> void SALIDA(C, nc);
> getch();
> }
>
> void INICIA(& int A[MAX A], & int B[MAX B], & int C[MAX C], & int na, & int nb);
>
los & van después del tipo. Esto es:
void INICIA( int& A[MAX_A], int& B[MAX_B], int C[MAX_C], int& na, int& nb) {
Aunque no hay motivo para pasar na y nb por referencia, ya que no los modificas.
> {
> void Inicializa(A, B, C);
>
La llamada sería Inicializa(A, B, C);
El tipo de retorno sólo se incluye en las declaraciones.
Antes de INICIA tendrías que incluir el prototipo.
> na = lee_entero("Ingrese numero de elementos", 0, MAX A);
> nb = lee_entero("Ingrese nummero de elementos", 0, MAX B);
> void Lectura(A, B);
> }
>
> void Inicializa(& int A[MAX A], & int B[MAX B], & int C[MAX C]);
> {
> void Ini_vec(A) ;
> void Ini_vec(B);
> void Ini_vec(C);
> }
>
> void Ini_vec(& int V[MAX]);
> {
> int i;
>
> for(i == 1; i < MAX A; i++){
>
Estás haciendo una comparación en lugar de una asignación.
Debería ser i = 1; (aunque seguramente deberías empezar en 0 y no en 1).
> V[i] == 0;
>
> }
>
>
> int lee_entero(& char msje[MAX], int linf, int lsup);
> {
>
No utilizas msje para nada. Por cómo usas la función el primer parámetro
sería mejor un const char* msje.
> int ne;
>
> do
> {
> printf ("Ingrese numero de elementos\n");
> scanf ("%d", &ne);
> }while(ne < linf && ne >= lsup)
>
> return ne;
> }
>
> void Lectura(& int A[MAX A], & int B[MAX B], int na, int nb);
> {
> void Lee_vec(A, na);
> void Lee_vec(B, nb);
> }
>
> void Lee_vec(& int V[MAX], int n);
> {
> int i;
>
> for(i == 1; i < n; i++);
> V[i] = Lee_entero("Ingrese elemento del vector", 0);
> }
>
> int Lee_entero(& char msje[MAX], int linf);
> {
>
No dupliques funciones quitando un argumento y con mayúsculas diferente.
Usa parámetros por defecto.
El código es válido, pero no deberías hacerlo.
> int i,x;
>
> for(i == 1; i < n; i++)
>
> do
> {
> printf("Ingrese elemento del vector\n");
> scanf("%d", &x);
> }while(x < linf)
>
> return x;
> }
>
> void PROCESO(& int A[MAX A], & int B[MAX B], & int C[MAX C], int na, int nb, & int nc);
> {
> if(na + nb <= MAX C)
> void Union(A, B, C);
>
> else
> printf("No hay espacio en el vector\n");
> }
>
> void Union(& int A[MAX A], & int B[MAX B], int na, int nb, & int nc);
> {
> int i,j;
>
> for(i == 0; i < na; i++)
> C[i] = A[i];
>
> for(j == 0; j < nb; j++)
> C[na] = B[j];
> na +=1;
> }
>
> void SALIDA(& int C[MAX C], int nc)
> {
> int i;
>
>
> for(i=0; i < nc; i++)
> printf("Los elementos del vector C son %d\n", C[i]);
> }
Más información sobre la lista de distribución Cconclase