Mostrando entradas con la etiqueta Free Pascal. Mostrar todas las entradas
Mostrando entradas con la etiqueta Free Pascal. Mostrar todas las entradas

lunes, 23 de septiembre de 2024

■ Pascal_025 ► Pedir un número y mostrarlo con letra

Ejercicio 025: Perdir un número entre 1 y 100 y mostrarlo con letra.

Entrada: Un número entero entre 1 y 100.

Salida: El número con letra.


Program Pascal_025;
uses
    crt;
var
    numeros : array[1..28] of string;
    decenas : array[1..8] of string;
    num : integer;
Begin
    numeros[1]  := 'uno';
    numeros[2]  := 'dos';
    numeros[3]  := 'tres';
    numeros[4]  := 'cuatro';
    numeros[5]  := 'cinco';
    numeros[6]  := 'seis';
    numeros[7]  := 'siete';
    numeros[8]  := 'ocho';
    numeros[9]  := 'nueve';
    numeros[10] := 'diez';
    numeros[11] := 'once';
    numeros[12] := 'doce';
    numeros[13] := 'trece';
    numeros[14] := 'catorce';
    numeros[15] := 'quince';
    numeros[16] := 'dieciséis';
    numeros[17] := 'diecisiete';
    numeros[18] := 'dieciocho';
    numeros[19] := 'diecinueve';
    numeros[20] := 'veintiuno';
    numeros[21] := 'veintidós';
    numeros[22] := 'veintitrés';
    numeros[23] := 'veinticuatro';
    numeros[24] := 'veinticinco';
    numeros[25] := 'veintiséis';
    numeros[26] := 'veintisiete';
    numeros[27] := 'veintiocho';
    numeros[28] := 'veintinueve';
    
    decenas[1] := 'veinte';
    decenas[2] := 'treinta';
    decenas[3] := 'cuarenta';
    decenas[4] := 'cincuenta';
    decenas[5] := 'sesenta';
    decenas[6] := 'setenta';
    decenas[7] := 'ochenta';
    decenas[8] := 'noventa';
    
    WriteLn('Ingresa un número');
    ReadLn(num);
    
    WriteLn('El número con letra es:');
    if (num < 30) then begin
        if (num < 20) then begin
            WriteLn(numeros[num]);
        end
        else begin
            if (num > 20) then begin
                WriteLn(numeros[num - 1]);
            end
            else begin
                WriteLn(decenas[1]);
            end;
        end;
    end
    else begin
        if (num < 100) then begin
            Write(decenas[num div 10 - 1]);
            if (num mod 10 > 0) then begin
                WriteLn(' y ', numeros[num mod 10]);
            end;
        end
        else begin
            if (num > 100) then begin
                WriteLn('Número fuera de rango');
            end
            else begin
                WriteLn('Cien');
            end;
        end;
    end;
End.



■ En otros lenguajes:
     • Pseudocódigo
     • C#_025
     • Java_025 ✓
     • Python_025

■ Pascal_024 ► Generar n números aleatorios

Ejercicio 024: Generar "n" números altearorios.

Entrada: Cantidad de números a generar y número más alto.

Salida: Los "n" números aleatorios.


Program Pascal_024;
uses
    crt;
var
    n, max, aleatorio, i : integer;
Begin
    clrscr;
    WriteLn('¿Cuántos números aleatorios serán?');
    ReadLn(n);
    WriteLn('¿Cuál será el número más alto?');
    ReadLn(max);
    
    for i:=1 to n do
    begin
        aleatorio := random(max);
        WriteLn(aleatorio);
    end;
End.

■ Pascal_023 ► Leer un número entero y mostrarlo al revés

Ejercicio: Solicitar un número entero al usuario y mostrarlo al revés.

Entrada: Un número entero.

Salida: El número al revés.


Program Pascal_023;
uses
    crt, Math;
var
    num, digitos, i : longint;
Begin
    clrscr;
    WriteLn('Ingresa un número');
    ReadLn(num);
    
    digitos := (trunc(ln(abs(num)) / ln(10))) + 1;
    Write(num mod 10);
    for i:=1 to digitos - 1 do
    begin
        num := num div 10;
        Write(num mod 10);
    end;
End.

■ Pascal_022 ► Decir si un número es capicúa

Ejercicio 022: Leer un número y decir si es capicúa.

Entrada: Un número entero.

Salida: Decir si es capicúa o no.

Un número es capicúa cuando se puede leer igual de izquierda a derecha que de derecha a izquierda, ejemplo: 123321 o 11511.


Program Pascal_022;
uses
    crt;
var
    numero : string;
    i : integer;
    esCapicua : boolean;
Begin
    clrscr;
    esCapicua := true;
    WriteLn('Ingresa el número');
    ReadLn(numero);
    
    for i:=1 to length(numero) div 2 do
    begin
        if (numero[i] <> numero[length(numero) - (i - 1)]) then
        begin
            esCapicua := false;
        end;
    end;
    
    if esCapicua then
        WriteLn('El número es capicúa')
    else
        WriteLn('El número no es capicúa');
End.

■ Pascal_021 ► Sumar los dígitos de un número entero

Ejercicio 021: Solicitar un número entero y sumar sus dígitos.

Entrada: Un número entero.

Salida: La suma de sus dígitos.


Program Pascal_021;
uses
    crt;
var
    numero, suma, i : integer;
begin
    WriteLn('Ingresa un número');
    ReadLn(numero);
    
    suma := numero mod 10;
    while numero > 9 do
    begin
        numero := numero div 10;
        suma := suma + numero mod 10;
    end;
    WriteLn(suma);
    ReadKey();
End.


Este ejercicio se resuelve mod y div, que devuelven el residuo y la parte entera del número respectivamente, por ejemplo:
n := 123
WriteLn(n mod 10);
WriteLn(n div 10);

Imprimirá:
3
12

■ Pascal_016 ► Multiplicación de dos matrices m*m

Ejercicio 016: Multiplicar dos matrices mxm.

Entrada: Dos matrices m*m, donde m = 3.

Salida: Las matrices multiplicadas.


Program Pascal_016;
uses
    crt;
var
    filas, columnas, i, j, k, res, m: integer;
    matrizA : array[1..3,1..3] of integer;
    matrizB : array[1..3,1..3] of integer;
    matrizAB : array[1..3,1..3] of integer;
Begin
    m := length(matrizA);
    WriteLn('Las matrices serán ', m, '*', m);
    filas := length(matrizA);
    columnas := length(matrizA);
  
    {Se llenan las matrices}
    WriteLn('Ingresa los números de las matrices');
  
    WriteLn('Matriz A');
    for i:= 1 to filas do
    begin
        for j:=1 to columnas do
        begin
            WriteLn('Ingresa el valor de ', i, '-', j);
            ReadLn(matrizA[i][j]);
        end;
    end;
  
    WriteLn('Matriz B');
    for i:= 1 to filas do
    begin
        for j:=1 to columnas do
        begin
            WriteLn('Ingresa el valor de ', i, '-', j);
            ReadLn(matrizB[i][j]);
        end;
    end;
  
    {Se multiplican las matrices}
    for i:= 1 to filas do
    begin
        for j:=1 to columnas do
        begin
            res := 0;
            for k:=1 to filas do
            begin
                res := res + matrizA[i][k] * matrizB[k][j];
            end;
            matrizAB[i][j] := res;
        end;
    end;
  
    {Se muestra la matriz multiplicada}
    WriteLn('Matriz A*B');
    for i:= 1 to filas do
    begin
        for j:=1 to columnas do
        begin
            Write(matrizAB[i][j], ' - ');
        end;
        WriteLn();
    end;
    ReadKey();
end.