26/01/2020, 21:24:35 pm *
Bienvenido(a), Visitante. Por favor, ingresa o regístrate.
¿Perdiste tu email de activación?

Ingresar con nombre de usuario, contraseña y duración de la sesión
Noticias: LISTADO ACTUALIZADO DE CURSOS
 
 
Páginas: [1]   Ir Abajo
  Imprimir  
Autor Tema: Error incomprendible C++, ayuda por favor.  (Leído 1377 veces)
0 Usuarios y 1 Visitante están viendo este tema.
Sagnior
Junior
**

Karma: +0/-0
Desconectado Desconectado

Sexo: Masculino
Venezuela Venezuela

Mensajes: 39


Ver Perfil
« : 05/05/2017, 16:35:01 pm »

Buenas tardes, Estoy terminando un proyecto en C++ que debo enviar antes de las 12 de la noche de hoy, el programa lee dos archivos, estudiantes y materias, cada uno ordenado, y permite recibir entradas de comandos para consultar información.
El problema lo tengo con lo que ocurre al introducir el comando "listarCreditos" que imprimirá los números de cédula de cada estudiante y al lado el total de sus créditos inscritos, (en la UCV cada materia vale una cantidad de Unidades Créditos), según mi lógica el programa debería funcionar sin problemas, pero soy nuevo en C++, y cuando introduzco el comando, en vez de hacer lo que quiero q haga el programa se paraliza, guardé la información necesaria para ese comando en dos arreglos q serán recorridos y comparados para dar como salida lo q se quiere. Revisé q los arreglos se llenan.

Puede que haya un problema al convertir string a int, pero el compilador dice q todo está perfecto. Los arreglos ya están llenos anteriormente, si necesitan q les de el codigo completo me dicen
 Aquí el código resumido :
 \textrm{

int main(){
string nmaterias,nestudiantes,comando,Generos;
   vector<string>,arregloEstudiantes, arregloMaterias;
   int i,j,
int largoE=sizeof(arregloEstudiantes);
int largoM=sizeof(arregloMaterias);
while(true){
   getline(cin,comando);

    if(comando == "listarCreditos"){// AQUI Comando que falta
        int suma=0;
        int cedula=0;
        for(j=0;j<largoE;j++){
            if(atoi(arregloEstudiantes[j].c_str())>=1000000){ //CEDULA
                int cedula=atoi(arregloEstudiantes[j].c_str());
                }
            for(i=1;i<largoM;i+2){
                if(arregloEstudiantes[j]==arregloMaterias[i-1]){
                    string resultado=arregloMaterias;
                    suma+=atoi(resultado.c_str());
                    }
                }
            if(atoi(arregloEstudiantes[j+1].c_str())>1000000){
                cout<<cedula<<" "<<suma<<endl;
                cedula=0;suma=0;
            }
        }

   }}
return 0;
}
En línea
ingmarov
Moderador Global
Pleno*
*

Karma: +0/-0
Desconectado Desconectado

Sexo: Masculino
Honduras Honduras

Mensajes: 4.443



Ver Perfil
« Respuesta #1 : 05/05/2017, 17:12:24 pm »

Hola

Buenas tardes, Estoy terminando un proyecto en C++ que debo enviar antes de las 12 de la noche de hoy, el programa lee dos archivos, estudiantes y materias, cada uno ordenado, y permite recibir entradas de comandos para consultar información.
El problema lo tengo con lo que ocurre al introducir el comando "listarCreditos" que imprimirá los números de cédula de cada estudiante y al lado el total de sus créditos inscritos, (en la UCV cada materia vale una cantidad de Unidades Créditos), según mi lógica el programa debería funcionar sin problemas, pero soy nuevo en C++, y cuando introduzco el comando, en vez de hacer lo que quiero q haga el programa se paraliza, guardé la información necesaria para ese comando en dos arreglos q serán recorridos y comparados para dar como salida lo q se quiere. Revisé q los arreglos se llenan.

Puede que haya un problema al convertir string a int, pero el compilador dice q todo está perfecto. Los arreglos ya están llenos anteriormente, si necesitan q les de el codigo completo me dicen
 Aquí el código resumido :
 \textrm{

int main(){
string nmaterias,nestudiantes,comando,Generos;
   vector<string>,arregloEstudiantes, arregloMaterias;
   int i,j,
int largoE=sizeof(arregloEstudiantes);
int largoM=sizeof(arregloMaterias);
while(true){
   getline(cin,comando);

    if(comando == "listarCreditos"){// AQUI Comando que falta
        int suma=0;
        int cedula=0;
        for(j=0;j<largoE;j++){
            if(atoi(arregloEstudiantes[j].c_str())>=1000000){ //CEDULA
                int cedula=atoi(arregloEstudiantes[j].c_str());
                }
            for(i=1;i<largoM;i+2){
                if(arregloEstudiantes[j]==arregloMaterias[i-1]){
                    string resultado=arregloMaterias;
                    suma+=atoi(resultado.c_str());
                    }
                }
            if(atoi(arregloEstudiantes[j+1].c_str())>1000000){
                cout<<cedula<<" "<<suma<<endl;
                cedula=0;suma=0;
            }
        }

   }}
return 0;
}

Lo que puse en rojo ¿está bien?

En línea

No te confíes, revisa lo que escribo. Yo también me equivoco.
Odio el autocorrector de Android...
Sagnior
Junior
**

Karma: +0/-0
Desconectado Desconectado

Sexo: Masculino
Venezuela Venezuela

Mensajes: 39


Ver Perfil
« Respuesta #2 : 05/05/2017, 17:40:08 pm »

Hola, Sí, está correcto  :sonrisa_amplia:

Discupen que no había entendido el mensaje. :llorando:
En línea
luis
Pleno*
*****

Karma: +1/-0
Desconectado Desconectado

Sexo: Masculino
Uruguay Uruguay

Mensajes: 304


Ver Perfil
« Respuesta #3 : 05/05/2017, 17:49:28 pm »

Hola, Sí, está correcto  :sonrisa_amplia:

Creo que ingmarov te señaló bien el error. Escrito como está, ese for no puede terminar nunca porque i no se modifica.

saludos

luis
En línea
Sagnior
Junior
**

Karma: +0/-0
Desconectado Desconectado

Sexo: Masculino
Venezuela Venezuela

Mensajes: 39


Ver Perfil
« Respuesta #4 : 05/05/2017, 17:56:53 pm »

Jajajaja pedazo de error de novato :BangHead: :BangHead: , Gracias a ambos! :cara_de_queso:
En línea
Páginas: [1]   Ir Arriba
  Imprimir  
 
Ir a:  

Impulsado por MySQL Impulsado por PHP Powered by SMF 1.1.4 | SMF © 2006, Simple Machines LLC XHTML 1.0 válido! CSS válido!