Ayuda con este código, simplemente se me repite los números al azar, y eso es loq no quiero
Por lo que entiendo pretendes repartir 15 clases. de la 301 a la 315, de forma aleatoria entre el prefesorado y según materias, de forma que no se repitan las clases asignadas, vamos algo como esto:
Ingrese profesor No 1: 1
Ingrese materia #1 del profesor 1: 11
Ingrese materia #2 del profesor 1: 12
Ingrese materia #3 del profesor 1: 13
Ingrese profesor No 2: 2
Ingrese materia #1 del profesor 2: 21
Ingrese materia #2 del profesor 2: 22
Ingrese materia #3 del profesor 2: 23
Ingrese profesor No 3: 3
Ingrese materia #1 del profesor 3: 31
Ingrese materia #2 del profesor 3: 32
Ingrese materia #3 del profesor 3: 33
Ingrese profesor No 4: 4
Ingrese materia #1 del profesor 4: 41
Ingrese materia #2 del profesor 4: 42
Ingrese materia #3 del profesor 4: 43
Ingrese profesor No 5: 5
Ingrese materia #1 del profesor 5: 51
Ingrese materia #2 del profesor 5: 52
Ingrese materia #3 del profesor 5: 53
Maestro Materia Salon
1
11 315
12 314
13 307
2
21 306
22 305
23 308
3
31 301
32 312
33 310
4
41 302
42 304
43 313
5
51 309
52 311
53 303
Otra forma, aunque básicamente es la misma que la sugerida por WHK, es usar las posibilidades de las librerías algorithm y vector, generando un vector con las clases de la 301 a la 315 y "desordenándolo" para posteriormente elegirlos en "orden", que es desordenado:#include <algorithm>
#include <vector>
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
string profe[5];
string materia[5][3];
int salon[5][3];
int rep;
int i=0,j=0,k=0,l=0,m=0;
srand(time(NULL));
vector<int> myvector;
for (int i=301; i<=315; ++i) myvector.push_back(i);
random_shuffle ( myvector.begin(), myvector.end() );
do{j=0;
cout<<"Ingrese profesor No "<<i+1<<": ";
cin>>profe[i];
while(j!=3){
cout<<"Ingrese materia #"<<j+1<<" del profesor "<<profe[i]<<": ";
cin>>materia[i][j];
do{rep=true;
salon[i][j]=myvector[m];
if((i>0)||(j>0)){k=0;l=0;
while((k=!i)&&(l!=j)){
if(salon[i][j]==salon[k][l]){
rep=false;}
if(l==2){l=0;k++;}else{
l++;}}}m++;
}while(rep!=true);
j++;}i++;
}while(i!=5);
i=0;
cout<<"\n\nMaestro\tMateria\tSalon\n";
while(i!=5){j=0;
cout<<endl<<profe[i];
while(j!=3){
cout<<"\n\t"<<materia[i][j]<<"\t"<<salon[i][j];
j++;}i++;}
return 0;
}
Saluditos!. .....