fbpx

Ayuda proyecto 5 Cadenas.

Etiquetado: 

  • Ayuda proyecto 5 Cadenas.

    Posted by Paola Vega Oviedo on 9 enero, 2020 en 11:20 am

    Hola, subo lo que llevo de mi proyecto 5 de cadenas. Esto porque surgió una duda a la hora de hacerlo ya que corre bien pero si agrego las variables de sum y prom para sacar el promedio final del grupo se supone no debería afectar al lo que ya había de código pero si le afecta. Si hay alguna sugerencia estaría genial.

    //Proyecto 5 Cadenas. Guardar datos de alumnos de una escuela. //

    #include<iostream>

    #include<string.h>

    using namespace std;

    int main(){

    char nombre[3][12], apellido[3][12], materia[5][10];

    float cal[3][5], suma[3], promedio[3], sum = 0.0, prom = 0.0;

    cout<<“Ingrese el nombre y apellido de los alumnos: “<<endl<<endl;

    for(int i = 0; i < 3; i++){

    cout<<“Nombre alumno “<<i+1<<“. “;

    cin>>nombre[i];

    cout<<“Apellido alumno “<<i+1<<“. “;

    cin>>apellido[i];

    cout<<endl;

    }

    for(int j = 0; j < 5; j++){

    cout<<“Ingrese materia “<<j+1<<“.-“;

    cin>>materia[j];

    }

    cout<<endl;

    for(int i = 0; i < 3; i++){

    cout<<“Alumno “<<nombre[i]<<endl;

    for(int j = 0; j < 5; j++){

    cout<<“Ingrese calificacion de la materia “<<materia[j]<<“: “;

    cin>>cal[i][j];

    suma[i] += cal[i][j];

    promedio[i] = suma[i]/5.0;

    sum += promedio[i];

    }

    cout<<“Promedio “<<i+1<<” “<<promedio[i]<<endl;

    cout<<endl;

    }

    prom = sum/3.0;

    cout<<endl<<“El promedio final del grupo es: “<<prom;

    return 0;

    }

    Paola Vega Oviedo respondido 2 años, 4 meses 3 Miembros · 7 Respuestas
  • 7 Respuestas
  • Angel Sánchez Espinoza

    organizador
    9 enero, 2020 en 12:53 pm

    Hola Paola, aquí  los detalles que encontré en tu código:

    1.- Al inicio declarar un arreglo que se llama suma[] pero en tus operaciones intentas usar este arreglo como una variable normal suma por esta razón te sale nan.

    2.- El arreglo suma[] debería ser una variable en vez de un arreglo ya que no guardar mas valores, solo lo usas para sacar el promedio.

    3.- Esta variable suma debería de usarse solo para un alumno, y despues tomar el valor cero para empezar de nuevo, y para el promedio general podrías usar una variable que se llama sumaGeneral que vaya sumando los promedios. Esta la usas al final para sacar el promedio general.

    4.- En tu for anidado intentas sacar el promedio, pero esto es después de recoger los valores de las materias, osea en el primer ciclo.

    Te dejo este código, no esta optimizado, solo es para que te des cuenta que cosas puedes cambiar, una vez que lo entiendas hay que mejorarlo:

    //Proyecto 5 Cadenas. Guardar datos de alumnos de una escuela. //

    #include<iostream>

    #include<string.h>

    using namespace std;

    int main(){

    char nombre[3][12], apellido[3][12], materia[5][10];

    float cal[3][5], suma, promedio[3], sum = 0.0, prom = 0.0, sumaGeneral = 0.0;

    cout<<“Ingrese el nombre y apellido de los alumnos: “<<endl<<endl;

    for(int i = 0; i < 2; i++){

    cout<<“Nombre alumno “<<i+1<<“. “;

    cin>>nombre[i];

    cout<<“Apellido alumno “<<i+1<<“. “;

    cin>>apellido[i];

    cout<<endl;

    }

    for(int j = 0; j < 2; j++){

    cout<<“Ingrese materia “<<j+1<<“.-“;

    cin>>materia[j];

    }

    cout<<endl;

    a

    for(int i = 0; i < 2; i++){

    int j = 0;

    cout<<“Alumno “<<nombre[i]<<endl;

    for(j = 0; j < 2; j++){

    cout<<“Ingrese calificacion de la materia “<<materia[j]<<“: “;

    cin>>cal[i][j];

    suma += cal[i][j];

    //promedio[i] = suma[i]/5.0;

    //sum += promedio[i];

    }

    promedio[i] = suma/j;

    cout<<“Promedio “<<i+1<<” “<<promedio[i]<<endl;

    sumaGeneral += promedio[i];

    suma = 0;

    cout<<endl;

    }

    prom = sumaGeneral/2;

    cout<<endl<<“El promedio final del grupo es: “<<prom;

    return 0;

    }    

  • Paola Vega Oviedo

    Miembro
    10 enero, 2020 en 11:45 am

    gracias, ayudó mucho ahora para continuar el programa

  • Paola Vega Oviedo

    Miembro
    10 enero, 2020 en 1:12 pm

    Sólo tengo una última duda en este proyecto, ya está casi terminado pero no se como hacer la ultima instrucción que dice:

    “Una vez que se muestre en pantalla, darle la opción al usuario si todos los datos están correctos, y de no ser así se pueda modificar el dato erróneo y posteriormente mostrar de nuevo los datos en pantalla ya con los datos correctos.” 

    Tenía pensado meter una sentencia switch y dar opciones al usuario de que quiere modificar pero no se si con eso tendría que poner casi todo el anterior código para que se repita todo y lo haga. 

    • Angel Sánchez Espinoza

      organizador
      10 enero, 2020 en 2:38 pm

      Eso hace referencia a que el usuario puede elegir si terminar el programa o editar un dato. Por ejemplo, cambiarle el nombre a un alumno, tendrías que preguntarle a que numero de alumno se refiere y después modificar se valor. Con una serie de preguntas que guardes en variables puedes editar el valor correcto que el usuario desea modificar. 

  • Paulo Pérez

    Miembro
    14 febrero, 2020 en 12:56 am

    Tenga una duda, ¿Por qué hiciste una matriz en los nombres y apellidos?, es que tuve que hacer lo mismo con mi programa, porque, sino, no me agarraba al poner los datos, simplemente me saltaba mi ciclo. Tú que eres buena en esto, ¿Podrías ayudarme ha explicarme eso, please?

  • Paola Vega Oviedo

    Miembro
    16 febrero, 2020 en 6:28 pm

    Lo dices a la hora de concatenar? Si, creas un nuevo arreglo tipo char para que ahí pegues la cadena nombre y luego puedas concatenar la cadena apellidos porque lo explica un poco en el ejemplo 4 de cadenas. Tu debes tener tu cadena de nombre y aparte tu cadena de apellido porque si solo concatenas strcat(nombre[i],apellido[i]) todo eso se guarda en la cadena “nombre” entonces es más complicado hacer manejo de tus cadenas.
    Para eso creas un tercer arreglo char.
    Aparte igual ya cheque y si pones así el código solo concatenando empieza a pegarlos mal, eso sino sabría decirte por que.

Start of Discussion
0 de 0 respuestas Junio 2018
Ahora