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

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


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

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Problema con ejercicio de vectores
« en: 15 Diciembre 2013, 18:42 pm »

Buenas, llevo 4 horas con este ejercicio de vectores y no soy capaz de sacarlo...

"31. La suma.Para operar con números naturales muy grandes se pueden utilizar vectores qeu tengan como componentes los dígitos decimales entre 0 y 9, que serán los dígitos del numero. Escribe un programa que sume dos números natura de hasta X cifras. Para cada número se preguntara la cantidad de cifras que tiene. "

Esto es lo que tengo:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main()
  5. {
  6. int *v1=0, i,*v2=0,j, *Vt, k ;
  7. size_t espai1=0;
  8. size_t espai2=0;
  9. size_t espai3=0;
  10.  
  11. printf("Digues quantes xifres té el primer numero: ");
  12. scanf("%d", &espai1);
  13. printf("Digues quantes xifres té el segon numero: ");
  14. scanf("%d", &espai2);
  15.  
  16. //Per a adjudicar el tamany dels vectors
  17. v1 = (int *)malloc( espai1*sizeof(int) );
  18. v2 = (int *)malloc( espai2*sizeof(int) );
  19. Vt = (int *)malloc( espai3*sizeof(int) );
  20. // Dar la cantidad de numeros
  21.  
  22. printf("Digues els numeros de la suma (separa cada numero amb un espai): ");
  23. for( i=0; i<espai1;i++)
  24. {
  25. scanf("%d", &v1[i]);
  26. }
  27.  
  28. printf("Digues els numeros de la suma (separa cada numero amb un espai): ");
  29. for(j=0; j<espai2; j++)
  30. {
  31. scanf("%d", &v2[j]);
  32. }
  33.  
  34. //Poner los numeros en un orden inverso
  35.  
  36. for(i=espai1-1; i>=0; i--)
  37. {
  38. printf("%d\t", v1[i]);
  39. }
  40. for(j=espai2-1; j>=0;j--)
  41. {
  42. printf("%d\t", v2[j]);
  43. }
  44.  
  45. //Suma
  46. for (i=0; i< espai1; i++)
  47. {
  48. for(j=0; j<espai2; j++)
  49. {
  50. for(k=0; k<espai3+1; k ++)
  51. {
  52. Vt[k] = v1[i] + v2[j];
  53. if(Vt[k]>9)
  54. {
  55. k++;
  56. Vt[k]= Vt[k] + 1;
  57. }
  58. printf("El resultat de la suma es : %d\n", Vt[k]);
  59. }
  60. }
  61. }
  62. // Ordenar el resultado
  63. for (k=espai3-1; k>=0; k--)
  64. {
  65. printf("%d\t", Vt[k]);
  66. }
  67.  
  68. return 0;
  69. }

Lo que he hecho a sido primero como se puede ver, crear los vectores sin un tamaño, despues pedir el tamaño de dichos vectores.
Para poder hacer la suma sin complicarme demasiado, se me ha ocurrido la idea de pasar los números al orden inverso y luego volver a pasar el resultado.

Si alguien me puede ayudar se lo agradecería.


En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Problema con ejercicio de vectores
« Respuesta #1 en: 15 Diciembre 2013, 18:45 pm »

¿Y cual es el error exactamente? Para ir al grano ;)


En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
Draked393

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Re: Problema con ejercicio de vectores
« Respuesta #2 en: 15 Diciembre 2013, 18:48 pm »

no me realiza la operación bien. Supongo que no esta bien hecha..
En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Problema con ejercicio de vectores
« Respuesta #3 en: 15 Diciembre 2013, 18:49 pm »

no me realiza la operación bien. Supongo que no esta bien hecha..
Supongo. ¿Pero que datos le has metido y que valor te sale?
En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Problema con ejercicio de vectores
« Respuesta #4 en: 15 Diciembre 2013, 20:17 pm »



Una muestra de que el código si puede funcionar:


Citar
Digues quantes xifres tÚ el primer numero: 2
Digues quantes xifres tÚ el segon numero: 2
Digues els numeros de la suma (separa cada numero amb un espai): 1
3
Digues els numeros de la suma (separa cada numero amb un espai): 4
5
v1[1]=3 v1[0]=1

v2[1]=5 v2[0]=4
El resultat de la suma es Vt[0]= 5

El resultat de la suma es Vt[1]= 8

La suma es:
5 8

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main()
  5. {
  6. int *v1=0, i,*v2=0,j, *Vt, k ,ch;
  7. int espai1=0, espai2=0, espai3=0;
  8.  
  9. printf("Digues quantes xifres té el primer numero: ");
  10. scanf("%d", &espai1);
  11. printf("Digues quantes xifres té el segon numero: ");
  12. scanf("%d", &espai2);
  13.    if (espai1 >= espai2)
  14.        espai3=espai1;
  15.    else
  16.        espai3=espai2;
  17. //Per a adjudicar el tamany dels vectors
  18. v1 = (int *)malloc( espai3*sizeof(int) );
  19. v2 = (int *)malloc( espai3*sizeof(int) );
  20. Vt = (int *)malloc( espai3*sizeof(int) );
  21. for (i=0;i<espai2;i++)
  22.            v1[i]=v2[i]=0;
  23.        // Dar la cantidad de numeros
  24.  
  25. printf("Digues els numeros de la suma (separa cada numero amb un espai): ");
  26. for( i=0; i<espai1;i++)
  27. {
  28. scanf("%d", &v1[i]);
  29. }
  30.  
  31. printf("Digues els numeros de la suma (separa cada numero amb un espai): ");
  32. for(j=0; j<espai2; j++)
  33. {
  34. scanf("%d", &v2[j]);
  35. }
  36.  
  37. //Poner los numeros en un orden inverso
  38.  
  39. for(i=espai1-1; i>=0; i--)
  40. {
  41. printf("v1[%d]=%d\t", i,v1[i]);
  42. }
  43. puts("\n");
  44. for(j=espai2-1; j>=0;j--)
  45. {
  46. printf("v2[%d]=%d\t", j,v2[j]);
  47. }
  48.  
  49. //Suma
  50. for(k=0; k<espai3; k ++)
  51. {
  52. Vt[k] =0;
  53. Vt[k] = v1[k] + v2[k];
  54. if(Vt[k]>9)
  55. {
  56. k++;
  57. Vt[k]= Vt[k] + 1;
  58. }
  59. printf("\nEl resultat de la suma es Vt[%d]= %d\n",k, Vt[k]);
  60. }
  61.  
  62. // Ordenar el resultado
  63. puts("\nLa suma es:");
  64. for (k=0; k<espai3; k++)
  65. {
  66. printf("%d ", Vt[k]);//system("pause");
  67. }
  68.  
  69. return 0;
  70. }
  71.  

Pero tal como está suma números de iguales cifras -puedes solventar el problema introduciendo ceros al de menos cifras o mejor modificando el código pata tener en cuenta esta opción- ,. Tienes que arreglar lo anterior y también tienes que arreglar cuando sumen dos dígitos más de nueve. Como está no furula.  :rolleyes:

Pero ese no es el único de tus problemas ya que la dimensión de la suma debería ser "espai3+1", en previsión de lo que te comenté de que la suma de las cifras más significativas sea superior a 9.  :silbar:


Saluditos! ..... !!!!        
« Última modificación: 17 Diciembre 2013, 17:13 pm por leosansan » En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Problema con ejercicio de vectores
« Respuesta #5 en: 17 Diciembre 2013, 16:13 pm »

Posteo como nuevo porque he introducido las mejoras que indiqué en el post anterior.

Ya se pueden introducir números con distinto número de cifras, queda solventado el problema del número total de cifras y el echo de que sumen dos dígitos más de nueve.

No es exactamente como yo resolvería este problema de la suma de dos enteros con un número cualquiera de cifras pero tampoco quería modificar drástica mente el código original. Bueno un poquito sí, como el idioma para enterarme mejor de lo que hacia  :silbar:

La "potencia" del código está en que puede sumar enteros de 30, 100 o más dígitos, cosa que como "int" en C no se puede hacer.

Y para muestra un botón:


Citar
Diga cuantas cifras tiene el primer numero: 3
Diga cuantas cifras tiene el segundo numero: 4
Indique los digitos del primer numero:
6
3
9
Indique los digitos del segundo numero:
9
8
7
5
v1[0]=0 v1[1]=0 v1[2]=6 v1[3]=3 v1[4]=9

v2[0]=0 v2[1]=9 v2[2]=8 v2[3]=7 v2[4]=5


El resultado de la suma es Vt[4]= 4

El resultado de la suma es Vt[3]= 1

El resultado de la suma es Vt[2]= 5

El resultado de la suma es Vt[1]= 0

El resultado de la suma es Vt[0]= 1

La suma es:
1 0 5 1 4
*/

Código
  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5. int i,j, k ,ch;
  6. int digito1=0, digito2=0, digito_suma=0;
  7. printf("Diga cuantas cifras tiene el primer numero: ");
  8. scanf("%d", &digito1);
  9. printf("Diga cuantas cifras tiene el segundo numero: ");
  10. scanf("%d", &digito2);
  11.    if (digito1 >= digito2)
  12.        digito_suma=digito1;
  13.    else
  14.        digito_suma=digito2;
  15. int v1[digito_suma+1],v2[digito_suma+1],Vt[digito_suma+1];
  16.    for (i=0;i<digito_suma;i++)
  17.        v1[i]=v2[i]=0;
  18.    for (i=0;i<=digito_suma+1;i++)
  19.        Vt[i]=0;
  20.  
  21. printf("Indique los digitos del primer numero: \n");
  22. for( i=0; i<digito1;i++){
  23. if (digito1<digito2)
  24.            scanf("%d", &v1[i+digito2-digito1+1]);
  25.        else
  26.            scanf("%d", &v1[i+1]);
  27. }
  28. printf("Indique los digitos del segundo numero: \n");
  29. for(i=0; i<digito2; i++){
  30. if (digito2<digito1)
  31.            scanf("%d", &v2[i+digito1-digito2+1]);
  32.        else
  33.            scanf("%d", &v2[i+1]);
  34. }
  35. for(i=0; i<=digito_suma; i++)
  36. printf("v1[%d]=%d\t", i,v1[i]);
  37. puts("\n");
  38. for(i=0; i<=digito_suma;i++)
  39. printf("v2[%d]=%d\t", i,v2[i]);
  40. //Suma
  41. puts("\n");
  42. for(k=digito_suma; k>=0; k--){
  43.        Vt[k] = Vt[k]+ v1[k] + v2[k];
  44.        if(Vt[k]>9){
  45.            Vt[k]-= 10;
  46.            Vt[k-1]+= 1;
  47.        }
  48.        printf("\nEl resultado de la suma es Vt[%d]= %d\n",k, Vt[k]);
  49.    }
  50. puts("\nLa suma es:");
  51. for (k=0; k<=digito_suma; k++)
  52. printf("%d ", Vt[k]);
  53. return 0;
  54. }
  55.  

Saluditos! ..... !!!!        
« Última modificación: 18 Diciembre 2013, 12:28 pm por leosansan » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ejercicio en C de Vectores 1[Borland 5.02]
Programación C/C++
SonaArtica 7 2,976 Último mensaje 6 Noviembre 2012, 06:20 am
por SonaArtica
Ejercicio en C de Vectores 1.0[Borland 5.02]
Programación C/C++
SonaArtica 0 3,068 Último mensaje 6 Noviembre 2012, 02:14 am
por SonaArtica
[PROBLEMA]Ejercicio en C de Vectores 1.3[Borland 5.02]
Programación C/C++
SonaArtica 1 2,097 Último mensaje 6 Noviembre 2012, 17:04 pm
por HRSLASH
ejercicio de vectores
Programación C/C++
indict 2 1,725 Último mensaje 6 Diciembre 2012, 18:50 pm
por indict
Problema con ejercicio de Vectores.
Programación C/C++
Starscream-94 2 1,771 Último mensaje 17 Marzo 2013, 11:36 am
por pacoperico
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines