Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Soumag_programa en 31 de Agosto 2020, 01:29

Título: Algoritmo PSEINT crear grupos con operador módulo división entera sobrantes mod
Publicado por: Soumag_programa en 31 de Agosto 2020, 01:29
Hola, estoy tratando de resolver en PSEINT el siguiente problema de algoritmia

En una granja hay un total 200 animales de los cuales hay vacas, cabras y ovejas, el dueño le pide a u obrero que recorra la granja y cuente todos los animales que están todos revueltos, pero los resultados se los de en grupos de a 19 animales por especie, El conteo se debe hacer uno por uno ya que el dueño también quiere saber de cada especie cuántos de ellos  hay enfermos. Realice un programa que en cada vez que se registre un animal nos muestre la información solicitada (cuantos grupos y cuantos sobrantes (que aún no ajustan un grupo completo) por especie, cuantos sanos y cuantos enfermos por especie.

De este algoritmo ya tengo la mayoría que sería esto:

Código: [Seleccionar]
Algoritmo Trabajo_final_de_periodo
Definir especie, estado Como Caracter

para i=1 hasta 200 Hacer
Escribir "Animal N°",i
Escribir "¿Que tipo de especie es?"
Leer especie
Escribir "¿Esta sana o enferma?"
Leer estado
Si especie = "vaca" & estado = "sana" Entonces
vacas = vacas +1
v_sanas <- v_sanas + 1
Sino
si especie = "vaca" & estado = "enferma" Entonces
vacas = vacas +1
v_enfermas = v_enfermas + 1
FinSi
FinSi

Si especie = "cabra" & estado = "sana" Entonces
cabras = cabras +1
c_sanas <- c_sanas + 1
Sino
si especie = "cabra" & estado = "enferma" Entonces
cabras = cabras +1
c_enfermas = c_enfermas + 1
FinSi
FinSi

Si especie = "oveja" & estado = "sana" Entonces
ovejas <- ovejas + 1
o_sanas <- o_sanas + 1
Sino
si especie = "oveja" & estado = "enferma" Entonces
ovejas <- ovejas + 1
o_enfermas = o_enfermas + 1
FinSi
FinSi
Limpiar Pantalla
FinPara

Escribir "~VACAS~"
Escribir  "Hay ",vacas, " vacas"
Escribir "Enfermas: ", v_enfermas
Escribir "Sanas: ", v_sanas
Escribir "~CABRAS~"
Escribir  "Hay ",cabras, " cabras"
Escribir "Enfermas: ", c_enfermas
Escribir "Sanas: ", c_sanas
Escribir "~OVEJAS~"
Escribir  "Hay ",ovejas, " ovejas"
Escribir "Enfermas: ", o_enfermas
Escribir "Sanas: ", o_sanas

FinAlgoritmo


Lo único que me falta es el acumulador de grupos y lo de sacar los sobrantes, que ya lo he intentado pero no se me ocurre otra manera, serian tan amables si me ayudan, por favor y Gracias!
Título: Re:Ayúdame con este algoritmo en Pseint
Publicado por: Kabuto en 31 de Agosto 2020, 11:58
Hola.
Cuando analizas qué animal es, y su estado, no haría falta preguntar dos veces el tipo de animal:

Por ejemplo, aquí preguntas dos veces si es vaca
Citar
      Si especie = "vaca" & estado = "sana" Entonces
         vacas = vacas +1
         v_sanas <- v_sanas + 1
      Sino
         si especie = "vaca" & estado = "enferma" Entonces
            vacas = vacas +1
            v_enfermas = v_enfermas + 1
         FinSi
      FinSi

Se puede hacer preguntándolo una sola vez.
Y para evaluar el estado, tampoco hace falta preguntar si es "sana" y si no lo es, preguntar si es "enferma"
Solo hay dos posibilidades, así que si no es "sana", pues obligatoriamente será "enferma"
Citar
      Si especie = "vaca" Entonces
         vacas = vacas +1
         Si estado = "sana" Entonces
             v_sanas <- v_sanas + 1
         Sino
             v_enfermas = v_enfermas + 1   
         FinSi
      FinSi

Funcionar, funciona igual de bien que como lo has hecho tú. Prácticamente es lo mismo, pero evitas preguntas redundantes y el código queda un poco más simplificado.


Sobre los grupos, si divides entre 19 el total contado de cada animal, sabrás cuantos grupos hay.

Supón que has contado 43 vacas, si hacemos una división entera, es decir, ignoramos la parte decimal:
43 / 19 = 2
Pues hay 2 grupos de 19 vacas.

El sobrante, lo obtienes sacando el resto o módulo de esa misma división:
43 MOD 19  = 5
Hay un sobrante de 5 vacas.

Así que con vacas / 19 tendrás los grupos de vacas, y con vacas MOD 19 el sobrante.