Foros del Web » Programación para mayores de 30 ;) » C/C++ »

compila pero me da solo ceros ... no copia..

Estas en el tema de compila pero me da solo ceros ... no copia.. en el foro de C/C++ en Foros del Web. @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código C: Ver original /*5.    Crear una función que copie el contenido de un primer vector de flotantes en otro segundo con ...
  #1 (permalink)  
Antiguo 04/05/2010, 13:19
 
Fecha de Ingreso: marzo-2010
Mensajes: 127
Antigüedad: 14 años, 8 meses
Puntos: 2
Busqueda compila pero me da solo ceros ... no copia..

Código C:
Ver original
  1. /*5.    Crear una función que copie el contenido de un primer vector de flotantes
  2. en otro segundo con el mismo número de elementos. La función debe ser válida para
  3. cualquier par de vectores con el mismo número de elementos. Genera el
  4. programa principal para poder ejecutar la función creada.*/
  5.  
  6. #include<stdio.h>
  7. #include<string.h>
  8. void copiar_valor(float *,int,float *);
  9. void print_vector(float *,int,float *);
  10. void main(){
  11.  
  12. int l=0,i=0;
  13. do{
  14. printf("Introduce la longitud del primer vector:\n");
  15. scanf("%d",&l);
  16. }while(l<0);
  17. printf("La longitud del segundo vector sera la misma\n");
  18. float *vec=new float[l];
  19. float *vec2=new float[l];
  20.  
  21. for(i=0;i<l;i++){
  22. printf("inserta valores para el primer vector %d:",i);
  23. scanf("%f",vec+i);
  24. }
  25.  
  26.  
  27. copiar_valor(vec,l,vec2);
  28. print_vector(vec,l,vec2);
  29. }
  30. void copiar_valor(float *vector,int size,float *vector2){
  31. int i;
  32. for(i=0;i<size;i++){
  33.  
  34.  *(vector+i)= *(vector2+i);
  35. }
  36. i++;
  37.  
  38. }
  39. void print_vector(float *vector,int size,float *vector2){
  40. int j;
  41. for(j=0;j<size;j++){
  42. printf("%d\n",*(vector2+j));
  43. }
  44.  for(j=0;j<size;j++){
  45. printf("%d\n",*(vector+j));
  46.  
  47.  
  48. }
  49. }

Porcierto muchas gracias de antemano por vuestra ayuda.besos

Última edición por roser24; 04/05/2010 a las 13:24
  #2 (permalink)  
Antiguo 04/05/2010, 16:09
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 7 meses
Puntos: 228
Respuesta: compila pero me da solo ceros ... no copia..

Primero en principal estas imprimiendo Float entonces en printf tiene que ir %f.
  #3 (permalink)  
Antiguo 05/05/2010, 01:24
 
Fecha de Ingreso: marzo-2010
Mensajes: 127
Antigüedad: 14 años, 8 meses
Puntos: 2
Respuesta: compila pero me da solo ceros ... no copia..

Hola,muchisimas gracias Sam,lo corregi y aparentemente me hace lo que pide el enunciado =),
Modifique mi anterior codigo con la correccion y añadiendo Delete's ya que vi en una pagina que ponian que siempre que usaramos new como ahi reservamos memoria al final del ejercicio hay que liberarla con delete :)

Código C:
Ver original
  1. /*5.    Crear una función que copie el contenido de un primer vector de flotantes
  2. en otro segundo con el mismo número de elementos. La función debe ser válida para
  3. cualquier par de vectores con el mismo número de elementos. Genera el
  4. programa principal para poder ejecutar la función creada.*/
  5.  
  6. #include<stdio.h>
  7. #include<string.h>
  8. void copiar_valor(float *,int,float *);
  9. void print_vector(float *,int,float *);
  10. void main(){
  11.  
  12. int l=0,i=0;
  13. do{
  14. printf("Introduce la longitud del primer vector:\n");
  15. scanf("%d",&l);
  16. }while(l<0);
  17. printf("La longitud del segundo vector sera la misma\n");
  18. float *vec=new float[l];
  19. float *vec2=new float[l];
  20.  
  21. for(i=0;i<l;i++){
  22. printf("inserta valores para el primer vector %d:",i);
  23. scanf("%f",vec+i);
  24. }
  25.  
  26.  
  27. copiar_valor(vec,l,vec2);
  28. print_vector(vec,l,vec2);
  29. delete []vec;
  30. delete []vec2;
  31. }
  32. void copiar_valor(float *vector,int size,float *vector2){
  33. int i;
  34. for(i=0;i<size;i++){
  35.  
  36.  *(vector2+i) = *(vector+i);
  37. }
  38.  
  39.  
  40. }
  41. void print_vector(float *vector,int size,float *vector2){
  42. int j;
  43. for(j=0;j<size;j++){
  44. printf("%f\n",*(vector2+j));
  45. }
  46.  for(j=0;j<size;j++){
  47. printf("\n%f",*(vector+j));
  48.  
  49.  
  50. }
  51. }
  #4 (permalink)  
Antiguo 05/05/2010, 04:26
 
Fecha de Ingreso: mayo-2010
Mensajes: 3
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: compila pero me da solo ceros ... no copia..

Creo que para que te haga lo que pide el enunciado has de cambiar esto:

Código C:
Ver original
  1. void copiar_valor(float *vector,int size,float *vector2){
  2. int i;
  3. for(i=0;i<size;i++){
  4.  *(vector2+i) = *(vector+i);
  5. }

Por esto otro:
Código C:
Ver original
  1. void copiar_valor(float *vector,int size,float *vector2){
  2. int i;
  3. for(i=0;i<size;i++){
  4. *(vector+i) = *(vector2+i)  
  5.  
  6. }

Porque sino estabas copiando el contenido del vector 2, que no lo conoces, sobre el vector 1 que si conoces y por eso te da zero. Al menos a mi haciendo este cambio y lo que antes comentó sam ya me funciona bien.

Un saludo.
  #5 (permalink)  
Antiguo 05/05/2010, 04:54
 
Fecha de Ingreso: marzo-2010
Mensajes: 127
Antigüedad: 14 años, 8 meses
Puntos: 2
Respuesta: compila pero me da solo ceros ... no copia..

El programa que puse anteriormente en mi ultimo post se ejecuta bien me copia bien los valores,.. .. yo puse que el vector2=vector en ese orden,pero si lo cambio si me realiza la copia con basura,es decir en el vector2...
yo entendia que al igualar o asignar valores se iba siempre de derecha a izquierda
vacio=bueno..

no? porque si no es asi elguna parte del programa aparete de la funcion copiar he hecho mal..=(
  #6 (permalink)  
Antiguo 05/05/2010, 05:32
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 7 meses
Puntos: 228
Respuesta: compila pero me da solo ceros ... no copia..

El que corresponde es vector2 = vector1
  #7 (permalink)  
Antiguo 05/05/2010, 07:01
 
Fecha de Ingreso: marzo-2010
Mensajes: 127
Antigüedad: 14 años, 8 meses
Puntos: 2
Respuesta: compila pero me da solo ceros ... no copia..

Okis,Sam gracias por la confirmacion =),
  #8 (permalink)  
Antiguo 11/05/2010, 07:01
 
Fecha de Ingreso: mayo-2010
Mensajes: 3
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: compila pero me da solo ceros ... no copia..

Sí tienes razón, creí que querias copiar el vector 2 en el 1.

Etiquetas: copia, cero
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:58.