elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  problema vectores en c
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: problema vectores en c  (Leído 2,592 veces)
howaboutno

Desconectado Desconectado

Mensajes: 38


Ver Perfil
problema vectores en c
« en: 7 Noviembre 2012, 19:05 pm »

el enunciado es el siguiente:
Citar
leer dos vectores de dimensión 10 y construir un tercer vector, e imprimirlo cuyos componentes sean la suma de los dos anteriores

yo lo que tengo hecho es esto: seguramente sea una chapuza y he de decir que no funciona pero ya no entiendo nada ni avanzo. tambien he de decir que es el primer ejercicio que hago de vectores...
gracias por la ayuda =)
Código:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define  num 10
void generar_vector(int v[]);
void imprimir_vector(int v[]);
void generar_vector2 (int v2[]);
void imprimir_vector2 (int v2[]);
int main(void)
{ srand(time(NULL));
int v[num];
int v2[num];
generar_vector(v);
imprimir_vector(v);
return EXIT_SUCCESS;
}
void generar_vector(int v[])
{

int t;
for(t=0;t<num;t++)
{
v[t]=(rand()%100+1)/10;//para generar datos float (con decimales)
}

}//fin del generar vector

void imprimir_vector(int v[])
{
int t,i;

for(t=0;t<num;t++)
{

printf("%d\n",v[t]);
fflush(stdout);
}

for(i=0;i<num;i++)
{

printf(" \n%d",v[i]);
fflush(stdout);
}
}//fin de imprimir vector

void generar_vector2 (int v2[])
{
int t,suma=0;
int v[num];
for(t=0;t<num;t++)
{
suma=suma+generar_vector(v);
}
}
void imprimir_vector2 (int v2[])
{ int i;
for(i=0;i<num;i++)
{

printf(" \n%d",v2[i]);
fflush(stdout);
}
}



En línea

ecfisa

Desconectado Desconectado

Mensajes: 114


Ver Perfil
Re: problema vectores en c
« Respuesta #1 en: 7 Noviembre 2012, 19:38 pm »

Hola.

No vas nada mal encaminado... lo que si, se puede usar una sola funcion para generar ambos arreglos, así como también otra para que realize la suma.

Por ejemplo y mayormente basado en tu codigo:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #define  NUM 10
  5.  
  6. void generar_vector(int *);  
  7. void sumar_vectores(int *, int *, int *);
  8. void imprimir_vectores(int *, int *, int *);
  9.  
  10. int main(void) {
  11.  int v1[NUM], v2[NUM], v3[NUM];
  12.  
  13.  srand(time(NULL));
  14.  generar_vector(v1);
  15.  generar_vector(v2);
  16.  sumar_vectores(v1,v2,v3);
  17.  imprimir_vectores(v1,v2,v3);
  18.  getchar();
  19. return EXIT_SUCCESS;
  20. }
  21. void generar_vector(int *v) {
  22. int i;
  23. for(i=0;i<NUM;i++)
  24. v[i]=(rand()%100+1)/10;
  25. }
  26.  
  27. void sumar_vectores(int *v1, int *v2, int *v3) {
  28.  int i;
  29.  for(i=0;i<NUM;i++)
  30.    v3[i] = v1[i]+v2[i];
  31. }
  32.  
  33. void imprimir_vectores(int *v1, int *v2, int *v3)
  34. {
  35. int i;
  36. for(i=0;i<NUM;i++)
  37.  printf("%d %d %d\n",v1[i],v2[i],v3[i]);
  38. }
  39.  

La declaración de los parámetros como punteros es equivalente a la tuya podes usar la que prefieras, es decir:
Código
  1. void sumar_vectores(int *, int *, int *);
  2. ...
  3. void sumar_vectores(int *v1, int *v2, int *v3) {
  4.  
  5. // Es equivalente a hacer:
  6. void sumar_vectores(int [], int [], int []);
  7. ...
  8. void sumar_vectores(int v1[], int v2[], int v2[]) {
  9. ...
  10.  

Saludos.


En línea

howaboutno

Desconectado Desconectado

Mensajes: 38


Ver Perfil
Re: problema vectores en c
« Respuesta #2 en: 7 Noviembre 2012, 20:05 pm »

Hola.

No vas nada mal encaminado... lo que si, se puede usar una sola funcion para generar ambos arreglos, así como también otra para que realize la suma.

Por ejemplo y mayormente basado en tu codigo:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #define  NUM 10
  5.  
  6. void generar_vector(int *);  
  7. void sumar_vectores(int *, int *, int *);
  8. void imprimir_vectores(int *, int *, int *);
  9.  
  10. int main(void) {
  11.  int v1[NUM], v2[NUM], v3[NUM];
  12.  
  13.  srand(time(NULL));
  14.  generar_vector(v1);
  15.  generar_vector(v2);
  16.  sumar_vectores(v1,v2,v3);
  17.  imprimir_vectores(v1,v2,v3);
  18.  getchar();
  19. return EXIT_SUCCESS;
  20. }
  21. void generar_vector(int *v) {
  22. int i;
  23. for(i=0;i<NUM;i++)
  24. v[i]=(rand()%100+1)/10;
  25. }
  26.  
  27. void sumar_vectores(int *v1, int *v2, int *v3) {
  28.  int i;
  29.  for(i=0;i<NUM;i++)
  30.    v3[i] = v1[i]+v2[i];
  31. }
  32.  
  33. void imprimir_vectores(int *v1, int *v2, int *v3)
  34. {
  35. int i;
  36. for(i=0;i<NUM;i++)
  37.  printf("%d %d %d\n",v1[i],v2[i],v3[i]);
  38. }
  39.  

La declaración de los parámetros como punteros es equivalente a la tuya podes usar la que prefieras, es decir:
Código
  1. void sumar_vectores(int *, int *, int *);
  2. ...
  3. void sumar_vectores(int *v1, int *v2, int *v3) {
  4.  
  5. // Es equivalente a hacer:
  6. void sumar_vectores(int [], int [], int []);
  7. ...
  8. void sumar_vectores(int v1[], int v2[], int v2[]) {
  9. ...
  10.  

Saludos.



AAAh, vaale, ya lo he captado :D parecia mas complicado pero esto está tirado ;)
graciaaaas
En línea

do-while


Desconectado Desconectado

Mensajes: 1.276


¿Habra que sacarla de paseo?


Ver Perfil
Re: problema vectores en c
« Respuesta #3 en: 8 Noviembre 2012, 16:15 pm »

¡Buenas!

???????????????????????????????????????????
Código
  1. v[t]=(rand()%100+1)/10;//para generar datos float (con decimales)
  2.  

Ahi tienes una expresion en la que todos los elementos son enteros, luego nunca obtendras un float a partir de ellos si no casteas alguno de ellos... Pero por mucho que promociones alguno de los valores a float (o double, lo que prefieras), el vector en el que almacenas los datos es de tipo int, por lo que al final terminaras truncando el numero real obternido y siempre guardaras un entero.

Si quieres utilizar valores reales, tendras que promocionar alguno de los valores de la expresion que hay a la derecha de la igualdad y tendras que pasar un vector de float o double.

¡Saludos!
En línea

- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!
BatchianoISpyxolo

Desconectado Desconectado

Mensajes: 166


Ver Perfil
Re: problema vectores en c
« Respuesta #4 en: 8 Noviembre 2012, 16:25 pm »

@do-while el problema está en el tipo del vector. La expresión está bien que se asigna está bien.

(rand()%100+1)/10 = [1..100] / 10

Números enteros entre 1 y 100 divididos entre 10. Evidentemente solo los múltiplos de 10 darán como resultado un entero.

En línea

Puede que desees aprender a programar desde 0: www.espascal.es
do-while


Desconectado Desconectado

Mensajes: 1.276


¿Habra que sacarla de paseo?


Ver Perfil
Re: problema vectores en c
« Respuesta #5 en: 8 Noviembre 2012, 16:37 pm »

@do-while el problema está en el tipo del vector. La expresión está bien que se asigna está bien.

(rand()%100+1)/10 = [1..100] / 10

Números enteros entre 1 y 100 divididos entre 10. Evidentemente solo los múltiplos de 10 darán como resultado un entero.



Es evidente que si trabajas con numeros enteros, el resultado de dividir un entero por un entero te dara un entero: http://c.conclase.net/curso/?cap=009

Código
  1. #include <stdio.h>
  2.  
  3. int main(int argc, char *argv[])
  4. {
  5.    int x = 32;
  6.  
  7.    printf("%f\n",(float)( x / 10));
  8.  
  9.    return 0;
  10. }
  11.  

Que no es lo mismo que:
Código
  1. #include <stdio.h>
  2.  
  3. int main(int argc, char *argv[])
  4. {
  5.    int x = 32;
  6.  
  7.    printf("%f\n",(float)(x) / 10);
  8.  
  9.    return 0;
  10. }
  11.  
¡Saludos!
« Última modificación: 8 Noviembre 2012, 16:38 pm por do-while » En línea

- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema con vectores en una función
Programación C/C++
Orubatosu 2 1,772 Último mensaje 24 Noviembre 2014, 19:34 pm
por Orubatosu
problema vectores c
Programación C/C++
nilcosta 3 2,028 Último mensaje 27 Noviembre 2016, 20:11 pm
por nilcosta
Problema de vectores
Java
jabato70 1 1,376 Último mensaje 4 Abril 2017, 12:24 pm
por Zedmix
Problema con vectores
Programación C/C++
nemesis27 2 1,832 Último mensaje 17 Junio 2017, 05:15 am
por nemesis27
Problema con Vectores
Programación C/C++
ivanctes 0 1,538 Último mensaje 17 Junio 2017, 16:42 pm
por ivanctes
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines