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

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


  Mostrar Mensajes
Páginas: [1]
1  Programación / Programación C/C++ / Ayuda con arreglos y funciones. en: 12 Junio 2017, 19:16 pm
Buenas, soy nueva programando en C. Estoy intentando crear un programa que tenga un array de 100 numeros aleatorios entre 1 y 1000. Una vez creado quiero organizarlo de tal manera que almacene los numeros pares en un array y los impares en otro.
Creo que el problema está en la función aleatoria de la librería time.h que estoy empleando, dado que no genera números diferentes para cada componente del vector. Cada vez que ejecuto el programa crea un número distinto que se copia en todas las componentes. Sin embargo, está dentro de un bucle for, luego no llego a entender cuál es el problema. Adjunto mi código a continuación. Gracias por su tiempo:

Código
  1. #include<stdio.h>
  2. #include<conio.h>
  3. #include<time.h>
  4. #include<stdlib.h>
  5. #define MAX 100
  6. int rellena_vector (int v[] );
  7. void search_even (int v[MAX], int p[MAX], int cont_pares);
  8. void search_odd (int v[MAX], int im[MAX], int cont_imp);
  9.  
  10. int main(){
  11.  
  12. int v[100], p[MAX], im[MAX];
  13. int cont_pares;
  14. int cont_imp;
  15. int i;
  16.  
  17. cont_pares=rellena_vector (v);
  18. search_even (v, p, cont_pares);
  19. cont_imp=MAX-cont_pares;
  20. search_odd (v,im, cont_imp);
  21.  
  22. return 0;
  23. }
  24.  
  25. int rellena_vector (int v[] ){
  26. int r=0, i, cont_pares=0;
  27.  
  28. for (i=0;i<100; i++)
  29. {
  30. srand (time (NULL));
  31. r=1+rand() % ((1000 +1)-1);
  32. v[i]=r;
  33. if (v[i]%2==0)
  34. {cont_pares++;
  35. }
  36. }
  37.  
  38. return cont_pares;
  39. }
  40.  
  41. void search_even (int v[MAX], int p[MAX], int cont_pares)
  42. {
  43. int i, k=0;
  44.  
  45. for (i=0;i<MAX;i++){
  46.  
  47. if (v[i]%2==0)
  48. {
  49. p[k]=v[i];
  50. k++;
  51. }
  52.  
  53. }
  54. printf("\nA continuacion el vector de pares:" );
  55.  
  56. for (k=0;k<cont_pares;k++)
  57. {
  58. printf(" \n %i", p[k]);
  59. }
  60.  
  61. }
  62.  
  63. void search_odd (int v[MAX], int im[MAX], int cont_imp)
  64. {
  65. int i, k=0;
  66.  
  67. for (i=0;i<MAX;i++){
  68.  
  69. if (v[i]%2==1)
  70. {
  71. im[k]=v[i];
  72. k++;
  73. }
  74.  
  75. }
  76. printf("\nA continuacion el vector de impares:" );
  77.  
  78. for (k=0;k<cont_imp;k++)
  79. {
  80. printf(" \n %i", im[k]);
  81. }
  82.  
  83. }
  84.  

Engel Lex: Los códigos deben usar etiquetas GeSHi
2  Programación / Programación C/C++ / Sumatorio de e^x en: 8 Junio 2017, 17:21 pm
Estoy intentando hacer un programa que calcule e^x, partiendo de su polinomio de Taylor:

http://recursostic.educacion.es/descartes/web/materiales_didacticos/Desarrollo_serie_taylor/expo.gif

Este es mi código. El programa compila, y da valores similares cuando elevo a valores menores que dos. Sin embargo, al elevar a valores más grandes, se dispara y se aleja del resultado. ¿Sabéis que error puede tener? Muchas gracias.

Código
  1. #include "stdafx.h"
  2. #define N 30
  3. double pot (float base, int exponente);
  4. long int factorial (int k);
  5.  
  6. int _tmain(int argc, _TCHAR* argv[])
  7. {
  8. float base;
  9.  
  10. printf("Digite un numero para evaluar");
  11. scanf("%f", &base);
  12. double res=0;
  13. double a;
  14. long int b;
  15. double r=0;
  16. int k;
  17.  
  18. for (k=0; k<=N;k++)
  19. {
  20. a=pot(base,k);
  21. b= factorial (k);
  22. res=a/b;
  23. r+=res;
  24. }
  25.  
  26. printf("La evaluacion pedida es %.8lf", r);
  27. return 0;
  28. }
  29.  
  30. double pot (float base, int exponente)
  31. {
  32. int k;
  33. double res=1;
  34.  
  35. for (k=1;k<=exponente;k++)
  36.  
  37. {res*=base;}
  38.  
  39. return res;
  40. }
  41.  
  42. long int factorial (int k)
  43. {
  44. long int res=1;
  45. int j;
  46.  
  47. for(j=k;j>=2;j--)
  48.  
  49. {res*=j;}
  50.  
  51. return res;
  52.  
  53. }
3  Programación / Programación C/C++ / Error Id returned 1 exit status en: 3 Junio 2017, 22:00 pm
¿Hay algún problema con el código o está relacionado con otro asunto este error? El programa no compila. Adjunto mi código:

Código
  1. #include<stdio.h>
  2.  
  3. void menu();
  4. void sumar();
  5. void restar();
  6. void multiplicar();
  7. void dividir();
  8.  
  9.  
  10. int main(){
  11.  
  12. menu();
  13.  
  14. return 0;
  15. }
  16.  
  17. void menu(){
  18.  
  19. int opc;
  20. do {
  21.  
  22. printf("\n1.Sumar");
  23. printf("\n2.Restar");
  24. printf("\n3.Multiplicar");
  25. printf("\n4.Dividir");
  26. printf("\n5.Salir");
  27. printf("\nOpcion:");
  28. scanf("%i", &opc);
  29.  
  30. switch(opc){
  31.  
  32. case 1: sumar();break;
  33. case 2:restar();break;
  34. case 3:multiplicar();break;
  35. case 4: dividir(); break;
  36.  
  37. }
  38.  
  39. } while(opc!=5);
  40. }
  41.  
  42. void sumar(){
  43. int n1, n2, suma=0;
  44.  
  45. printf("Digite 2 numeros:");
  46. scanf("%i %i", &n1, &n2);
  47. suma=n1+n2;
  48. printf("\n La suma es %i", suma);
  49.  
  50. }
  51.  
  52. void restar(){
  53. int n1, n2, resta=0;
  54.  
  55. printf("Digite 2 numeros:");
  56. scanf("%i %i", &n1, &n2);
  57. resta=n1-n2;
  58. printf("\n La resta es %i", resta);
  59.  
  60. }
  61.  
  62. void multiplicar(){
  63. int n1, n2, mult=0;
  64.  
  65. printf("Digite 2 numeros:");
  66. scanf("%i %i", &n1, &n2);
  67. mult=n1*n2;
  68. printf("\n La multiplicacion es %i", mult);
  69.  
  70. }
  71. void dividir(){
  72. int n1, n2, div=0;
  73.  
  74. printf("Digite 2 numeros:");
  75. scanf("%i %i", &n1, &n2);
  76. div=n1/n2;
  77. printf("\n La division es %i", div);
  78.  
  79. }
  80.  
  81.  

Engel Lex: Los códigos deben ir en etiquetas GeSHi


Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines