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:
if(sumX>sumY){/*quan el sumatori del segon vecotr es menor que el del primer, fem un intercanvi*/
for(i=0; i<n; i++){
aux[i]=x[i];
x[i]=y[i];
y[i]=aux[i];
}
}
prograama completo
/*demana les components de dos vectors, comprova si son diferents, si son diferents els ordena segons la definició*/
#include <stdio.h>
#define DIM 10
int main (void){
int n, x[DIM], y[DIM], aux[DIM], sumX=0, sumY=0, i, iguals=0;
printf("n?\n");
scanf("%d", &n);
while(n>10){
printf("n ha de ser menor o igual que 10\n");
scanf("%d", &n);
}
printf("doneu les componens del vector X\n");
for(i=0; i<n; i++){
scanf("%d", &x[i]);
}
printf("doneu les componens del vector Y\n");
for(i=0; i<n; i++){
scanf("%d", &y[i]);
}
for(i=0; i<n; i++){/*mirem si els vecotors son iguals*/
if(x[i]!=y[i]){
iguals++;
}
}
if(iguals==0){
printf("els vecotrs son iguals\n");
return 1;
}
for(i=0; i<n; i++){
sumX+=x[i]*x[i];
sumY+=y[i]*y[i];
}
if(sumX>sumY){/*quan el sumatori del segon vecotr es menor que el del primer, fem un intercanvi*/
for(i=0; i<n; i++){
aux[i]=x[i];
x[i]=y[i];
y[i]=aux[i];
}
}
if(sumX<sumY){
printf("Son dos vectors diferents i (");
for(i=0; i<n-1; i++){
printf("%d, ", x[i]);
}
printf("%d) << (", x[i]);
for(i=0; i<n-1; i++){
printf("%d, ", y[i]);
}
printf("%d)", y[i]);
}
if(sumX==sumY){/*en aquest cas el sumatori es igual*/
for(i=0; i<n; i++){
if(x[i]<y[i]){
printf("Son dos vectors diferents i ");
printf("(");
for(i=0; i<n-1; i++){
printf("%d, ", x[i]);
}
printf("%d) << (", x[i]);
for(i=0; i<n-1; i++){
printf("%d, ", y[i]);
}
printf("%d)", y[i]);
return 1;
}
if(x[i]>y[i]){
for(i=0; i<n; i++){
aux[i]=x[i];
x[i]=y[i];
y[i]=aux[i];
printf("Son dos vectors diferents i ");
printf("(");
for(i=0; i<n-1; i++){
printf("%d, ", x[i]);
}
printf("%d) << (", x[i]);
for(i=0; i<n-1; i++){
printf("%d, ", y[i]);
}
printf("%d)", y[i]);
return 1;
}
}
}
}
return 0;
}
intentaste seguir el intercambio con el dubbuger y colocando breakpoints?
si, lo he intentado y sigue sin hacerlo correctamente :(
Cita de: nilcosta en 27 Noviembre 2016, 22:25 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?
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.
aprende a usarlo bien, ya que es una de las herramientas más potentes de programación... ver que hace tu programa por dentro