ayuda con pseudocodigo

Iniciado por johnnyBsc17, 2 Octubre 2011, 17:29 PM

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

johnnyBsc17

se tienen registradas las calificaciones obtenidas en un examen por 50 estudiantes. los datos son cal1,cal2,......cal50, dond cal es un numero entero comprendido entre los valores de 0y 10 (0<=cal,0<=10).
escriba un programa q calcule e imprima la frecuencia de cada uno de los posibles valores.
la salida del progrma debe ser como se muestra acontinuacion:

--------calificacion-------- ------frecuencia--------
0 >>>>>>>>>>>>> 1 ALUMNOS
1 >>>>>>>>>>>>> ....
2 >>>>>>>>>>>>> ....
3 >>>>>>>>>>>>> 4 ALUMNOS
4 >>>>>>>>>>>>> 2 ALUMNOS
.. >>>>>>>>>>>>> .......
10 >>>>>>>>>>>>> 3 ALUMNOS





ayudenme si puedo hacerlo de una forma mas facil o resumida

FRECUENCIA_NOTAS
estudiante<-1;
cal <-0;
con0<-0;
con1<-0;
con2<-0;
con3<-0;
con4<-0;
con5<-0;
con6<-0;
cont7<-0;
cont8<-0;
con9<-0;
con10<-0;

Escribir "calficaciones Alumnos";
  Para estudiante<-1 Hasta 50 Hacer
   Repetir
    Escribir "ingrese la nota del estudiante ", estudiante;
    Leer notas;
   Hasta Que (cal >= 0) & (cal <=10)
    Si cal = 0 Entonces
      con0<-con0 + 1;
    Si cal = 1 Entonces
      con1<-con1 + 1;
    FinSi
    Si cal = 2 Entonces
      con2<-con2 + 1;
    FinSi
    Si cal = 3 Entonces
      con3<-con3 + 1;
    FinSi
    Si cal = 4 Entonces
     con4<-con4 + 1;
    FinSi
    Si cal = 5 Entonces
     con5<-con5 + 1;
    FinSi
    Si cal = 6 Entonces
     con6<-con6 + 1;
    FinSi
    Si cal = 7 Entonces
     con7<-con7 + 1;
    FinSi
    Si cal = 8 Entonces
     con8<-con8 + 1;
    FinSi
    Si cal = 9 Entonces
     con9<-con9 + 1;
    FinSi
    Si cal = 10 Entonces
     con10<-con10 + 1;
    FinSi
  FinPara
Escribir " Calificacion--------Frecuencia ";
Escribir " nota 0 : ", con0;
Escribir " nota 1 : ", con1;
Escribir " nota 2 : ", con2;
Escribir " nota 3 : ", con3;
Escribir " nota 4 : ", con4;
Escribir " nota 5 : ", con5;
Escribir " nota 6 : ", con6;
Escribir " nota 7 : ", con7;
Escribir " nota 8 : ", con8;
Escribir " nota 9 : ", con9;
Escribir " nota 10 :", con10;

FinProceso

Agente Naranja

Si no puedes usar vectores, entonces creo que tu código es adecuado, tienes que leer cada nota y verificar a mano si es 0, 1, 2, 3...etcétera

Saberuneko

#2
Como ligera mejora, para hacer el código un poco más corto, podrías usar un switch/case (según valor)
Su estructura es la siguiente:

Según_Valor: <expresión>
<valor1>: <bloque de instrucción 1>
<valor2>: <bloque de instrucción 2>
<valorn>: <bloque de instrucción n>
Por_Defecto: <bloque de instrucción por defecto>
Fin_Según_Valor


Donde la variable a considerar en tu caso, sería la nota.
En "valorn" va la nota en cuestión, y en órdenes incrementarías el contador en una unidad
"Defecto" es la acción a tomar en caso de que no se cumpla ninguno de los otros casos, por ejemplo, si alguien introdujese como nota un 11, podrías hacer que el caso por defecto dijese "la nota introducida es errónea".

Más o menos te quedaría algo así:

Escribir "calficaciones Alumnos";
 Para estudiante<-1 Hasta 50 Hacer
  Repetir
   Escribir "ingrese la nota del estudiante ", estudiante;
   Leer notas;
  Hasta Que (cal >= 0) & (cal <=10)

Segun_Valor(cal)
0:
con0<-con0 + 1
1:
con1<-con1 + 1
2:
con2<-con2 + 1
3:
con3<-con3 + 1
4:
con4<-con4 + 1
5:
con5<-con5 + 1
6:
con6<-con6 + 1
7:
con7<-con7 + 1
8:
con8<-con8 + 1
9:
con9<-con9 + 1
10:
con10<-con10 + 1
fin_segun_valor

   FinSi
 FinPara
Escribir " Calificacion--------Frecuencia ";
Escribir " nota 0 : ", con0;
Escribir " nota 1 : ", con1;
Escribir " nota 2 : ", con2;
Escribir " nota 3 : ", con3;
Escribir " nota 4 : ", con4;
Escribir " nota 5 : ", con5;
Escribir " nota 6 : ", con6;
Escribir " nota 7 : ", con7;
Escribir " nota 8 : ", con8;
Escribir " nota 9 : ", con9;
Escribir " nota 10 :", con10;


Un saludo.