Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Funcion Random

Estas en el tema de Funcion Random en el foro de C/C++ en Foros del Web. El tema es asi, la funcion random me esta complicando, porque entiendo que esta mal expresada, porque siempre va a mostrar los arreglos del 1 ...
  #1 (permalink)  
Antiguo 26/09/2011, 20:04
 
Fecha de Ingreso: septiembre-2011
Mensajes: 7
Antigüedad: 12 años, 6 meses
Puntos: 1
Funcion Random

El tema es asi, la funcion random me esta complicando, porque entiendo que esta mal expresada, porque siempre va a mostrar los arreglos del 1 al 3, nunca un numero al asar entre esos 3 numeros, realmente me gustaria si alguien me puede explicar bien el funcionamiento para que con un arreglo, pueda tener un numero random con 1 arreglo de 1 solo vector
Código C:
Ver original
  1. /*7.    Calcule lo que debe pagar cada cliente en un almacén; si por cada compra el cliente tiene derecho a sacar un papelito, y dependiendo del color, se efectúan diferentes descuentos.
  2. Si el color es blanco, se realiza un descuento del 2.63% sobre la cuenta, si es verde, un descuento de 4.85% y si es rojo, un descuento de 5.02%. se sabe además que si es día lunes o viernes,
  3. el porcentaje de descuento es el doble.*/
  4.  
  5. #include<stdio.h>
  6. #include<conio.h>
  7. #include<stdlib.h>
  8.  
  9. #define color 1
  10.  
  11. int random[3];
  12. int contador;
  13. float blancoo( float compra);
  14. float verdee ( float compra);
  15. float rojoo ( float compra);
  16.  
  17.  
  18.  
  19. main()
  20. {
  21.    
  22.           int dia;
  23.           float compra, compra1;
  24.           float descuento1, descuento2, descuento3;
  25.           //Elige un numero random entre el 1 y el 3
  26.           for ( contador = 0; contador < 3; contador++){
  27.               random[3] = rand();
  28.              }
  29.           for ( contador = 0; contador < 3; contador++){
  30.               printf("colores[%d] = \n",contador);
  31.               printf("%d\n", random[3]);}
  32.          
  33.          
  34.          
  35.           //depende lo que pongo elige la funcion a usar
  36.                      if ( random[3] == 1){
  37.                           printf("Ud saco el color %d: Blanco \n", random[3]);
  38.                          
  39.                            
  40.                      blancoo( compra);}
  41.                      else if ( random[3] ==2){
  42.                          printf("Ud saco el color %d: Verde \n", random[3]);  
  43.                      verdee ( compra);}
  44.                      else if ( random[3] == 3){
  45.                            printf("Ud saco el color %d: Rojo \n", random[3]);
  46.                      rojoo ( compra);}
  47.                      
  48.                    
  49.                      getch();
  50.                   return 0;
  51. }
  52. // Funciones para ver que tiene que pagar por compradependiendo el dia
  53. float blancoo ( float compra)
  54. {
  55.       float descuento1, compra1, ahorro;
  56.       float blancoo;
  57.       int dia;
  58.                               printf("*******************\n");
  59.                               printf("** ¿Que dia es?  **\n");
  60.                               printf("**1:Lunes        **\n");
  61.                               printf("**2:Martes       ** \n");
  62.                               printf("**3:Miercoles    **  \n");
  63.                               printf("**4:Jueves       ** \n");
  64.                               printf("**5:Viernes      ** \n");
  65.                               printf("**6:Sabado       **\n");
  66.                               printf("**7:Domingo      **\n");
  67.                               printf("*******************\n");
  68.                               scanf("%d", &dia);
  69.      
  70.       if (  dia ==  1 ||  dia ==  5){ //CD = CON DESCUENTO   SD = SIN DESCUENTO
  71.             printf("Cuanto piensa gastar(CD)?\n");
  72.             scanf("%f", &compra1);//scanf("%d", &compra1); NO LO TOMA, TODOS TIENEN QUE SER FLOTANTES PARA QUE FUNCIONE
  73.                descuento1 = compra1 * 0.9474;
  74.                ahorro = compra1 - descuento1;
  75.                           printf("****************************\n");
  76.                          printf("** Ud va a abonar $%2.2f  **       \n", descuento1);
  77.                          printf("** Ud ahorra $%2.2f        **\n", ahorro);
  78.                          printf("****************************\n");}
  79.       else {
  80.             printf("Cuanto piensa gastar(SD)?\n");
  81.             scanf("%f", &compra1);
  82.                descuento1 = compra1 * 0.9737;
  83.                ahorro = compra1 - descuento1;
  84.                          printf("****************************\n");
  85.                          printf("** Ud va a abonar $%2.2f  **       \n", descuento1);
  86.                          printf("** Ud ahorra $%2.2f        **\n", ahorro);
  87.                          printf("****************************\n");}
  88.                          
  89.      
  90. }
  91. float verdee ( float compra)
  92. {
  93.       float descuento2, compra1, ahorro;
  94.       int dia;
  95.       float verdee;
  96.                               printf("*******************\n");
  97.                               printf("** ¿Que dia es?  **\n");
  98.                               printf("**1:Lunes        **\n");
  99.                               printf("**2:Martes       ** \n");
  100.                               printf("**3:Miercoles    **  \n");
  101.                               printf("**4:Jueves       ** \n");
  102.                               printf("**5:Viernes      ** \n");
  103.                               printf("**6:Sabado       **\n");
  104.                               printf("**7:Domingo      **\n");
  105.                               printf("*******************\n");
  106.                               scanf("%d", &dia);
  107.       if (  dia ==  1 ||  dia ==  5){
  108.              printf("Cuanto piensa gastar (CD)?\n");
  109.             scanf("%f", &compra1);
  110.                         descuento2 = compra1 * 0.9474;
  111.                         ahorro = compra1 - descuento2;
  112.                         printf("****************************\n");
  113.                          printf("** Ud va a abonar $%2.2f  **       \n", descuento2);
  114.                          printf("** Ud ahorra $%2.2f        **\n", ahorro);
  115.                          printf("****************************\n");
  116.                         }
  117.       else  {
  118.              printf("Cuanto piensa gastar( SD)?\n");
  119.              scanf("%f", &compra1);
  120.                   descuento2 = compra1 * 0.9515;
  121.                   ahorro = compra1 - descuento2;
  122.                         printf("****************************\n");
  123.                          printf("** Ud va a abonar $%2.2f  **       \n", descuento2);
  124.                          printf("** Ud ahorra $%2.2f        **\n", ahorro);
  125.                          printf("****************************\n");}
  126.                    
  127.      
  128. }
  129. float rojoo ( float compra)
  130. {
  131.       float rojoo, compra1, ahorro;
  132.       float descuento3;
  133.       int dia;
  134.                                printf("*******************\n");
  135.                               printf("** ¿Que dia es?  **\n");
  136.                               printf("**1:Lunes        **\n");
  137.                               printf("**2:Martes       ** \n");
  138.                               printf("**3:Miercoles    **  \n");
  139.                               printf("**4:Jueves       ** \n");
  140.                               printf("**5:Viernes      ** \n");
  141.                               printf("**6:Sabado       **\n");
  142.                               printf("**7:Domingo      **\n");
  143.                               printf("*******************\n");
  144.                               scanf("%d", &dia);
  145.       if ( dia == 1 || dia == 5){
  146.            printf("Cuanto piensa gastar (CD)?\n");
  147.             scanf("%f", &compra1);
  148.            descuento3 = compra1 * 0.9474;
  149.            ahorro = compra1 - descuento3;
  150.                       printf("****************************\n");
  151.                          printf("** Ud va a abonar $%2.2f  **       \n", descuento3);
  152.                          printf("** Ud ahorra $%2.2f        **\n", ahorro);
  153.                          printf("****************************\n");}
  154.       else {    
  155.            printf("Cuanto piensa gastar (SD)?\n");
  156.             scanf("%f", &compra1);
  157.           descuento3 = compra1 * 0.8996;
  158.           ahorro = compra1 - descuento3;
  159.                   printf("****************************\n");
  160.                          printf("** Ud va a abonar $%2.2f  **       \n", descuento3);
  161.                          printf("** Ud ahorra $%2.2f        **\n", ahorro);
  162.                          printf("****************************\n");}
  163.      
  164. }
  #2 (permalink)  
Antiguo 26/09/2011, 20:22
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: Funcion Random

Sinceramente deberias ordenar tus conocimientos...el random devuelve un numero aleatorio. No tiene nada que ver con arreglos. No entiendo eso que estas diciendo.

Código C:
Ver original
  1. //Elige un numero random entre el 1 y el 3
  2.           for ( contador = 0; contador < 3; contador++){
  3.               random[3] = rand();
  4.              }

Por lo que dice el comentario eso que quieres hacer esta mal. Guiandome en el ejercicio que pusiste vos simplemente necesitas generar un solo numero random. Porque lo calculas 3 veces y lo almacenas en el mismo lugar???

inr random = rand() % 3 +1; // Esta instruccion si te da un numero entre el 1 y el 3

Recuerda de usar srand para inicializar la semilla del random, de lo contrario el numero sera el mismo siempre.
  #3 (permalink)  
Antiguo 26/09/2011, 20:35
 
Fecha de Ingreso: septiembre-2011
Mensajes: 7
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: Funcion Random

si, es que la funcion random, la estoy aprendiendo justamente con arreglos, es en el unico libro que pude conseguir que algo me la explique, y me esta confundiendo bastante, como te daras cuenta, porque lo guarda en 1 posicion y lo calculo 3 veces.. (eso me di cuenta luego de postear) igual, la instruccion que escribiste, no la entiendo, osea saca el resto del numero aleatorio y le suma 1? estoy medio mareado a estas horas :S
  #4 (permalink)  
Antiguo 27/09/2011, 06:18
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: Funcion Random

AL buscar el resto lo acotamos entre 0 y (n-1). Si le sumo uno lo estoy acotando entre 1 y n como querias.

Saludos
  #5 (permalink)  
Antiguo 27/09/2011, 10:40
 
Fecha de Ingreso: septiembre-2011
Mensajes: 20
Antigüedad: 12 años, 6 meses
Puntos: 2
Respuesta: Funcion Random

Este programa es muy simple y no hace falta que te compliques usando arreglos.
Código C++:
Ver original
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<time.h>
  4.  
  5. int main(){
  6.     int dia, papelito;
  7.     float descuento;
  8.     /* Inicializamos los valores para que random funciene de forma aleatoria. y nos ayude a determinar el día y el descuento*/
  9.     srand ( time(NULL));
  10.     dia= rand() % 7 +1;
  11.     papelito= rand() %3 + 1;
  12.    
  13.     switch (papelito){
  14.     case 1: /* Blanco */
  15.      descuento=2.63;
  16.      break;
  17.      case 2: /* Verde */
  18.      descuento= 4.85;
  19.      break;
  20.      case 3: /* Rojo */
  21.      descuento=5.02;
  22.      break;
  23.      }
  24.       switch (dia){
  25.       case 1:   /* Lunes */
  26.       descuento= descuento * 2;
  27.       break;
  28.       case 5: /* Viernes */
  29.       descuento= descuento * 2;
  30.       break;
  31.       }
  32.       printf("Usted tiene un descuento del %f", descuento);
  33.     return 0;
  34. }
  #6 (permalink)  
Antiguo 09/10/2011, 14:22
 
Fecha de Ingreso: septiembre-2011
Mensajes: 7
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: Funcion Random

Muchisimas gracias por la ayuda!

Etiquetas: funcion, random
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:05.