[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