Necesito ayuda con un generador de numeros al azar

Iniciado por JuanTheTropper, 5 Diciembre 2018, 03:53 AM

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

JuanTheTropper

Lo que ocurre es que cree este codigo para generar un numero al azar del 1 al 10 pero me sale error y no soy capaz de encontrar el problema, podrian ayudarme?
-------------------------------
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>


int turnos=16;
int operarios=40;
int numeroTrabajadores=0;
int a=1;
using namespace std;   
int main(int argc, char** argv) {
   cout << " " <<endl;
   int i=0; int j=0;
   numeroTrabajadores = turnos * operarios;
   cout << "El numero de trabajadores es" << endl;
   cout << numeroTrabajadores<< endl;
   
   srand(time(NULL));
   FILE* contador;contador=fopen("puntaje","wt");
   for (i=1; i<=turnos; i++)
   {
        for (a=1;a<=operarios;a++){   
             if (i==3 || i==16){   
            
                   printf (contador, "%d%c",  rand() % 5 + 4, '\n');
            else {
                  printf (contador, "%d%c",  rand() % 10, '\n');
            }
       }
   }

}
    fclose(contador);
   printf("Completado");
   return 0;
}
--------------------------------------

AlbertoBSD

#1
hay que saber lo que se esta haciendo con el operador de modulo, solo devuelve el residuo de la division

rand() % 10

Solo genera números del 0 al 9 ya que son los residuos posibles al dividir cualquier numero entre 10

1 + rand() % 10

Solo genera numeros del 1 al 10 ya que seria 1 + los numeros del 0 al 9, si haces la suma te dara numeros del 1 al 10

Por cierto tienes error en el printf

MAL
printf (contador, "%d%c",  rand() % 10, '\n');

deberia de ser

printf ("%d\n",  rand() % 10);

Por lo visto lo tratas de usar como si fuera cout, yes muy distinto el comportamiento

Saludos
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

CalgaryCorpus

Reemplaza printf por fprintf para escribir en el archivo.
Aqui mi perfil en LinkedIn, invitame un cafe aqui