Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: fercho17 en 21 Mayo 2013, 20:48 pm



Título: No me reconoce Variable! Ayuda
Publicado por: fercho17 en 21 Mayo 2013, 20:48 pm
Hola Amigos!! Tengo el siguiente código y funciona bien, lo que pasa es que las variables pro y pro2 no me las reconoce para hacer la suma que esta en la variable resultadototal; le agradeceria el que pueda ayudarme!! Desde ya Gracias.

Aqui el codigo:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #include <string.h>
  5. #include <pthread.h>
  6.  
  7.  
  8. int P[100];
  9. int H[25],A[25], F[25], G[25];
  10. int i,sum = 0,sum2 = 0,sum3 = 0,sum4 = 0;
  11. float pro,pro1,pro2,pro3,pro4, resultadofinal ;
  12.  
  13.  
  14. void sacaraleatorios(){
  15.  
  16. for(i=0;i<100;i++)
  17.        P[i]=rand()%1000;
  18.        printf("Numeros Aleatorios \n" );
  19.    for(i=0;i<100;i++){
  20.        printf("%d",P[i]);
  21.        printf(",");
  22.  
  23.        }
  24.       printf("\n");
  25. }
  26.  
  27. void *usaSacaraleatorios(void *arg){
  28.    sacaraleatorios();
  29.    return NULL;
  30. }
  31.  
  32. void imprimealeatoriosparte1(){
  33.  
  34. memcpy (H,P,100*sizeof(int));
  35. printf("\n");
  36. //printf("Numeros Aleatorios 25  de H \n" );
  37.    for(i=0;i<25;i++){
  38.        //printf("%d ",H[i]);
  39.        //printf("\n");
  40.        sum=sum+H[i];
  41.        }
  42.        pro=sum/25;
  43.        printf("El promedio del Hilo1 es %.2f",pro );
  44.        printf("\n");
  45.  
  46.  
  47.  
  48. }
  49. void *usaImprimealeatorios(void *arg){
  50.    imprimealeatoriosparte1();
  51.    return NULL;
  52. }
  53.  
  54. void imprimealeatoriosparte2(){
  55. memcpy (A,P + 25, 100*sizeof(int));      
  56. //printf("Numeros Aleatorios 25  de A \n" );
  57.    for(i=0;i<25;i++){
  58.        //printf("%d ",A[i]);
  59.        //printf("\n");
  60.        sum2=sum2+A[i];
  61.        }
  62.        pro2=sum2/25;
  63.        printf("El promedio del hilo2 es %.2f",pro2 );
  64.        printf("\n");
  65.  
  66.  
  67.  }
  68. void *usaImprimealeatorios2(void *arg){
  69.    imprimealeatoriosparte2();
  70.    return NULL;
  71. }
  72. void imprimealeatoriosparte3(){
  73. memcpy (F,P + 50,100*sizeof(int));  
  74. //printf("Numeros Aleatorios 25  de F \n" );
  75.    for(i=0;i<25;i++){
  76.        //printf("%d ",F[i]);
  77.        //printf("\n");
  78.        sum3=sum3+F[i];
  79.        }
  80.        pro3=sum3/25;
  81.        printf("El promedio del Hilo3 es %.2f",pro3 );
  82.        printf("\n");
  83.  
  84. }
  85. void *usaImprimealeatorios3(void *arg){
  86.    imprimealeatoriosparte3();
  87.    return NULL;
  88. }
  89. void imprimealeatoriosparte4(){
  90. memcpy (G,P+75,100*sizeof(int));      
  91. //printf("Numeros Aleatorios 25  de G \n" );
  92.    for(i=0;i<25;i++){
  93.        //printf("%d ",G[i]);
  94.        //printf("\n");
  95.        sum4=sum4+G[i];
  96.        }
  97.        pro4=sum4/25;
  98.        printf("El promedio del Hilo4 es %.2f",pro4 );
  99.        printf("\n");  
  100.  
  101. }
  102. void *usaImprimealeatorios4(void *arg){
  103.    imprimealeatoriosparte4();
  104.  
  105.  
  106.  
  107.    return NULL;
  108. }
  109.  
  110.  
  111.  
  112. int main(int argc, char* argv[]){
  113.  
  114. srand(time(NULL));
  115. sacaraleatorios();
  116.  
  117.    pthread_t hiloHijo1;
  118.    pthread_t hiloHijo2;
  119.    pthread_t hiloHijo3;
  120.    pthread_t hiloHijo4;
  121.  
  122.    pthread_create(&hiloHijo1,NULL,usaImprimealeatorios,NULL) ;
  123.    pthread_join(hiloHijo1, NULL);
  124.  
  125.    pthread_create(&hiloHijo2,NULL,usaImprimealeatorios2,NULL) ;
  126.    pthread_join(hiloHijo2, NULL);
  127.  
  128.    pthread_create(&hiloHijo3,NULL,usaImprimealeatorios3,NULL) ;
  129.    pthread_join(hiloHijo3, NULL);
  130.  
  131.    pthread_create(&hiloHijo4,NULL,usaImprimealeatorios4,NULL) ;
  132.    pthread_join(hiloHijo4, NULL);
  133.  
  134.  
  135.     printf(" Hilo1 es %.2f",pro);
  136.     printf(" Hilo2 es %.2f",pro2 );
  137.     printf(" Hilo3 es %.2f",pro3 );
  138.     printf(" Hilo4 es %.2f",pro4 );
  139.  
  140.       resultadofinal = (pro + pro2 + pro3 + pro4 )/4;
  141.       printf("El promedio total  es: %f\n", resultadofinal);
  142.  
  143. return 0;
  144. }
  145.  
  146.  
  147.  


Título: Re: No me reconoce Variable! Ayuda
Publicado por: CCross en 21 Mayo 2013, 21:00 pm
Hola fercho17 debes incluir tu codigo entre las etiquetas geSHI de C por que asi
algunos caracteros simplemente no aparecen, es muy incomodo y confuso leer un
codigo asi.

Saludos  ;D


Título: Re: No me reconoce Variable! Ayuda
Publicado por: leosansan en 21 Mayo 2013, 21:03 pm
Hola fercho17 debes incluir tu codigo entre las etiquetas GeSHi de C++ porque asi
algunos caracteros simplemente no aparecen, y es muy incomodo leer un codigo asi.




Idem y de paso incluir las librerías que has usado e indentar un poco más el código.

Saluditos!.... ...
(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)

REEDITO: Así está mejor.


Título: Re: No me reconoce Variable! Ayuda
Publicado por: leosansan en 21 Mayo 2013, 21:57 pm
Puse /25. en los /25 y ....     :-)   me ha dado una salida correcta:

Código
  1. Numeros Aleatorios
  2. 376,875,513,530,611,726,646,772,457,743,906,590,220,316,37,99,419,87,849,345,581
  3. ,472,912,66,128,439,559,486,187,82,484,927,672,387,911,693,894,742,869,643,486,8
  4. 65,651,410,132,725,161,20,121,957,660,252,679,133,616,852,636,540,598,743,682,35
  5. 6,91,16,630,962,497,75,544,729,250,506,914,660,689,874,989,500,428,792,576,334,6
  6. 63,694,211,817,730,434,147,670,183,289,366,665,852,944,482,951,800,211,
  7.  
  8. El promedio del Hilo1 es 491.04
  9. El promedio del hilo2 es 540.12
  10. El promedio del Hilo3 es 532.40
  11. El promedio del Hilo4 es 584.08
  12. Hilo1 es 491.04 Hilo2 es 540.12 Hilo3 es 532.40 Hilo4 es 584.08
  13. El promedio total  es: 536.91
  14.  
  15. Process returned 0 (0x0)   execution time : 0.053 s
  16. Press any key to continue.
  17.  
  18. ]

Tampoco estaría de más poner /4. en lugar de /4, no es que sea imprescindible pero tratando con flotantes no me fio nada.

Saluditos!. .... ..(http://st.forocoches.com/foro/images/smilies/simba1.gif)


Título: Re: No me reconoce Variable! Ayuda
Publicado por: fercho17 en 22 Mayo 2013, 03:04 am
Puse /25. en los /25 y ....     :-)   me ha dado una salida correcta:

Código
  1. Numeros Aleatorios
  2. 376,875,513,530,611,726,646,772,457,743,906,590,220,316,37,99,419,87,849,345,581
  3. ,472,912,66,128,439,559,486,187,82,484,927,672,387,911,693,894,742,869,643,486,8
  4. 65,651,410,132,725,161,20,121,957,660,252,679,133,616,852,636,540,598,743,682,35
  5. 6,91,16,630,962,497,75,544,729,250,506,914,660,689,874,989,500,428,792,576,334,6
  6. 63,694,211,817,730,434,147,670,183,289,366,665,852,944,482,951,800,211,
  7.  
  8. El promedio del Hilo1 es 491.04
  9. El promedio del hilo2 es 540.12
  10. El promedio del Hilo3 es 532.40
  11. El promedio del Hilo4 es 584.08
  12. Hilo1 es 491.04 Hilo2 es 540.12 Hilo3 es 532.40 Hilo4 es 584.08
  13. El promedio total  es: 536.91
  14.  
  15. Process returned 0 (0x0)   execution time : 0.053 s
  16. Press any key to continue.
  17.  
  18. ]

Tampoco estaría de más poner /4. en lugar de /4, no es que sea imprescindible pero tratando con flotantes no me fio nada.

Saluditos!. .... ..(http://st.forocoches.com/foro/images/smilies/simba1.gif)


Amigo hice lo que tu colocaste pero no me ha funcionado!!


Título: Re: No me reconoce Variable! Ayuda
Publicado por: leosansan en 22 Mayo 2013, 08:57 am

Amigo hice lo que tu colocaste pero no me ha funcionado!!

El código que me ha funcionado, no recuerdo si hice alguna modificación más es:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #include <string.h>
  5. #include <pthread.h>
  6.  
  7. /*******************************************************/
  8. int P[100];
  9. int H[25],A[25], F[25], G[25];
  10. int i,sum = 0,sum2 = 0,sum3 = 0,sum4 = 0;
  11. float pro=0,pro1=0,pro2=0,pro3=0,pro4=0, resultadofinal=0 ;
  12.  
  13. /*******************************************************/
  14. void sacaraleatorios(){
  15. printf("Numeros Aleatorios \n" );
  16. for(i=0;i<100;i++)
  17.        P[i]=rand()%1000;
  18.    for(i=0;i<100;i++){
  19.        printf("%d",P[i]);
  20.        printf(",");
  21.        }
  22.       printf("\b\n");
  23. }
  24. /*******************************************************/
  25. void *usaSacaraleatorios(void *arg){
  26.    sacaraleatorios();
  27.    return NULL;
  28. }
  29. /*******************************************************/
  30. void imprimealeatoriosparte1(){
  31.    memcpy (H,P,100*sizeof(int));
  32.    printf("\n");
  33.    //printf("Numeros Aleatorios 25  de H \n" );
  34.    for(i=0;i<25;i++){
  35.        //printf("%d ",H[i]);
  36.        //printf("\n");
  37.        sum=sum+H[i];
  38.        }
  39.        pro=sum/25.;
  40.        printf("El promedio del Hilo1 es %.2f",pro );
  41.        printf("\n");
  42. }
  43. /*******************************************************/
  44. void *usaImprimealeatorios(void *arg){
  45.    imprimealeatoriosparte1();
  46.    return NULL;
  47. }
  48. /*******************************************************/
  49. void imprimealeatoriosparte2(){
  50.    memcpy (A,P + 25, 100*sizeof(int));
  51.    //printf("Numeros Aleatorios 25  de A \n" );
  52.    for(i=0;i<25;i++){
  53.        //printf("%d ",A[i]);
  54.        //printf("\n");
  55.        sum2=sum2+A[i];
  56.        }
  57.        pro2=sum2/25.;
  58.        printf("El promedio del hilo2 es %.2f",pro2 );
  59.        printf("\n");
  60.  }
  61. /*******************************************************/
  62. void *usaImprimealeatorios2(void *arg){
  63.    imprimealeatoriosparte2();
  64.    return NULL;
  65. }
  66. /*******************************************************/
  67. void imprimealeatoriosparte3(){
  68.    memcpy (F,P + 50,100*sizeof(int));
  69.    //printf("Numeros Aleatorios 25  de F \n" );
  70.    for(i=0;i<25;i++){
  71.        //printf("%d ",F[i]);
  72.        //printf("\n");
  73.        sum3=sum3+F[i];
  74.        }
  75.        pro3=sum3/25.;
  76.        printf("El promedio del Hilo3 es %.2f",pro3 );
  77.        printf("\n");
  78. }
  79. /*******************************************************/
  80. void *usaImprimealeatorios3(void *arg){
  81.    imprimealeatoriosparte3();
  82.    return NULL;
  83. }
  84. /*******************************************************/
  85. void imprimealeatoriosparte4(){
  86.    memcpy (G,P+75,100*sizeof(int));
  87.    //printf("Numeros Aleatorios 25  de G \n" );
  88.    for(i=0;i<25;i++){
  89.        //printf("%d ",G[i]);
  90.        //printf("\n");
  91.        sum4=sum4+G[i];
  92.        }
  93.        pro4=sum4/25.;
  94.        printf("El promedio del Hilo4 es %.2f",pro4 );
  95.        printf("\n");
  96.  
  97. }
  98. /*******************************************************/
  99. void *usaImprimealeatorios4(void *arg){
  100.    imprimealeatoriosparte4();
  101.    return NULL;
  102. }
  103. /*******************************************************/
  104. /*******************************************************/
  105. int main(int argc, char* argv[]){
  106.    srand(time(NULL));
  107.    sacaraleatorios();
  108.    pthread_t hiloHijo1;
  109.    pthread_t hiloHijo2;
  110.    pthread_t hiloHijo3;
  111.    pthread_t hiloHijo4;
  112.    pthread_create(&hiloHijo1,NULL,usaImprimealeatorios,NULL) ;
  113.    pthread_join(hiloHijo1, NULL);
  114.    pthread_create(&hiloHijo2,NULL,usaImprimealeatorios2,NULL) ;
  115.    pthread_join(hiloHijo2, NULL);
  116.    pthread_create(&hiloHijo3,NULL,usaImprimealeatorios3,NULL) ;
  117.    pthread_join(hiloHijo3, NULL);
  118.    pthread_create(&hiloHijo4,NULL,usaImprimealeatorios4,NULL) ;
  119.    pthread_join(hiloHijo4, NULL);
  120.    printf(" Hilo1 es %.2f",pro);
  121.    printf(" Hilo2 es %.2f",pro2 );
  122.    printf(" Hilo3 es %.2f",pro3 );
  123.    printf(" Hilo4 es %.2f",pro4 );
  124.    resultadofinal = (pro + pro2 + pro3 + pro4 )/4.;
  125.    printf("\nEl promedio total  es: %.2f\n", resultadofinal);
  126. return 0;
  127. }
  128. /*******************************************************/
  129. /*******************************************************/
  130.  

Y te pongo otra salida como comprobación de que furula:


(http://i1280.photobucket.com/albums/a497/leosansan/GRAFICOS1/hilos_zps98ec990e.jpg)

Saluditos!... ..
(http://i1280.photobucket.com/albums/a497/leosansan/leosan1/leones%20peques/lion14peque_zps1d213b80.jpg)


Título: Re: No me reconoce Variable! Ayuda
Publicado por: leosansan en 22 Mayo 2013, 09:50 am

¡Lo que faltaba!, publicidad en el foro. A lo peor se anima la gente a subir los códigos fotografiados, como el otro día, en vez de escribirlos  :laugh:.

¡Vamos hombre!, hay mejores medios donde hacer propaganda.

Saluditos!. ....

(http://i1280.photobucket.com/albums/a497/leosansan/leosan2/4grandes_zps11cad90e.gif)

P.D: REEDITO. Este comentario iba por un post anterior con propaganda de compra de móviles. Los de "arriba" han estado rápidos y lo han borrado  ;-) ;-) ;-). Por cierto, pueden borrar  este post que ya no tiene sentido.


Título: Re: No me reconoce Variable! Ayuda
Publicado por: fercho17 en 22 Mayo 2013, 21:23 pm

¡Lo que faltaba!, publicidad en el foro. A lo peor se anima la gente a subir los códigos fotografiados, como el otro día, en vez de escribirlos  :laugh:.

¡Vamos hombre!, hay mejores medios donde hacer propaganda.

Saluditos!. ....

(http://i1280.photobucket.com/albums/a497/leosansan/leosan2/4grandes_zps11cad90e.gif)

P.D: REEDITO. Este comentario iba por un post anterior con propaganda de compra de móviles. Los de "arriba" han estado rápidos y lo han borrado  ;-) ;-) ;-). Por cierto, pueden borrar  este post que ya no tiene sentido.



Gracias leosansan ya me funciono!! Te lo agradezco   ;-)