No me reconoce Variable! Ayuda

Iniciado por fercho17, 21 Mayo 2013, 20:48 PM

0 Miembros y 1 Visitante están viendo este tema.

fercho17

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:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#include <pthread.h>


int P[100];
int H[25],A[25], F[25], G[25];
int i,sum = 0,sum2 = 0,sum3 = 0,sum4 = 0;
float pro,pro1,pro2,pro3,pro4, resultadofinal ;


void sacaraleatorios(){

for(i=0;i<100;i++)
        P[i]=rand()%1000;
        printf("Numeros Aleatorios \n" );
    for(i=0;i<100;i++){
        printf("%d",P[i]);
        printf(",");
       
        }
       printf("\n");
}

void *usaSacaraleatorios(void *arg){
    sacaraleatorios();
    return NULL;
}

void imprimealeatoriosparte1(){

memcpy (H,P,100*sizeof(int));
printf("\n");
//printf("Numeros Aleatorios 25  de H \n" );
    for(i=0;i<25;i++){
        //printf("%d ",H[i]);
        //printf("\n");
        sum=sum+H[i];
        }
        pro=sum/25;
        printf("El promedio del Hilo1 es %.2f",pro );
        printf("\n");
       
       
     
}
void *usaImprimealeatorios(void *arg){
    imprimealeatoriosparte1();
    return NULL;
}

void imprimealeatoriosparte2(){
memcpy (A,P + 25, 100*sizeof(int));      
//printf("Numeros Aleatorios 25  de A \n" );
    for(i=0;i<25;i++){
        //printf("%d ",A[i]);
        //printf("\n");
        sum2=sum2+A[i];
        }
        pro2=sum2/25;
        printf("El promedio del hilo2 es %.2f",pro2 );
        printf("\n");
       

  }
void *usaImprimealeatorios2(void *arg){
    imprimealeatoriosparte2();
    return NULL;
}
void imprimealeatoriosparte3(){
memcpy (F,P + 50,100*sizeof(int)); 
//printf("Numeros Aleatorios 25  de F \n" );
    for(i=0;i<25;i++){
        //printf("%d ",F[i]);
        //printf("\n");
        sum3=sum3+F[i];
        }
        pro3=sum3/25;
        printf("El promedio del Hilo3 es %.2f",pro3 );
        printf("\n");
       
}
void *usaImprimealeatorios3(void *arg){
    imprimealeatoriosparte3();
    return NULL;
}
void imprimealeatoriosparte4(){
memcpy (G,P+75,100*sizeof(int));        
//printf("Numeros Aleatorios 25  de G \n" );
    for(i=0;i<25;i++){
        //printf("%d ",G[i]);
        //printf("\n");
        sum4=sum4+G[i];
        }
        pro4=sum4/25;
        printf("El promedio del Hilo4 es %.2f",pro4 );
        printf("\n"); 
               
}
void *usaImprimealeatorios4(void *arg){
    imprimealeatoriosparte4();
   
   
   
    return NULL;
}



int main(int argc, char* argv[]){

srand(time(NULL));
sacaraleatorios();

    pthread_t hiloHijo1;
    pthread_t hiloHijo2;
    pthread_t hiloHijo3;
    pthread_t hiloHijo4;

    pthread_create(&hiloHijo1,NULL,usaImprimealeatorios,NULL) ;
    pthread_join(hiloHijo1, NULL);
   
    pthread_create(&hiloHijo2,NULL,usaImprimealeatorios2,NULL) ;
    pthread_join(hiloHijo2, NULL);
   
    pthread_create(&hiloHijo3,NULL,usaImprimealeatorios3,NULL) ;
    pthread_join(hiloHijo3, NULL);
   
    pthread_create(&hiloHijo4,NULL,usaImprimealeatorios4,NULL) ;
    pthread_join(hiloHijo4, NULL);


     printf(" Hilo1 es %.2f",pro);
     printf(" Hilo2 es %.2f",pro2 );
     printf(" Hilo3 es %.2f",pro3 );
     printf(" Hilo4 es %.2f",pro4 );

       resultadofinal = (pro + pro2 + pro3 + pro4 )/4;
       printf("El promedio total  es: %f\n", resultadofinal);

return 0;
}



CCross

#1
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

leosansan

#2
Cita de: CCross en 21 Mayo 2013, 21:00 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!.... ...


REEDITO: Así está mejor.

leosansan

#3
Puse /25. en los /25 y ....     :-)   me ha dado una salida correcta:

Código (cpp) [Seleccionar]

Numeros Aleatorios
376,875,513,530,611,726,646,772,457,743,906,590,220,316,37,99,419,87,849,345,581
,472,912,66,128,439,559,486,187,82,484,927,672,387,911,693,894,742,869,643,486,8
65,651,410,132,725,161,20,121,957,660,252,679,133,616,852,636,540,598,743,682,35
6,91,16,630,962,497,75,544,729,250,506,914,660,689,874,989,500,428,792,576,334,6
63,694,211,817,730,434,147,670,183,289,366,665,852,944,482,951,800,211,

El promedio del Hilo1 es 491.04
El promedio del hilo2 es 540.12
El promedio del Hilo3 es 532.40
El promedio del Hilo4 es 584.08
Hilo1 es 491.04 Hilo2 es 540.12 Hilo3 es 532.40 Hilo4 es 584.08
El promedio total  es: 536.91

Process returned 0 (0x0)   execution time : 0.053 s
Press any key to continue.

]


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!. .... ..

fercho17

Cita de: leosansan en 21 Mayo 2013, 21:57 PM
Puse /25. en los /25 y ....     :-)   me ha dado una salida correcta:

Código (cpp) [Seleccionar]

Numeros Aleatorios
376,875,513,530,611,726,646,772,457,743,906,590,220,316,37,99,419,87,849,345,581
,472,912,66,128,439,559,486,187,82,484,927,672,387,911,693,894,742,869,643,486,8
65,651,410,132,725,161,20,121,957,660,252,679,133,616,852,636,540,598,743,682,35
6,91,16,630,962,497,75,544,729,250,506,914,660,689,874,989,500,428,792,576,334,6
63,694,211,817,730,434,147,670,183,289,366,665,852,944,482,951,800,211,

El promedio del Hilo1 es 491.04
El promedio del hilo2 es 540.12
El promedio del Hilo3 es 532.40
El promedio del Hilo4 es 584.08
Hilo1 es 491.04 Hilo2 es 540.12 Hilo3 es 532.40 Hilo4 es 584.08
El promedio total  es: 536.91

Process returned 0 (0x0)   execution time : 0.053 s
Press any key to continue.

]


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!. .... ..


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

leosansan

#5
Cita de: fercho17 en 22 Mayo 2013, 03:04 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 (cpp) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#include <pthread.h>

/*******************************************************/
int P[100];
int H[25],A[25], F[25], G[25];
int i,sum = 0,sum2 = 0,sum3 = 0,sum4 = 0;
float pro=0,pro1=0,pro2=0,pro3=0,pro4=0, resultadofinal=0 ;

/*******************************************************/
void sacaraleatorios(){
printf("Numeros Aleatorios \n" );
for(i=0;i<100;i++)
       P[i]=rand()%1000;
   for(i=0;i<100;i++){
       printf("%d",P[i]);
       printf(",");
       }
      printf("\b\n");
}
/*******************************************************/
void *usaSacaraleatorios(void *arg){
   sacaraleatorios();
   return NULL;
}
/*******************************************************/
void imprimealeatoriosparte1(){
   memcpy (H,P,100*sizeof(int));
   printf("\n");
   //printf("Numeros Aleatorios 25  de H \n" );
   for(i=0;i<25;i++){
       //printf("%d ",H[i]);
       //printf("\n");
       sum=sum+H[i];
       }
       pro=sum/25.;
       printf("El promedio del Hilo1 es %.2f",pro );
       printf("\n");
}
/*******************************************************/
void *usaImprimealeatorios(void *arg){
   imprimealeatoriosparte1();
   return NULL;
}
/*******************************************************/
void imprimealeatoriosparte2(){
   memcpy (A,P + 25, 100*sizeof(int));
   //printf("Numeros Aleatorios 25  de A \n" );
   for(i=0;i<25;i++){
       //printf("%d ",A[i]);
       //printf("\n");
       sum2=sum2+A[i];
       }
       pro2=sum2/25.;
       printf("El promedio del hilo2 es %.2f",pro2 );
       printf("\n");
 }
/*******************************************************/
void *usaImprimealeatorios2(void *arg){
   imprimealeatoriosparte2();
   return NULL;
}
/*******************************************************/
void imprimealeatoriosparte3(){
   memcpy (F,P + 50,100*sizeof(int));
   //printf("Numeros Aleatorios 25  de F \n" );
   for(i=0;i<25;i++){
       //printf("%d ",F[i]);
       //printf("\n");
       sum3=sum3+F[i];
       }
       pro3=sum3/25.;
       printf("El promedio del Hilo3 es %.2f",pro3 );
       printf("\n");
}
/*******************************************************/
void *usaImprimealeatorios3(void *arg){
   imprimealeatoriosparte3();
   return NULL;
}
/*******************************************************/
void imprimealeatoriosparte4(){
   memcpy (G,P+75,100*sizeof(int));
   //printf("Numeros Aleatorios 25  de G \n" );
   for(i=0;i<25;i++){
       //printf("%d ",G[i]);
       //printf("\n");
       sum4=sum4+G[i];
       }
       pro4=sum4/25.;
       printf("El promedio del Hilo4 es %.2f",pro4 );
       printf("\n");

}
/*******************************************************/
void *usaImprimealeatorios4(void *arg){
   imprimealeatoriosparte4();
   return NULL;
}
/*******************************************************/
/*******************************************************/
int main(int argc, char* argv[]){
   srand(time(NULL));
   sacaraleatorios();
   pthread_t hiloHijo1;
   pthread_t hiloHijo2;
   pthread_t hiloHijo3;
   pthread_t hiloHijo4;
   pthread_create(&hiloHijo1,NULL,usaImprimealeatorios,NULL) ;
   pthread_join(hiloHijo1, NULL);
   pthread_create(&hiloHijo2,NULL,usaImprimealeatorios2,NULL) ;
   pthread_join(hiloHijo2, NULL);
   pthread_create(&hiloHijo3,NULL,usaImprimealeatorios3,NULL) ;
   pthread_join(hiloHijo3, NULL);
   pthread_create(&hiloHijo4,NULL,usaImprimealeatorios4,NULL) ;
   pthread_join(hiloHijo4, NULL);
   printf(" Hilo1 es %.2f",pro);
   printf(" Hilo2 es %.2f",pro2 );
   printf(" Hilo3 es %.2f",pro3 );
   printf(" Hilo4 es %.2f",pro4 );
   resultadofinal = (pro + pro2 + pro3 + pro4 )/4.;
   printf("\nEl promedio total  es: %.2f\n", resultadofinal);
return 0;
}
/*******************************************************/
/*******************************************************/


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




Saluditos!... ..

leosansan

#6

¡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!. ....



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.

fercho17

Cita de: 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!. ....



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   ;-)