Autor
|
Tema: problema vectores en c (Leído 3,138 veces)
|
howaboutno
Desconectado
Mensajes: 38
|
el enunciado es el siguiente: 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 =) #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
Mensajes: 114
|
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: #include <stdio.h> #include <stdlib.h> #include <time.h> #define NUM 10 void generar_vector(int *); void sumar_vectores(int *, int *, int *); void imprimir_vectores(int *, int *, int *); int main(void) { int v1[NUM], v2[NUM], v3[NUM]; generar_vector(v1); generar_vector(v2); sumar_vectores(v1,v2,v3); imprimir_vectores(v1,v2,v3); return EXIT_SUCCESS; } void generar_vector(int *v) { int i; for(i=0;i<NUM;i++) } void sumar_vectores(int *v1, int *v2, int *v3) { int i; for(i=0;i<NUM;i++) v3[i] = v1[i]+v2[i]; } void imprimir_vectores(int *v1, int *v2, int *v3) { int i; for(i=0;i<NUM;i++) printf("%d %d %d\n",v1 [i ],v2 [i ],v3 [i ]); }
La declaración de los parámetros como punteros es equivalente a la tuya podes usar la que prefieras, es decir: void sumar_vectores(int *, int *, int *); ... void sumar_vectores(int *v1, int *v2, int *v3) { // Es equivalente a hacer: void sumar_vectores(int [], int [], int []); ... void sumar_vectores(int v1[], int v2[], int v2[]) { ...
Saludos.
|
|
|
En línea
|
|
|
|
howaboutno
Desconectado
Mensajes: 38
|
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: #include <stdio.h> #include <stdlib.h> #include <time.h> #define NUM 10 void generar_vector(int *); void sumar_vectores(int *, int *, int *); void imprimir_vectores(int *, int *, int *); int main(void) { int v1[NUM], v2[NUM], v3[NUM]; generar_vector(v1); generar_vector(v2); sumar_vectores(v1,v2,v3); imprimir_vectores(v1,v2,v3); return EXIT_SUCCESS; } void generar_vector(int *v) { int i; for(i=0;i<NUM;i++) } void sumar_vectores(int *v1, int *v2, int *v3) { int i; for(i=0;i<NUM;i++) v3[i] = v1[i]+v2[i]; } void imprimir_vectores(int *v1, int *v2, int *v3) { int i; for(i=0;i<NUM;i++) printf("%d %d %d\n",v1 [i ],v2 [i ],v3 [i ]); }
La declaración de los parámetros como punteros es equivalente a la tuya podes usar la que prefieras, es decir: void sumar_vectores(int *, int *, int *); ... void sumar_vectores(int *v1, int *v2, int *v3) { // Es equivalente a hacer: void sumar_vectores(int [], int [], int []); ... void sumar_vectores(int v1[], int v2[], int v2[]) { ...
Saludos. AAAh, vaale, ya lo he captado  parecia mas complicado pero esto está tirado  graciaaaas
|
|
|
En línea
|
|
|
|
do-while
Desconectado
Mensajes: 1.276
¿Habra que sacarla de paseo?
|
¡Buenas! ??????????????????????????????????????????? v [t ]=(rand()%100+1)/10;//para generar datos float (con decimales)
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
Mensajes: 166
|
@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
|
|
|
|
do-while
Desconectado
Mensajes: 1.276
¿Habra que sacarla de paseo?
|
@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#include <stdio.h> int main(int argc, char *argv[]) { int x = 32; printf("%f\n",(float)( x / 10)); return 0; }
Que no es lo mismo que: #include <stdio.h> int main(int argc, char *argv[]) { int x = 32; printf("%f\n",(float)(x ) / 10); return 0; }
¡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!
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Problema con vectores en una función
Programación C/C++
|
Orubatosu
|
2
|
2,098
|
24 Noviembre 2014, 19:34 pm
por Orubatosu
|
|
|
problema vectores c
Programación C/C++
|
nilcosta
|
3
|
2,406
|
27 Noviembre 2016, 20:11 pm
por nilcosta
|
|
|
Problema de vectores
Java
|
jabato70
|
1
|
1,554
|
4 Abril 2017, 12:24 pm
por Zedmix
|
|
|
Problema con vectores
Programación C/C++
|
nemesis27
|
2
|
2,239
|
17 Junio 2017, 05:15 am
por nemesis27
|
|
|
Problema con Vectores
Programación C/C++
|
ivanctes
|
0
|
1,756
|
17 Junio 2017, 16:42 pm
por ivanctes
|
|