elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Arreglo funciones
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Arreglo funciones  (Leído 1,759 veces)
estuBiomed

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Arreglo funciones
« en: 19 Noviembre 2018, 23:51 pm »

quin puede ayudarme no tengo idea ni de como iniciar
Se desea un programa que lea las notas de tres parciales para cinco estudiantes, usted debe almacenar las notas, el id de los estudiantes y los nombres de los estudiantes. El programa debe realizar las siguientes operaciones:



Calcular el promedio de las notas.
Asignar la literal según el promedio.
Buscar el nombre, las notas, el promedio y la literal para el número id estudiantes que indique el usuario.
Presentar el nombre, las notas, el promedio y la literal del estudiante o los estudiantes que tienen el promedio más alto.
Presentar el nombre, las notas, el promedio y la literal del estudiante o los estudiantes que tienen el promedio más bajo.
Listar el nombre, las notas, el promedio y la literal del estudiante o los estudiantes en orden de menor a mayor.


En línea

K-YreX
Moderador
***
Desconectado Desconectado

Mensajes: 1.008



Ver Perfil
Re: Arreglo funciones
« Respuesta #1 en: 20 Noviembre 2018, 00:06 am »

No estamos para hacer tareas sino para resolver dudas. Tienes que especificar cual es tu duda o en que quieres que te ayudemos a avanzar, no sirve de nada que mandes el ejercicio entero y te hagamos el programa nosotros.

Si quieres puedes comentarme que partes del programa sí sabrías hacer o que conocimientos tienes (ya que dudo que hayas dado clases o o estructuras). O como llevas los arrays (la forma más sencilla es usar arrays de tamaño 5 para cada variable que te diceno usar variables sueltas para los nombres, etc y las notas guardarlas en arrays de tamaño 3, tú eres el programador, tú decides). Y si tienes algo de código hecho puedes insertarlo para que veamos cómo lo llevas (eso sí, entre etiquetas GeSHi), aunque sea una simple entrada de datos porque ni siquiera sé si estás programando en C o C++.


« Última modificación: 20 Noviembre 2018, 00:10 am por YreX-DwX » En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
Beginner Web


Desconectado Desconectado

Mensajes: 634


youtu.be/0YhflLRE-DA


Ver Perfil
Re: Arreglo funciones
« Respuesta #2 en: 20 Noviembre 2018, 03:32 am »

Primero que nada revisa cuantas variables vas a utilizar y las estructura de datos que vas a emplear para manejar esa informacion, pero bueno te ayudare, utiliza una estructura de tipo alumno para los alumnos y como tu profe te pide solamente para 5 alumnos vamos a utilizar algo muy sencillo que es un arreglo de registros o de structs como quieras llamarlo que almacenara 5 registros ok?
Código
  1. const int MAXALUMNOS=5;
  2.  
  3. typedef struct alumno{
  4. int id;
  5. string nombre_alumno;
  6. int primer_parcial;
  7. int segundo_parcial;
  8. int tercer_parcial;
  9. int promedio;
  10. };
  11.  
  12. typedef alumno alumnos[MAXALUMNOS];
  13.  
  14. void registrar_alumno_y_sus_notas(alumnos &a, int &posicion_en_el_arreglo)//Donde posicion es igual a -1
  15. {
  16. if(posicion_en_el_arreglo>MAXALUMNOS-1)
  17. cout<<"No hay espacio, debe usar estructuras dinamicas"<<endl;
  18. else{
  19. posicion_en_el_arreglo++;//Aca se mueve una posicion para indicar que ahora esta en 0 que es la posicion inicial del arreglo de registros
  20. cout<<"Ingrese Id del estudiante: ";
  21. cin>>a[i].id;
  22. cout<<"Ingrese notas de los parciales"<<endl;
  23. cin>>a[i].....//Me aburrí... bueno y así
  24. //Bueno promedio se deberia calcularse solo y almacenarse
  25. ...
  26. }
  27. }
  28.  
  29. void mostrar_notas_finales_de_los_alumnos(alumnos a, int posicion_en_el_arreglo)
  30. {
  31. int i;
  32. if(posicion_en_el_arreglo<0)//Esto quiere decir que todavia no se han registrado alumnos
  33. cout<<"Todavia no se han registrado alumnos"<<endl;
  34. else{
  35. for(i=0;i<=posicion_en_el_arreglo;i++){
  36. cout<<"Id: "<<a[i].id<<endl;
  37. cout<<...//Me volvi  a aburrir
  38. switch(a[i].promedio){
  39. case 1 ... 6: cout<<"Desaprobado"<<endl;break;
  40. case 7 ... 10: cout<<"Aprobado"<<endl;break;
  41. }
  42. cout<<endl;//Aca otro salto de linea por las dudas
  43. }
  44. }
  45. }
Lo otros metodos ya puedes hacerlo por ti mismo
« Última modificación: 20 Noviembre 2018, 15:41 pm por Beginner Web » En línea

7w7
K-YreX
Moderador
***
Desconectado Desconectado

Mensajes: 1.008



Ver Perfil
Re: Arreglo funciones
« Respuesta #3 en: 20 Noviembre 2018, 09:16 am »

Código
  1. typedef struct alumno{
  2. int id;
  3. string nombre_alumno;
  4. int primer_parcial;
  5. int segundo_parcial;
  6. int tercer_parcial;
  7. int promedio;
  8. };

Desde mi humilde opinión yo usaría un array para las notas. Pero bueno eso ya es cosa de generalizar el programa para meter más notas.

Código
  1. switch(a[i].promedio){
  2.    case 1 ... 6: cout<<"Desaprobado"<<endl;break;
  3.    case 7 ... 10: cout<<"Aprobado"<<endl;break;
  4. }
  5. }

Y aquí creo que es más fácil hacerlo con un <if> ya que las condiciones no van alternadas:
Código
  1. if(promedio < 5)
  2.    cout << "Aprobado" << endl;
  3. else
  4.    cout << "Suspenso" << endl;
Y... no sabía que hay quien considera el aprobado a partir del 7. :xD
En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Arreglo funciones
« Respuesta #4 en: 20 Noviembre 2018, 10:14 am »

Lo veo bien. El único cambio que haría sería quitar el promedio de la estructura porque siempre debe depender de los parciales. Si se guarda como un dato se podría modificar y por tanto falsear. Si no existe se obliga a calcularlo cada vez que sea necesario y por tanto es una garantía más de que sea el que toca.
En línea

K-YreX
Moderador
***
Desconectado Desconectado

Mensajes: 1.008



Ver Perfil
Re: Arreglo funciones
« Respuesta #5 en: 20 Noviembre 2018, 10:40 am »

Lo veo bien. El único cambio que haría sería quitar el promedio de la estructura porque siempre debe depender de los parciales. Si se guarda como un dato se podría modificar y por tanto falsear. Si no existe se obliga a calcularlo cada vez que sea necesario y por tanto es una garantía más de que sea el que toca.
Cierto, se me olvidó comentarlo. Cuando hice el programa hice una función que recibiendo un alumno como parámetro te calcule la media en vez de guardar esta como un miembro. Además usé <double> en lugar de <int> tanto para las notas como para la media. Y también había pensado en comprobar que el id del alumno que estás guardando no esté repetido; para ello recorrer el array de alumnos que ya existen y comprobar sus id's con el nuevo.

Sin embargo creo que quien creó el post no debe de haber llegado a estudiar una <struct> o <class> porque de haberlo hecho este ejercicio sería muy sencillo de resolver.
Aquí es donde viene mi cuestión... De no hacerlo usando <struct> ni <class>:
Opción 1:
Código
  1. const int NUM_ALUMNOS = 5;
  2. const int NUM_NOTAS = 3;
  3. string nombres[NUM_ALUMNOS];
  4. int ids[NUM_ALUMNOS];
  5. double notas[NUM_ALUMNOS][NUM_NOTAS];

Opción 2:
Código
  1. const int NUM_NOTAS = 3;
  2. string alumno1, alumno2, ..., alumno5;
  3. int id1, id2, id3, id4, id5;
  4. double notas1[NUM_NOTAS], notas2[NUM_NOTAS],..., notas5[NUM_NOTAS];

Yo elegiría la primera porque es más general y haciendo una sola modificación puedes cambiar la cantidad de alumnos y notas/alumno. Sin embargo, creo que cuando yo empecé con estos ejercicios me habrían dicho que lo hiciese como la segunda ya que es más simple (aunque más limitada).
En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
Beginner Web


Desconectado Desconectado

Mensajes: 634


youtu.be/0YhflLRE-DA


Ver Perfil
Re: Arreglo funciones
« Respuesta #6 en: 20 Noviembre 2018, 14:40 pm »

Desde mi humilde opinión yo usaría un array para las notas. Pero bueno eso ya es cosa de generalizar el programa para meter más notas.

Y aquí creo que es más fácil hacerlo con un <if> ya que las condiciones no van alternadas:
Código
  1. if(promedio < 5)
  2.    cout << "Aprobado" << endl;
  3. else
  4.    cout << "Suspenso" << endl;
Y... no sabía que hay quien considera el aprobado a partir del 7. :xD

Se aprueba con 7, y yo tampoco sabia que con menos de 5 se aprobaba, tenias sueño lo se, asi te queria agarrar  ;-)

El campo promedio se calcula solo (atributo derivado) ,al registrar un alumno los valores de los parciales y promedio se inicializan en 1 y promedio nunca puede ser menor a 1, y bueno es lo que su profesor le pidio  para que meter mas cosas, yo usaria archivos para ir metiendo las notas a medida que pase el tiempo y eliminaria la  redundancia la tabla alumno(parciales) y asi dejar esa tabla normalizada, para meter mas notas digo y no repetir los campos, lo correcto es usar 2 tablas de N:M y el infaltable contador que nos dice por cuanto tenemos que dividir sus notas para sacar el promedio, pero como dije anteriormente ese calculo debe realizarse y almacenarse solo, ahi va codigo/algoritmo ;-)
ALUMNO-|------|<-ALUMNO-NOTA->|-------|-NOTA
« Última modificación: 20 Noviembre 2018, 16:46 pm por Beginner Web » En línea

7w7
K-YreX
Moderador
***
Desconectado Desconectado

Mensajes: 1.008



Ver Perfil
Re: Arreglo funciones
« Respuesta #7 en: 20 Noviembre 2018, 23:05 pm »

Se aprueba con 7, y yo tampoco sabia que con menos de 5 se aprobaba, tenias sueño lo se, asi te queria agarrar  ;-)
Cierto, fallo mío, he puesto el <if> al revés. Pero sí que es cierto que al menos en España a partir del 5 es un aprobado. No sé en qué lugares se aprueba a partir del 7. :huh:
En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines