Necesitaba hacer "x" cantidades de comisiones dependiendo de la cantidad de alumnos que tengo donde el máximo es de 30 alumnos x comisión.
Mi problema, sólo me crea la primera comisión y luego, la siguiente información se pierde...
El error se debe encontrar en la función <Crear_lista> a mi parecer, pero no lo veo, debe ser de tipo lógico, llegué a esa conclusión.
Respondanme por favor.
Código
#include <iostream> #include <vector> #include <sstream> #include <fstream> using namespace std; struct Alumno{ string nom_ape; }; istream& operator>>(istream &, Alumno&); ostream& operator<<(ostream &, Alumno&); int Cantidad_comisiones(const int _maximo,size_t _cantidad_alum); void Crear_listas(int, vector<Alumno>, int, int); int Ver_cociente(int _comision, size_t _cantidad_alum); //Medio redundante... int Alumnos_sobrantes(int _comision, size_t _cantidad_alum); int main(int argc, char *argv[]) { const int maximo=30; vector<Alumno> V; Alumno aux; ifstream lectura; lectura.open("Unidad 5 - Nro 3 - Inscriptos.txt"); if(!lectura.is_open()){ cerr<<"Archivo no abierto"<<endl; exit(-1); } while(lectura>>aux){ V.push_back(aux); } int comisiones=Cantidad_comisiones(maximo,V.size()); int cociente=Ver_cociente(comisiones,V.size()); int alumnos_sobrantes=Alumnos_sobrantes(comisiones,V.size()); cout<<"Total de alumnos: "<<V.size()<<endl; cout<<"Cantidad de comisiones: "<<comisiones; Crear_listas(comisiones,V,cociente,alumnos_sobrantes); return 0; } istream& operator>>(istream &i, Alumno &A){ getline(i,A.nom_ape); return i; } ostream& operator<<(ostream &o, Alumno &_A){ o<<_A.nom_ape<<endl; return o; } int Cantidad_comisiones(const int _maximo,size_t _cantidad_alum){ int cociente=0,resto=0; cociente=_cantidad_alum/_maximo; resto=_cantidad_alum%_maximo; if(resto!=0){ return cociente+1; } return cociente; } int Ver_cociente(int _comision, size_t _cantidad_alum){ //Que podria hacer para no pasar todo nuevamente? int alumno_x_comision=_cantidad_alum/_comision; return alumno_x_comision; } int Alumnos_sobrantes(int _comision, size_t _cantidad_alum){ float resto=_cantidad_alum%_comision; if(resto!=0){ return resto*_comision; } return resto; } void Crear_listas(int _comisiones, vector<Alumno> _V, int _cociente,int _alum_sobrantes){ string nom_lista="Unidad 5 - Nro 3 - Comision"; stringstream ss; ofstream salida; for(int i=0;i<_comisiones;i++) { ss<<nom_lista<<i<<".txt"; salida.open(ss.str()); if(_alum_sobrantes!=0){ for(int i=0;i<_cociente+1;i++) { salida<<_V[i]; } }else{ for(int i=0;i<_cociente;i++) { salida<<_V[i]; } } } salida.close(); }