24-10-2012 22:22
@Babul, puede. Yo estuve estudiando Python por mi cuenta y riesgo mientras estaba en la ESO, y es muuuuuuuuuuuy sencillo.
Lo de interpretado... Es un lenguaje normal, lo que pasa es que no "compila" persé. Traduce cada línea de código a medida que la lee y la ejecuta, no como Java y estos que lo traducen de golpe y luego ejecutan.
Sobre el programa
Lo he implementado directamente en Ada, pero no me da lo que "se supone" que debe dar, aunque no veo en qué estoy fallando.
Me da 166833 (la suma)
Lo de interpretado... Es un lenguaje normal, lo que pasa es que no "compila" persé. Traduce cada línea de código a medida que la lee y la ejecuta, no como Java y estos que lo traducen de golpe y luego ejecutan.
Sobre el programa
Lo he implementado directamente en Ada, pero no me da lo que "se supone" que debe dar, aunque no veo en qué estoy fallando.
Código:
WITH Ada.Integer_Text_IO;
USE Ada.Integer_Text_IO;
WITH Ada.Text_IO;
USE Ada.Text_IO;
PROCEDURE Suma_M3_M5_Hasta_1000 IS
┬á --- Declaración de variables ("---" es para comentarios en Ada. Vale con un simple -)
  I,
  SumaMult,
  ContM3,
  ContM5,
  ContMC,
  M3,
  M5      : Integer;
  Check3,
  Check5 : Boolean;
BEGIN
┬á --- Asignación a variables
  SumaMult := 0;
  ContM3 := 0;
  ContM5 := 0;
  ContMC := 0;
  M3 := 0;
  M5 := 0;
  I := 1;
  Check3 := False;
  Check5 := False;
  --- Calculador
  WHILE Check3 /= True OR Check5 /= True LOOP
┬á ┬á ┬á --- Miramos que los múltiplos no sean mayores que 1000.
     
      IF (3*I) >= 1000 THEN
        M3 := 0;
        Check3 := True;
        ELSE
        M3 := 3*I;
        ContM3 := ContM3 + 1;
      END IF;
      IF (5*I) >= 1000 THEN
        M5 := 0;
        Check5 := True;
        ELSE
        M5 := 3*I;
        ContM5 := ContM5 + 1;
      END IF;
   
   
┬á ┬á ┬á --- Hacemos el cálculo
   
      IF M3 = M5 and Check3 = False and Check5 = False THEN
        SumaMult := SumaMult + M3;
        ContMC := ContMC + 1;
      ELSE
        SumaMult := SumaMult + M3 + M5;
      END IF;
     
┬á ┬á ┬á --- I es la variable que indica el múltiplo
      I := I + 1;
  END LOOP;
┬á --- Solución
┬á Put("La suma de los múltiplos de 3 y los múltiplos de 5 es: "); Put(SumaMult);
  New_Line;
┬á Put("El número de múltiplos de 3 menores que 1000 es: "); Put(ContM3);
  New_Line;
┬á Put("El número de múltiplos de 5 menores que 1000 es: "); Put(ContM5);
  New_Line;
┬á Put("El número de múltiplos comunes de 3 y 5 es: "); Put(ContMC);
  END Suma_M3_M5_Hasta_1000;
Me da 166833 (la suma)