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;
}
--------------------------------------
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
Reemplaza printf por fprintf para escribir en el archivo.