Problema en creación de varios arch. de texto simultaneos

Iniciado por Cero++, 5 Enero 2019, 02:11 AM

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

Cero++

Buenas gente, aquí el resumen de para qué codifique el siguiente código.
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 (cpp) [Seleccionar]
#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();
}
Ser diligente es lo ÚNICO que importa para lograr el éxito[c/ode]