Ver Mensaje Individual
  #1 (permalink)  
Antiguo 29/05/2008, 11:10
waneos
 
Fecha de Ingreso: abril-2008
Mensajes: 19
Antigüedad: 16 años, 1 mes
Puntos: 0
Ayuda super urgente!

Necesito ayuda superurgente.

Código:
#include <stdio.h>
#include <stdlib.h>


   int a,c,X,M,n,U;
   short i;
   char nombre_fichero[20];
   FILE* pf;


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

printf("               Para generar n numeros aleatorios,\n");
printf("             por elmetodo de congruencial lineales\n\n\n");     
    
    // entrada de datos
    
    printf("Introduce a\n");
    printf("-> ");
    scanf("%d",&a);
    printf("Introduce c\n");
    printf("-> ");
    scanf("%d",&c);
    printf("Introduce M\n");
    printf("-> ");
    scanf("%d",&M);
    printf("Introduce semilla\n");
    printf("-> ");
    scanf("%d",&X);
    do{
    printf("Introduce cuantos numeros quieres obtener?\n");
    printf("-> ");
    scanf("%d",&n);
    }while(n>1000);
    printf("En que fichero lo guardo?\n");
    printf("-> ");
    scanf("%s", &nombre_fichero);
   
   // codigo 
   
    if((pf = fopen(nombre_fichero, "w+"))==NULL)
    {
    printf("Error en apertura de archivo");
    }
   
   
   	for(i=1; i<n; ++i)
    {
        X=(a * X + c)%M;      
        U=X/M;
        printf("Numero %i    %d\n",i,U);
        fprintf(pf,"%f\n",U);   
    }
    
  
      

    fclose(pf);  
    
    system("PAUSE");	
    return 0;
}
Mi problema viene ke cuando hace la division U=X/M, ke me da 0 para todo n (xke la funcion X=(a * X + c)%M; si ke me da los numeros correctos) y si cambio el tipo de variable por un float ( en vez de int ) me surge el siguiente problema.

- In function `main':
- invalid operands to binary %


xke yo kiero conseguir numeros aleatorios por el metodo congruencial, ke es:

Xi+1=(a * Xi + c)%M;

U= X/M; (donde U son los numeros aleatorios).

porfavor necesito ayuda urgente!, es ke tengo ke entregar la practica dentro de 5h.... y llevo varios dias intentando areglar esto y estoy desesperado!

muxas gracias tios!!

Última edición por waneos; 29/05/2008 a las 12:47