Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: nilcosta en 27 Noviembre 2016, 20:43 pm



Título: intercambio componentes vector
Publicado por: nilcosta en 27 Noviembre 2016, 20:43 pm
buenas, estoy haciendo un ejercicio y no me sale del todo bien

creo que el error esta cuando hago el intercambio de las componentes del vector, parece que esta bien, pero al imprimir el vector, la primera componente no se cambia:
 
como hago el intercambio:

Código
  1. if(sumX>sumY){/*quan el sumatori del segon vecotr es menor que el del primer, fem un intercanvi*/
  2.        for(i=0; i<n; i++){
  3.            aux[i]=x[i];
  4.            x[i]=y[i];
  5.            y[i]=aux[i];
  6.        }
  7.    }

prograama completo

Código
  1. /*demana les components de dos vectors, comprova si son diferents, si son diferents els ordena segons la definició*/
  2. #include <stdio.h>
  3. #define DIM 10
  4. int main (void){
  5.    int n, x[DIM], y[DIM], aux[DIM], sumX=0, sumY=0, i, iguals=0;
  6.  
  7.    printf("n?\n");
  8.    scanf("%d", &n);
  9.    while(n>10){
  10.        printf("n ha de ser menor o igual que 10\n");
  11.        scanf("%d", &n);
  12.    }
  13.    printf("doneu les componens del vector X\n");
  14.    for(i=0; i<n; i++){
  15.        scanf("%d", &x[i]);
  16.    }
  17.    printf("doneu les componens del vector Y\n");
  18.    for(i=0; i<n; i++){
  19.        scanf("%d", &y[i]);
  20.    }
  21.  
  22.    for(i=0; i<n; i++){/*mirem si els vecotors son iguals*/
  23.        if(x[i]!=y[i]){
  24.            iguals++;
  25.        }
  26.    }
  27.    if(iguals==0){
  28.        printf("els vecotrs son iguals\n");
  29.        return 1;
  30.    }
  31.  
  32.    for(i=0; i<n; i++){
  33.        sumX+=x[i]*x[i];
  34.        sumY+=y[i]*y[i];
  35.    }
  36.  
  37.    if(sumX>sumY){/*quan el sumatori del segon vecotr es menor que el del primer, fem un intercanvi*/
  38.        for(i=0; i<n; i++){
  39.            aux[i]=x[i];
  40.            x[i]=y[i];
  41.            y[i]=aux[i];
  42.        }
  43.    }
  44.  
  45.    if(sumX<sumY){
  46.        printf("Son dos vectors diferents i (");
  47.        for(i=0; i<n-1; i++){
  48.            printf("%d, ", x[i]);
  49.        }
  50.        printf("%d) << (", x[i]);
  51.        for(i=0; i<n-1; i++){
  52.            printf("%d, ", y[i]);
  53.        }
  54.        printf("%d)", y[i]);
  55.    }
  56.  
  57.    if(sumX==sumY){/*en aquest cas el sumatori es igual*/
  58.        for(i=0; i<n; i++){
  59.            if(x[i]<y[i]){
  60.                printf("Son dos vectors diferents i ");
  61.                printf("(");
  62.                for(i=0; i<n-1; i++){
  63.                    printf("%d, ", x[i]);
  64.                }
  65.                printf("%d) << (", x[i]);
  66.                for(i=0; i<n-1; i++){
  67.                    printf("%d, ", y[i]);
  68.                }
  69.                printf("%d)", y[i]);
  70.                return 1;
  71.            }
  72.  
  73.            if(x[i]>y[i]){
  74.                for(i=0; i<n; i++){
  75.                aux[i]=x[i];
  76.                x[i]=y[i];
  77.                y[i]=aux[i];
  78.                printf("Son dos vectors diferents i ");
  79.                printf("(");
  80.                for(i=0; i<n-1; i++){
  81.                    printf("%d, ", x[i]);
  82.                }
  83.                printf("%d) << (", x[i]);
  84.                for(i=0; i<n-1; i++){
  85.                    printf("%d, ", y[i]);
  86.                }
  87.                printf("%d)", y[i]);
  88.                return 1;
  89.                }
  90.            }
  91.        }
  92.    }
  93.        return 0;
  94. }


Título: Re: intercambio componentes vector
Publicado por: engel lex en 27 Noviembre 2016, 21:19 pm
intentaste seguir el intercambio con el dubbuger y colocando breakpoints?


Título: Re: intercambio componentes vector
Publicado por: nilcosta en 27 Noviembre 2016, 22:25 pm
si, lo he intentado y sigue sin hacerlo correctamente :(


Título: Re: intercambio componentes vector
Publicado por: engel lex en 27 Noviembre 2016, 22:33 pm
si, lo he intentado y sigue sin hacerlo correctamente :(

XD eso es un "no, no lo he intentado" el debugger no arregla los errores solo... el hecho no arregla errores, quien los arregla eres tu, el debugger es simplemente un visualizador del programa XD y si lo usas, podrías ver el porqué falla

que ide usas y que haces al activar el debugger?


Título: Re: intercambio componentes vector
Publicado por: nilcosta en 27 Noviembre 2016, 22:40 pm
XD esque no me ubico muy bien en esto de la programacion, en el codeblocks he usado la opción debugger pero no lo entiendo mucho
ya lo he solucionado, el error es un tema de el for y de if, gracias, y gracias por haber dicho lo de el debugger, ahora ya conozco una nueva herramienta.



Título: Re: intercambio componentes vector
Publicado por: engel lex en 27 Noviembre 2016, 22:52 pm
aprende a usarlo bien, ya que es una de las herramientas más potentes de programación... ver que hace tu programa por dentro