Show Posts - Zenyatta

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - Zenyatta

Pages: [1] 2 3 ... 7
1
Primer Año / Re: Programacion en C
« on: July 28, 2020, 04:31:42 am »
Se supone que a este punto tienen un compilador y un editor instalados para poder compilar y ejecutar desde sus lados.

Ejercicio del PSeInt 3

Leer los 5 números que se ingresan por teclado y calcular su promedio.

Codigo | Compilado x64

//Leer los 5 números que se ingresan por teclado y calcular su promedio.

#include <stdio.h> //Declaramos que headers incluir
#include <math.h>


void main() { // Indicamos que la funcion principal (main) no tiene return value (void)
int input, add; // Inicializamos dos ints con signo (int significa interger). Su tamaño en bytes varia segun el compilador.
// En Real-Mode (x16), son 2 bytes. En protected-mode y extended-mode (x32 y x86) son 4 bytes. En long-mode (x64), son 8 bytes.

float average; // Despues inicializamos un float para el promedio. Floats y Doubles son los unicos tipos de datos que nos permiten tener decimales.

add = 0; // Ponemos la suma total en 0.

printf("Sumatoria de cinco numeros.\n\nIngrese el primer numero para sumar: "); // Le escribimos al usuario de que trata el programa.
// \n significa "carriage return, line feed" o "new line". Hay simbolos especiales que, para utilizarlos, se deben escape-ear con la barra \.

scanf("%d",&input); // obtenemos el ingreso del usuario. Scanf tiene dos parametros (y mas opcionales).
// En el string, se pone el formato de ingreso. Con %d, obtenemos un interger con signo, sin decimales.
// En el segundo parametro, ponemos la direccion de la variable donde vamos a guardar el dato. & indica address
// (o la ubicacion de la memoria donde tenemos alojada la variable).

add = add + input; // Despues sumamos el ingreso a la suma total. Repetimos esto cinco veces.

printf("Ingrese el segundo numero para sumar: ");
scanf("%d",&input);
add = add + input;

printf("Ingrese el tercer numero para sumar: ");
scanf("%d",&input);
add = add + input;

printf("Ingrese el cuarto numero para sumar: ");
scanf("%d",&input);
add = add + input;

printf("Ingrese el quinto numero para sumar: ");
scanf("%d",&input);
add = add + input;

average = (float)add / 5; // convertimos la suma total en un float, lo dividimos por el total (cinco) para obtener el promedio
//y lo almacenamos en la variable average.

average = roundf(average*100); // Redondeamos a 2 decimales corriendo la coma dos lados
average = average / 100; // Corremos la coma 2 lados
input = trunc(average); // Luego recortamos todos los decimales
//printf("%f",average);

if(average == input) //verificamos si el numero tiene decimales (comparando el numero truncado con si mismo)
printf("\nLa sumatoria de los numeros ingresados es %d\nEl promedio es %d\n\n", add, input); // si no tiene decimales, mostrarlo en el printf como int
else
printf("\nLa sumatoria de los numeros ingresados es %d\nEl promedio es %.2f\n\n", add, average); // si tiene decimales, mostrarlo en el printf como float

system("PAUSE"); // ejecutamos un comando de sistema, "PAUSE" en este caso. Si no estuviera esta linea, en cuanto el programa termine, se cierra.
// PAUSE pide que el usuario toque una tecla para continuar (en este caso, continuar al fin del programa y cerrarlo).
} // FInal definitivo del programa


En este codigo, utilizo dos headers (o bibliotecas standard) de C. stdio.h y math.h.
stdio significa Standard I/O (Input/Output). Nos permite utilizar funciones que envian y reciben datos de la consola. printf(); y scanf(); provienen de ahi.
math nos brinda funciones matematicas avanzadas. En este caso, la funcion trunc(); viene de math.h

Inicializamos dos ints con signo (int significa interger). Su tamaño en bytes varia segun el compilador. En Real-Mode (x16), son 2 bytes. En protected-mode y extended-mode (x32 y x86) son 4 bytes. En long-mode (x64), son 8 bytes.

Despues inicializamos un float para el promedio. Floats y Doubles son los unicos tipos de datos que nos permiten tener decimales.

Ponemos la suma total en 0.

Le escribimos al usuario de que trata el programa. \n significa "carriage return, line feed" o "new line". Hay simbolos especiales que, para utilizarlos, se deben escape-ear con la barra \. Si no tuvieramos la barra, se mostraria una n normal. La barra permite al programa interpretarlo como un enter. De los mas frecuentes, estan:
\n - new line
\t - tab
\0 - null character (importantisimo en strings)
\\ - Muestra la barra (muestra solo una)

scanf();
Con scanf, obtenemos el ingreso del usuario. Scanf tiene dos parametros (y mas opcionales). En el string, se pone el formato de ingreso. Con %d, obtenemos un interger con signo, sin decimales. En el segundo parametro, ponemos la direccion de la variable donde vamos a guardar el dato. & indica address (o la ubicacion de la memoria donde tenemos alojada la variable).

Despues sumamos el ingreso a la suma total. Repetimos esto cinco veces.

En la linea 33, convertimos la suma total en un float, lo dividimos por el total (cinco) para obtener el promedio, y lo almacenamos en la variable average.
Luego recortamos todos los decimales menos dos y verificamos si el numero tiene decimales (comparando el numero truncado con si mismo). Si tiene decimales, mostrarlo en el printf como float. Si no, mostrarlo como un interger comun.

Aca ejecutamos un comando de sistema, "PAUSE" en este caso. Si no estuviera esta linea, en cuanto el programa termine, se cierra. PAUSE pide que el usuario toque una tecla para continuar (en este caso, continuar al fin del programa y cerrarlo).



2
dasdasd

3

Ejercicio 50
Link de descarga

Dado un vector con N elementos, buscar los dos elementos mayores.


// Dado un vector con N elementos, buscar los dos elementos mayores.

Algoritmo sin_titulo

Escribir "Dos elementos mayores de Array N";
Escribir "";

Definir max, max1, max2, i como ENTERO;
max1 = 0;
max2 = 0;

Repetir
Escribir "Ingrese el maximo del array " SINSALTAR;
Leer max;

Si max <= 1 Entonces
Escribir "El N debe ser mayor a uno.";
Escribir "";
FinSi
Hasta Que max > 1

Dimension Array[max];

Para i = 0 Hasta max-1 Hacer
Array[i] = ALEATORIO(0,255);
FinPara

Para i = 1 Hasta max-1 Hacer
Si i = 1 Entonces
max1 = Array[0];
max2 = Array[1];
FinSi

Si Array[i] > max1 Entonces
max2 = max1;
max1 = Array[i];
SiNo
Si Array[i] > max2 Entonces
max2 = Array[i];
FinSi
FinSi

FinPara

//Para i = 0 Hasta max-1 Hacer
// Escribir Array[i];
//FinPara

Escribir "";
Escribir "El numero mas grande es ", max2;
Escribir "El numero mas grande que el mas grande es ", max1;

FinAlgoritmo


^ Arriba ^

4
45-49

5
41-45

6
Primer Año / Re: Sistemas Numericos
« on: June 07, 2020, 02:57:44 pm »
Suma, Resta, y Multiplicacion Hexadecimal

Suma Binaria

La suma hexadecimal es medio engorrosa. Como el hexadecimal va de 0 a la F, hay que prestar atencion cuando ocurre un overflow o un underflow.

Teniendo la siguiente operacion:

 0x13
+0x1F


Procedemos como una suma normal PERO RECORDANDO que en esta base, el numero maximo es F.

Como me informaron, no se contar, entonces la foto esta mal. Fijense que 18/16 da resto 2, no 3. El resultado es 0x32. El procedimiento esta bien

Recuerden que si pasan el 15, hay que restar 16 y sumarle 1 al digito siguiente (como en el decimal con el 10, aca con el 16)!

^ Arriba ^

Multiplicacion Binaria

La multiplicacion hexadecimal es igual a la decimal pero en base 16. Es notablemente mas engorrosa para resolver.
Suponiendo el siguiente ejercicio:

    0111
*   0100
    0000
   0000
  0111
+0000
11100
pasando a byte:
001 1100

 0111
*0100
011100
pasando a byte:
001 1100

^ Arriba ^

Resta Hexadecimal


La resta hexadecimal es igual a la resta decimal. Cuando ocurre un underflow, se le suma 16 al numero que le estan restando mas de lo que tiene

7
Primer Año / Re: Sistemas Numericos
« on: June 07, 2020, 11:44:07 am »
Informacion Util

Conversion de Bases
Para convertir un numero a hexadecimal y a octal, conviene primero pasarlo a binario y dividirlo cada 4 bits para hex o cada 3 bits para oct.

Ejemplo:

DEC 1337
BIN 0101 0011 1001

Ahora, lo pasamos a Octal de la siguiente manera:

BIN 0101 0011 1001
BIN 010 100 111 001
OCT  2   4   7   1
OCT 2471
Al tener los numeros divididos cada tres bits, uno puede trabajar directamente con cada trio por separado y juntar el numero final.Ahora, lo pasamos a Hexadecimal con el mismo metodo pero dividiendo cada cuatro:

BIN 0101 0011 1001
HEX 5    3    9
HEX 539
Esta regla es valida para todos los numeros.

Uno se preguntaria (pero la gran mayoria no ¯\_(ツ)_/¯) por que 3 con el octal y 4 con el hexadecimal? La respuesta es simple. El Octal tiene rango del 0 al 7. Los primeros tres bits suman 7. Lo mismo para el hexadecimal. Tiene rango de 0 a la F (o al 15) y los primeros cuatro bits suman 15.

^ Arriba ^

Divisiones Succesivas de 2

Esta es una forma simple. Se agarra un numero y se lo divide por 2. Si la division no tiene decimales, se anota un cero. Si lo tiene, se anota un uno y se descartan los decimales para la siguiente operacion. Al finalizar, se deben INVERTIR EL ORDEN de los bits.

Ejemplo:
420
420/2 = 210
210/2 = 105
105/2 = 52.5
52/2 = 26
26/2 = 13
13/2 = 6.5
6/2 = 3
3/2 = 1.5
1/2 = 0.5
0
_
0
0
1
0
0
1
0
1
1
________69
69/2 = 34.5
34/2 = 17
17/2 8.5
8/2 = 4
4/2 = 2
2/2 = 1
1/2 = 0.5
0
_
1
0
1
0
0
0
1

Invirtiendo el orden de los bits obtenemos:
420 -> 110100100-> 0001 1010 0100
69 -> 1000101 -> 0100 0101
Es un metodo engorroso, no lo recomiendo.

Restas Succesivas de Potencias de 2
Este es el metodo mas rapido y directo (mi favorito <3)

Se deben saber la tabla de los bits, mostrada a continuacion. Yo personalmente me acuerdo hasta el 16 pero no tienen por que saberse tantos. Los primeros 8 alcanzan. Para los demas, usen una calculadora directamente. Total, la mayoria leyendo esto hace 7+5 con la calculadora de todos modos.
Bit NumeroValor del Bit______Bit NumeroValor del Bit
0
20 = 1
______
8
28 = 256
1
21 = 2
______
9
29 = 512
2
22 = 4
______
10
210 = 1024
3
23 = 8
______
11
211 = 2048
______
4
24 = 16
______
12
212 = 4096
5
25 = 32
______
13
213 = 8192
6
26 = 64
______
14
214 = 16384
7
27 = 128
______
15
215 = 32768
16 -> 216 = 65536

Sabiendo esto, procedemos a la conversion.

Se agarra un numero en decimal y se le resta el bit mas grande que se pueda SIN TENER UN RESULTADO NEGATIVO. Si se puede restar, se anota un uno. De lo contrario, un cero.
1337
1337-1024 = 313
1
1337 (512)
0
313-256 = 57
1
57 (128)
0
57 (64)
0
57-32 = 25
1
25-16 = 9
1
9-8 = 1
1
1 (4)
0
1 (2)
0
1-1 = 0
1
Obtenemos 10100111001. Agrupando, 0101 0011 1001.
Para pasar de vuelta al decimal, hacemos la siguiente operacion matematica (suponer Nb como el valor (N) del numero del bit (b)):
211 * 011 + 210 * 110 + 29 * 09 + 28 * 18 + 27 * 07 + 26 * 06 + 25 * 15 + 24 * 14 + 23 * 13 + 22 * 02 + 21 * 01 + 20 * 10
2048 * 0 + 1024 * 1 + 512 * 0 + 256 * 1 + 128 * 0 + 64 * 0 + 32 * 1 + 16 * 1 + 8 * 1 + 4 * 0 + 2 * 0 + 1 * 1

1024 + 256 + 32 + 16 + 8 + 1 = 1337


Como podran ver, es un metodo sencillo y rapido!

^ Arriba ^

Ejercitacion de Practica

Pasaje de Numeros (tengo que subir todo esto todavia, no le den bola)
Sumas y Restas
Multiplicaciones
Pasaje a Float-Point de 32bits



Suma, Resta, y Multiplicacion Binaria

Suma Binaria

La suma binaria es simple. Primero, uno debe entender el concepto de "overflow". Overflow es cuando el numero se pasa del maximo e intenta pasarle ese exceso al numeri siguiente. Un buen ejemplo de un overflow es el odometro de un auto viejo, donde cuando llega a 999, pasa a 1000 pero si solo tiene tres rueditas en el tablero, se pone en 000. El underflow es lo mismo pero para el otro lado. 001 se convertiria en 000 y luego 999.

Teniendo la siguiente operacion:

 0100 1101
+0011 0001


Procedemos como una suma normal PERO RECORDANDO que en esta base, el numero maximo es 1. Los sistemas numericos que veremos tienen los siguientes rangos por digito:
Binario
0-1
Octal
0-7
Hexadecimal
0-F (A = 10, B = 11, etc)

Como nuestro numero maximo en binario es 1, y estamos sumandole 1 a 1, se convierte en 10 porque realiza un overflow. Repitiendo esta regla para los otros digitos del numero, obtenemos el siguiente resultado:


^ Arriba ^

Multiplicacion Binaria

La multiplicacion binaria es relativamente simple porque si el digito es 1, pones el numero. Si es 0, no lo pones.

Suponiendo el siguiente ejercicio:

    0111
*   0100
    0000
   0000
  0111
+0000
11100
pasando a byte:
001 1100

 0111
*0100
011100
pasando a byte:
001 1100
Al poner el numero solo si es 1 el digito o nada si es 0, la multiplicacion es muy facil. Solo se debe sumar despues. Al igual que en la multiplicacion convencional en la base decimal, debemos correr los numeros a la derecha correspondiendo con la posicion del digito que multiplicamos con.
En este ejemplo, como el primer 1 del segundo factor esta en la tercera posicion, debemos correr el numero dos lugares. Se puede simplificar las lineas con solo cero pero aca las pongo para que se les haga mas simple entender el concepto.

Hay que acostumbrarse a trabajar con grupos de bits asi no cometemos errores por leer mal. Lo mas conveniente es dividir cada 4 bits para no tener tantos grupos y, mas importante, poder pasarlo a hexadecimal facilmente ya que es el sistema numero mas utilizado en la programacion. Haganme caso ;D

^ Arriba ^

Resta Binaria

Aca se nos complica un poco la cosa. Para la resta binaria, debemos aprender primero sobre los numeros negativos binarios. De lo contrario, solo podremos restar numeros que sean mas chicos.

Complemento a 1 y Complemento a 2

El complemento a 2 surgio del complemento a 1. La teoria es la siguiente:
Existen distintos tipos de datos en la programacion:
NombresRangoCantidad de Bits
Boole0-11
Unsigned Byte
0-2558
Unsigned Word
2 Bytes
0-6553516
Unsigned Double Word
4 Bytes
0-4,294,967,29632
Unsigned Quad Word
8 Bytes
0-18,446,744,073,709,551,61564

Y sus variantes CON signo:
_____________
Nombres
____________________________________________________________
Rango
__________________________________
Cantidad de Bits
Byte
-128 - 1278
Word
2 Bytes
-32768 - 3276716
Double Word
4 Bytes
-2,147,483,648 - 2,147,483,64732
Quad Word
8 Bytes
-9,223,372,036,854,775,808 - 9,223,372,036,854,775,80764

Y aca hacemos la diferencia entre C1 y C2 (Complemento a 1 y 2). El Complemento a 1 toma en cuenta el -0 entonces los rangos reales son
_____________
Nombres
____________________________________________________________
Rango
__________________________________
Cantidad de Bits
Byte
-127 - 1278
Word
2 Bytes
-32767 - 3276716
Double Word
4 Bytes
-2,147,483,647 - 2,147,483,64732
Quad Word
8 Bytes
-9,223,372,036,854,775,807 - 9,223,372,036,854,775,80764

Al tomar en cuenta el -0, uno debe diferenciar el C1 del C2 (usado normalmente) para un correcto pasaje.

El primer bit significativo (el de la izquierda de todo en un numero big-endian [los que estamos trabajando actualmente]) de un numero signado significa si es posivito o negativo el numero. En el caso que sea 1, al numero obtenido de los otros bits se le resta el valor de ese bit.

Pasemos -69 a binario con C1 y C2:
__________________________________
Complemento a 1
__________________________________
Complemento a 2
-69 -> 69
1000101
0100 0101
1011 1010

0011 1010 -> 58
58 - 127 -> -69
-69 -> 69
1000101
0100 0101
1011 1010
+1
1011 1011

0011 1011 -> 59
59 - 128 -> -69
Primero pasamos el modulo del numero a binario
Luego, lo dividimos al grupo de 4 siguiente. En este caso, como tenemos 7 bits, lo pasamos a un byte (8 bits)
Invertimos los bits del numero
En el caso del C2, le sumamos 1 al numero (para compensar el -0 que toma en cuenta el C1)
Y ahi obtenemos nuestros numeros signados en C1 y C2. Para pasar a decimal, uno debe pasar el numero EXCLUYENDO EL BIT DEL SIGNO a decimal y RESTARLE 127 PARA C1 O 128 PARA C2.

Una vez entendido como escribir los numeros negativos, podemos proceder a restar en binario.

Suponiendo la siguiente operacion:
________________________________________

9-5
 1001
-0101
0100
Procedemos a restar.
1-1 es 0, 0-0 es 0. Ahora en el tercer digito donde tenemos 0-1, se pone interesante la situacion. De la misma manera que tenemos un overflow en las sumas, aca tenemos un underflow. El 0 le tiene que pedir al de la izquierda un 10 para poder realizar la resta (como en el decimal cuando el digito le pide el de la izquierda 10 para poder restar. El 1 se convierte en 0 y el 0 al que se le esta restando en la tercer posicion, se convierte en 10. 10-1 -> 1. Se baja un uno. El digito siguiente es cero y ya finalizo el numero, dando por terminada la operacion.

Esta imagen explica lo anterior pero con una cifra mas para mostrar que se puede si hay varios en el medio.


En el caso de restar con numeros negativos, conviene hacer el complemento antes de realizar la resta. Situaciones paralelas:
________________________________________
-12 - 3

3 -> 0011

C2 al -12
-12 -> 12
12 -> 1100*
1100 -> 1111 0011
1111 0011 + 1 -> 1111 0100

 1111 0100
-0000 0011
1111 0001 ->
________________________________________
-12 - 3

3 -> 0011

-12 -> 12
12 -> 1100

 1100
-0011
1001
C2
1111 0110
+1
1111 0111 -> -9
*Como el 12 ya utiliza el primer numero del grupo, conviene extender el numero al siguiente grupo de 4. Tecnicamente se podria operar igual pero es mas confuso (en mi opinion ¯\_(ツ)_/¯)

Matematicamente, hacer el C2 DESPUES de la resta es hacer la operacion 12-3. Es un error de principiante que vi bastante seguido. Lo mas seguro es convertir los numeros al C2 antes de operar. Si realmente queres hacerlo despues de operar, tenes que invertir los signos operacionales. El - debe ser + porque -12 - 3 es igual a -(12+3).

^ Arriba ^

Negativos por Exceso 2n-1

Para realizar este metodo de conversion al binario, se debe establecer con cuantos bits uno quiere trabajar con de antemano. Vamos a trabajar con 8.

Se agarra el numero en decimal, se le suma el valor del bit del signo (en el caso de 8 bits, 128) y se saca el numero en binario de la manera normal.
Cuando se obtiene el numero, el bit del signo se cambia para corresponder con el signo real del numero. Ejemplos:
-69
-69 + 128 = 59
59 (128)
59 (64)
59-32 = 27
27-16 = 11
11-8 = 3
3 (4)
3-2 = 1
1-1 = 0
_
_

0
0
1
1
1
0
1
1
______123
123 + 128 = 251
251-128 = 123
123-64 = 59
59-32 = 27
27-16 = 11
11-8 = 3
3 (4)
3-2 = 1
1-1 = 0
_
_

1
1
1
1
1
0
1
1

Obtenemos los siguientes resultados:

-69 -> 00111011 -> 0011 1011
123 -> 11111011 -> 1111 1011

Pero son incoherentes esos resultados porque el signo negativo esta en 1. Cambiamos el signo para que sea el correspondiente:

-69 -> 1011 1011
123 -> 0111 1011

Y ahi tenemos los resultados correctos!



CUALQUIER DUDA, LA MAS TETONUDA NO TENGAS MIEDO DE PREGUNTAR POR PM O POR DISCORD!

^ Arriba ^

8
Parcial 22/05/2020

Parcial 2-A
Link de descarga

Se tiene una empresa chica con 10 empleados. Se necesita saber cuántos hijos tiene cada empleado para realizar la compra del Día del Niño. Se ingresará por teclado el apellido del empleado y la cantidad de hijos que tiene. Validar cantidad de hijos mayor o igual a 0. Al terminar la carga, se mostrará en
pantalla, toda la información cargada en forma de dos columnas. Además, mostrar cuánto se gastaría en total por los regalos si se compraran regalos a 300
pesos cada uno para los empleados con tres o más hijos y 500 cada regalo para los que tienen uno o dos hijos.

Pista: realizar dos arreglos, uno para empleados y otro para hijos

Desafío extra: mostrar la información en forma separada, primero los empleados
con muchos hijos y luego los empleados con uno o dos hijos.

Algoritmo sin_titulo

Definir max, Total, i como ENTERO;
max = 10;
Dimension Empleados[max], Hijos[max];

Escribir "Regalos del Dia del Niño";
Escribir "";

Para i = 0 Hasta max-1 Hacer //Ingreso de los empleados

Escribir "Ingrese el apellido del empleado.";
Leer Empleados[i];
Hijos[i] = -1;

Mientras Hijos[i] < 0 Hacer

Escribir "Ingrese la cantidad de hijos que tiene";
Escribir "el empleado ", Empleados[i] SINSALTAR;

Leer Hijos[i];

Si Hijos[i] < 0 Entonces //Validar que el ingreso sea mayor o igual a cero.
Escribir "La cantidad de hijos es invalida. Debe ser mayor o igual a cero.";
FinSi
Escribir "";
FinMientras
FinPara

Escribir "Trabajador | Costo de Regalos";
Para i = 0 Hasta max-1 Hacer
Si Hijos[i] >=3 Entonces
Escribir Empleados[i], " | $", Hijos[i]*300;
Total = Total + Hijos[i]*300;
FinSi
FinPara

Escribir "";

Para i = 0 Hasta max-1 Hacer
Si Hijos[i] <3 Entonces
Escribir Empleados[i], " | $", Hijos[i]*500;
Total = Total + Hijos[i]*500;
FinSi
FinPara


Escribir "Costo total para la empresa: ", Total;

FinAlgoritmo

^ Arriba ^



Parcial 2-B
Link de descarga

b) Se quiere reformar un local de comidas para llevar y ofrecer la posibilidad de
comer ahí dentro también. El arquitecto presenta un presupuesto que consta de
varios ítems (mesas, sillas, etc.) y el costo correspondiente. Estos datos se
ingresarán por teclado. Al terminar la carga, se mostrará por pantalla toda la
información cargada en forma de dos columnas. Además, mostrar cuánto se
gastaría en total agregando un 10% más de honorarios.

Pista: utilizar dos arreglos para guardar los datos

Desafío extra: mostrar la información en orden inverso al ingresado, ya
calculando el 10% de honorarios sobre cada ítem.

Algoritmo sin_titulo

Definir max, i como ENTERO;
Definir total como REAL;
max = 4;

Dimension Objetos[max], Costos[max];

Escribir "Reforma de un Restaurante";
Escribir "";

Para i = 0 Hasta max-1 Hacer

Escribir "Ingrese el nombre del item.";
Leer Objetos[i];
Costos[i] = -1;

Mientras Costos[i] < 0 Hacer

Escribir "Ingrese el costo de ", Objetos[i] SINSALTAR;

Leer Costos[i];

Si Costos[i] <= 0 Entonces
Escribir "El costo debe ser mayor a cero.";
FinSi
Escribir "";
FinMientras
FinPara

Escribir "Objeto | Costo | Honorario del 10% | Costo Total";
Total = 0;
Para i = max-1 Hasta 0 Con Paso -1 Hacer
Escribir Objetos[i], " | $" Costos[i], " | $", Costos[i]*0.1, " | $", Costos[i]*1.1;
Total = Total + Costos[i]*1.1;
FinPara
Escribir "";
Escribir "El costo total seria de $", Total;
FinAlgoritmo

^ Arriba ^



Parcial 2-C
Link de descarga

c) Una empresa de electricidad está ofreciendo un plan de pagos para aquellos
usuarios que tengan deuda. Se harán cinco planes, cada uno con diferentes
características. Para cada plan se ingresará el nombre del plan y el monto
máximo de deuda al cual se aplica. Al terminar la carga, se mostrará por pantalla
toda la información cargada en dos columnas. Además, mostrar el plan con el
monto máximo de deuda.

Pista: utilizar dos arreglos para guardar los datos

Desafío extra: Mostrar una tercera columna con el monto de cada cuota a pagar
si se ofrecieran 12 cuotas sin interés.

Algoritmo sin_titulo
Definir max, i como ENTERO;
max = 5;
Dimension Plan[max], Deuda[max];

Escribir "Plan de Pagos de EdeNor";
Escribir "";

Para i = 0 Hasta max-1 Hacer

Escribir "Ingrese el nombre del plan.";
Leer Plan[i];
Deuda[i] = -1;

Mientras Deuda[i] < 0 Hacer

Escribir "Ingrese la deuda maxima del plan ", Plan[i], " ";

Leer Deuda[i];

Si Deuda[i] <= 0 Entonces
Escribir "La deuda debe ser mayor a cero.";
FinSi
Escribir "";
FinMientras
FinPara

Escribir "Plan | Maximo de Deuda | Costo de Cuota (12 cuotas sin interes)";
Para i = 0 Hasta max-1 Hacer
Si i == 0 Entonces
max = i;
SiNo
Si Deuda[i] > Deuda[max] Entonces
max = i;
FinSi
FinSi
Escribir Plan[i], " | $", Deuda[i], " | $", TRUNC(Deuda[i]/12)
FinPara
Escribir "El plan de mayor deuda es el plan ", Plan[max], " con una deuda de $", Deuda[max];

FinAlgoritmo

^ Arriba ^



Parcial 2-D
Link de descarga

d) En un club de barrio, los chicos practican cinco deportes: futbol, basquet, tennis,
natación y judo. Se ingresarán por teclado la información de cada uno de estos
deportes, qué deporte y cuántos chicos lo practican. Al terminar de cargar toda la
información, se mostrará por pantalla toda la información cargada en dos
columnas. Además, mostrar cuántos chicos hay en total y cuál es el deporte con
menos jugadores.

Pista: utilizar dos arreglos para guardar los datos

Desafío extra: Mostrar una tercera columna con la cantidad de profesores
necesarios si se estima la ratio de 1 profesor cada 10 chicos.

Algoritmo sin_titulo
Definir max, i como ENTERO;
max = 5;
Dimension Deporte[max], Chicos[max];

Escribir "Censo Deportivo";
Escribir "";

Para i = 0 Hasta max-1 Hacer

Escribir "Ingrese el nombre del deporte.";
Leer Deporte[i];
Chicos[i] = -1;

Mientras Chicos[i] < 0 Hacer

Escribir "Ingrese la cantidad de chicos que asisten a ", Deporte[i], " ";

Leer Chicos[i];

Si Chicos[i] < 0 Entonces
Escribir "La cantidad de chicos asistiendo debe ser mayor positivo.";
FinSi
Escribir "";
FinMientras
FinPara

Escribir "Deporte | Asistencia | Profesores Necesarios";
Para i = 0 Hasta max-1 Hacer
Si i == 0 Entonces
max = i;
SiNo
Si Chicos[i] < Chicos[max] Entonces
max = i;
FinSi
FinSi
Escribir Deporte[i], " | ", Chicos[i], " | ", TRUNC(Chicos[i]/10+1) //Truncamos y sumamos uno porque debe haber por lo menos un profesor
//y no puede haber medio profe por grupo
FinPara
Escribir "El deporte con la menor cantidad de asistencia es el ", Deporte[max], " con una asistencia de ", Chicos[max], " chicos.";

FinAlgoritmo

^ Arriba ^



Parcial 2-E
Link de descarga
Link de descarga para el segundo

Se tiene una empresa chica con 10 empleados que no ha parado de trabajar durante la cuarentena. Se ha decidido que se les dará un aumento para mantener la fidelidad de estos. Se requiere ingresar el apellido de los diez empleados y su salario actual (salario mayor a cero).
El aumento será de 10% para aquellos que ganan más de 300000 pesos y 15% para los que ganen menos. Luego de haber ingresado TODOS los empleados, mostrar en pantalla el apellido y su nuevo salario. También se quiere saber cuánto era el total pagado en salarios hasta ahora y cuánto será con el aumento.

Pista: usar dos arreglos, uno para los apellidos y otro para los salarios.

Desafío extra: al mostrar todos los empleados con su nuevo salario, dividirlos en
dos grupos mostrando primero los que reciben el 15% de aumento y luego los
que reciben el 10%
Algoritmo sin_titulo

Definir i, n, Separados, Long, tmp, max como ENTERO;
Definir tmp2 como CARACTER;

AumentoA = 1.1;
AumentoB = 1.15;
max = 3;
Dimension Empleados[max];
Dimension Sueldo[max];

Escribir "Aumento de sueldo por fidelidad"
Escribir "durante tiempos de pandemia";
Escribir "";

Para i = 0 Hasta max-1 Hacer
Escribir "Ingrese el nombre del empleado: " SINSALTAR;
Leer Empleados[i];
n = -1;
Mientras n < 0 Hacer
Escribir "Ingrese el sueldo actual ", Empleados[i];
Leer n;
Si n < 0 Entonces
Escribir "El sueldo es invalido. Debe ser mayor o igual a cero.";
SiNo
Sueldo[i] = n;
FinSi
FinMientras
Escribir "";
FinPara

Long = 0;

Para i = 0 Hasta max - 1 Hacer
Si LONGITUD(Empleados[i]) > Long Entonces
Long = LONGITUD(Empleados[i]);
FinSi
FinPara

Escribir "------------------------";
Escribir "";
Escribir "Empleado | Sueldo Actual";

i = 0;
Mientras i < max-1 Hacer
Si Sueldo[i] < Sueldo[i+1] Entonces
tmp = Sueldo[i];
tmp2 = Empleados[i];
Empleados[i] = Empleados[i+1];
Empleados[i+1] = tmp2;
Sueldo[i] = Sueldo[i+1];
Sueldo[i+1] = tmp;
i = -1;
FinSi
i = i + 1;
FinMientras

Para i = 0 Hasta max - 1 Hacer
Escribir Empleados[i] SINSALTAR;
Para n = 0 Hasta Long - LONGITUD(Empleados[i]) Hacer
Escribir " " SINSALTAR;
FinPara
Escribir " | ", Sueldo[i];
FinPara

Escribir "";
Escribir "------------------------";
Escribir "";
Escribir "Trabajador | Aumento | Sueldo Final";

Separados = 0;
Para i = 0 Hasta max - 1 Hacer
Si Sueldo[i] > 300000 Entonces
Escribir Empleados[i] SINSALTAR;

Para n = 0 Hasta Long - LONGITUD(Empleados[i]) Hacer
Escribir " " SINSALTAR;
FinPara

Escribir " |   10%   | $", TRUNC(Sueldo[i] * AumentoA);
SiNo
Si Separados == 0 Entonces
Escribir "";
Separados = 1;
FinSi

Escribir Empleados[i] SINSALTAR;

Para n = 0 Hasta Long - LONGITUD(Empleados[i]) Hacer
Escribir " " SINSALTAR;
FinPara

Escribir " |   15%   | $", TRUNC(Sueldo[i] * AumentoB);
FinSi

FinPara

FinAlgoritmo

Algoritmo sin_titulo
Definir TotalN, TotalV, AumentoA, AumentoB como REAL;
Definir i, max como ENTERO;

max = 3;
Dimension Sueldo[max],Empleados[max];
AumentoA = 1.10;
AumentoB = 1.15;

Escribir "Fidelidad durante la cuarentena.";
Escribir "";

Para i = 0 Hasta max-1 Hacer //Ingreso de los empleados

Escribir "Ingrese el apellido del empleado.";
Leer Empleados[i];
Sueldo[i] = -1;

Mientras Sueldo[i] <= 0 Hacer

Escribir "Ingrese el sueldo de ", Empleados[i] SINSALTAR;

Leer Sueldo[i];

Si Sueldo[i] <= 0 Entonces //Validar que el ingreso sea mayor a cero
Escribir "El sueldo es invalido. Debe ser mayor a cero.";
FinSi
Escribir "";
FinMientras
FinPara

Escribir "Empleado | Sueldo Actual | Sueldo Nuevo | Aumento";

Para i = 0 Hasta max - 1 Hacer
Si Sueldo[i] >= 300000 Entonces
TotalV = TotalV + Sueldo[i];
TotalN = TRUNC(TotalN + Sueldo[i]*AumentoA);
Escribir Empleados[i], " | $", Sueldo[i], " | $", TRUNC(Sueldo[i] * AumentoA), " | ", (AumentoA-1)*100, "%";
FinSi
FinPara
Escribir "";
Para i = 0 Hasta max - 1 Hacer
Si Sueldo[i] < 300000 Entonces
TotalV = TotalV + Sueldo[i];
TotalN = TRUNC(TotalN + Sueldo[i]*AumentoB);
Escribir Empleados[i], " | $", Sueldo[i], " | $", TRUNC(Sueldo[i] * AumentoB), " | ", (AumentoB-1)*100, "%";
FinSi
FinPara

Escribir "";
Escribir "Expensas salariales actual: $", TotalV;
Escribir "Expensas salariales nueva: $", TotalN;

FinAlgoritmo

^ Arriba ^

9
Parcial 22/05/2020

Parcial 1-A
Link de descarga

Escribe un algoritmo para transformar grados Fahrenheit a Celsius, sabiendo que la fórmula es: celsius = 5 * (fahr-32) / 9 El usuario ingresará por teclado valores en grados Fahrenheit. El ciclo termina cuando ingrese un valor negativo.

// Escribe un algoritmo para transformar grados Fahrenheit a Celsius, sabiendo que la
// fórmula es:
// celsius = 5 * (fahr-32) / 9
// El usuario ingresará por teclado valores en grados Fahrenheit. El ciclo termina cuando
// ingrese un valor negativo.

Algoritmo sin_titulo
Definir ingreso, grados como REAL;

ingreso = 0;
grados = 0;

Escribir "Parcial de Introduccion a la Programacion";
Escribir "Ejercicio 1 - A";
Escribir "";
Escribir "Ingrese numeros en Farenheit para obtener su valor en Celcius.";
Escribir "Ingresando un valor negativo, se termina el programa.";

Mientras ingreso >= 0 Hacer

Escribir "";
Escribir "Farenheit: " SINSALTAR;
Leer ingreso;

Si ingreso >= 0 Entonces
grados = 5 * (ingreso - 32) / 9; // Sacamos los decimales, dejando unicamente dos.
grados = grados * 100;
grados = TRUNC(grados);
grados = grados / 100;

Escribir "Celcius: ", grados;
FinSi
FinMientras
FinAlgoritmo

^ Arriba ^



Parcial 1-B
Link de descarga

Escribe un algoritmo para listar los valores de convertir los grados Fahrenheit a Celsius, sabiendo que la fórmula es: celsius = 5 * (fahr-32) / 9 Los valores a convertir van de 0 a 100 grados Fahrenheit. No hay interacción con el usuario. Utilizar un ciclo Mientras.

// b) Escribe un algoritmo para listar los valores de convertir los grados Fahrenheit a
// Celsius, sabiendo que la fórmula es:
// celsius = 5 * (fahr-32) / 9
// Los valores a convertir van de 0 a 100 grados Fahrenheit. No hay interacción con el
// usuario. Utilizar un ciclo Mientras

Algoritmo sin_titulo
Definir grados como REAL;
Definir i como ENTERO;

i = 0;
grados = 0;

Escribir "Parcial de Introduccion a la Programacion";
Escribir "Ejercicio 1 - B";
Escribir "";
Escribir "0-100 Farenheit a Celcius";
Escribir "";
Escribir "------INICIO------";

Mientras i <= 100 Hacer

grados = 5 * (i - 32) / 9; // Sacamos los decimales, dejando unicamente dos.
grados = grados * 100;
grados = TRUNC(grados);
grados = grados / 100;
Si i < 10 Entonces
Escribir "Farenheit: 00" i, " | Celcius: ", grados;
SiNo
Si i < 100 Entonces
Escribir "Farenheit: 0" i, " | Celcius: ", grados;
SiNo
Escribir "Farenheit: " i, " | Celcius: ", grados;
FinSi
FinSi
i = i + 1;
FinMientras
Escribir "-------FIN--------";
FinAlgoritmo

^ Arriba ^



Parcial 1-C
Link de descarga

Escribe un algoritmo para listar los valores de convertir los grados Fahrenheit a Celsius, sabiendo que la fórmula es: celsius = 5 * (fahr-32) / 9 Los valores a convertir van desde 0 hasta un valor máximo que el usuario ingresará por teclado. Utilizar un ciclo Mientras.

// c) Escribe un algoritmo para listar los valores de convertir los grados Fahrenheit a
// Celsius, sabiendo que la fórmula es:
// celsius = 5 * (fahr-32) / 9
// Los valores a convertir van desde 0 hasta un valor máximo que el usuario ingresará por
// teclado. Utilizar un ciclo Mientras

Algoritmo sin_titulo
Definir grados como REAL;
Definir i, a, ingreso como ENTERO;

i = 0;
a = 0;
ingreso = 0;
grados = 0;

Escribir "Parcial de Introduccion a la Programacion";
Escribir "Ejercicio 1 - C";
Escribir "";
Escribir "0-X Farenheit a Celcius";
Escribir "";
Escribir "Ingrese un numero mayor a 0 para obtener";
Escribir "las temperaturas en Celcius desde 0 hasta ese numero: " SINSALTAR;

Mientras !(ingreso > 0) Hacer
Si a == 1 Entonces
Escribir "El numero ingresado es invalido.";
Escribir "Ingrese un numero mayor a cero.";
SiNo
a = 1;
FinSi

Leer ingreso;

Escribir "";
FinMientras

Escribir "------INICIO------";

Mientras i <= ingreso Hacer

grados = 5 * (i - 32) / 9; // Sacamos los decimales, dejando unicamente dos.
grados = grados * 100;
grados = TRUNC(grados);
grados = grados / 100;

Si i < 10 Entonces
Escribir "Farenheit: 00" i, " | Celcius: " SINSALTAR;
SiNo
Si i < 100 Entonces
Escribir "Farenheit: 0" i, " | Celcius: " SINSALTAR;
SiNo
Escribir "Farenheit: " i, " | Celcius: " SINSALTAR;
FinSi
FinSi

Si TRUNC(grados) == grados Entonces
Escribir grados, ".00";
SiNo
Si TRUNC(grados*10) == grados*10 Entonces
Escribir grados, "0";
SiNo
Escribir grados;
FinSi
FinSi

i = i + 1;
FinMientras
Escribir "-------FIN--------";
FinAlgoritmo

^ Arriba ^



Parcial 1-D
Link de descarga

Escribe un algoritmo para listar los valores de convertir los grados Fahrenheit a Celsius, sabiendo que la fórmula es:celsius = 5 * (fahr-32) / 9 Los valores a convertir van desde un valor que el usuario ingresará por teclado hasta 100 grados. Utilizar un ciclo repetir

// d) Escribe un algoritmo para listar los valores de convertir los grados Fahrenheit a
// Celsius, sabiendo que la fórmula es:
// celsius = 5 * (fahr-32) / 9
// Los valores a convertir van desde un valor que el usuario ingresará por teclado hasta
// 100 grados. Utilizar un ciclo repetir

Algoritmo sin_titulo
Definir grados como REAL;
Definir i, a como ENTERO;

i = 100;
a = 0;
grados = 0;

Escribir "Parcial de Introduccion a la Programacion";
Escribir "Ejercicio 1 - D";
Escribir "";
Escribir "X-100 Farenheit a Celcius";
Escribir "";
Escribir "Ingrese un numero menor a 100 para obtener";
Escribir "las temperaturas en Celcius hasta 100 desde ese numero: " SINSALTAR;

Mientras !(i < 100) Hacer
Si a == 1 Entonces
Escribir "El numero ingresado es invalido.";
Escribir "Ingrese un numero menor a cien.";
SiNo
a = 1;
FinSi

Leer i;

Escribir "";
FinMientras

Escribir "------INICIO------";

Repetir

grados = 5 * (i - 32) / 9; // Sacamos los decimales, dejando unicamente dos.
grados = grados * 100;
grados = TRUNC(grados);
grados = grados / 100;

Si i < 0 Entonces
Si i*(-1) < 10 Entonces
Escribir "Farenheit: -00" i*(-1), " | Celcius: ", grados;
SiNo
Si i*(-1) < 100 Entonces
Escribir "Farenheit: -0" i*(-1), " | Celcius: ", grados;
SiNo
Escribir "Farenheit: " i, " | Celcius: ", grados;
FinSi
FinSi
SiNo
Si i < 10 Entonces
Escribir "Farenheit:  00" i, " | Celcius: ", grados;
SiNo
Si i < 100 Entonces
Escribir "Farenheit:  0" i, " | Celcius: ", grados;
SiNo
Escribir "Farenheit:  " i, " | Celcius: ", grados;
FinSi
FinSi
FinSi

i = i + 1;
Hasta Que i > 100;
Escribir "-------FIN--------";
FinAlgoritmo

^ Arriba ^



Parcial 1-E
Link de descarga

Realizar un algoritmo que muestre la sumatoria de los números ingresados por el usuario hasta que éste ingrese un 0 para terminar. No se sabe cuántos números se van a ingresar.

// e) Realizar un algoritmo que muestre la sumatoria de los números ingresados por el
// usuario hasta que éste ingrese un 0 para terminar. No se sabe cuántos números se van a
// ingresar.

Algoritmo sin_titulo
Definir suma, ingreso como ENTERO;
suma = -1;
ingreso = 1;

Escribir "Parcial de Introduccion a la Programacion";
Escribir "Ejercicio 1 - E";
Escribir "Sumatoria de Numeros";
Escribir "";
Escribir "Ingrese un numero para sumarlo.";
Escribir "Ingrese 0 para finalizar.";
Escribir "";

Mientras ingreso > 0 Hacer
suma = suma + ingreso;
Escribir suma, " + " SINSALTAR;
Leer ingreso;
FinMientras

Escribir "";
Escribir "La suma final es: ", suma;

FinAlgoritmo

^ Arriba ^



Parcial 1-F
Link de descarga

Realizar un algoritmo que luego de leer dos números enteros, pregunte que operación básica se quiere hacer, la realice y muestre el resultado. Se adjunta una impresión de pantalla.

// f) Realizar un algoritmo que luego de leer dos números enteros, pregunte que operación
// básica se quiere hacer, la realice y muestre el resultado. Se adjunta una impresión de
// pantalla.

Algoritmo sin_titulo
Definir valido, ingreso, numA, numB como REAL;
Escribir "Parcial de Introduccion a la Programacion";
Escribir "Ejercicio 1 - F";
Escribir "Calculadora";
Escribir "";
Escribir "Ingrese dos numeros enteros para operar con";
Leer numA, numB;
Escribir "";

valido = 0; //Repetir siempre que el usuario ingrese un comando invalido
Mientras valido == 0 Hacer
Escribir "Elija una operacion. Opciones validas:";
Escribir "SUMA RESTA DIVISION MULTIPLICACION";
Leer ingreso

Segun ingreso Hacer
caso "SUMA": Escribir numA, " + ", numB, " = ", numA + numB; valido = 1;
caso "RESTA": Escribir numA, " - ", numB, " = ", numA - numB; valido = 1;
caso "DIVISION": Escribir numA, " / ", numB, " = ", numA / numB; valido = 1;
caso "MULTIPLICACION": Escribir numA, " * ", numB, " = ", numA * numB; valido = 1;
FinSegun

Si valido == 0 Entonces
Escribir "El ingreso es invalido.";
Escribir "";
FinSi

FinMientras

FinAlgoritmo

^ Arriba ^

10

Simulacro 2 - A
Link de descarga

//Ingresar por teclado 10 números enteros guardándolos en un arreglo.
//Luego, mostrar cuál es el mayor y en qué orden fue leído. Para
// terminar, mostrar todo el vector.
// Los números pueden ser positivos, negativos o cero.

Algoritmo Simulacro_2A

Escribir "Mayor del Array";
Escribir "";

max = 10;
Dimension array[10];

Escribir "Por favor, ingrese un numero a la lista."
i = 0;
maxPos = 0;
maxNum = 0;

Mientras i < max Hacer

Leer array[i];

Si i == 0 Entonces
maxPos = i;
maxNum = array[i];
SiNo
Si array[i] > maxNum Entonces
maxPos = i+1;
maxNum = array[i];
FinSi
FinSi

i = i + 1;

Escribir "";

Si i < max Entonces
Escribir "Ingrese otro numero. Faltan ", max-i;
FinSi



FinMientras

Escribir "El numero mas grande es ", maxNum;
Escribir "en la posicion ", maxPos, ".";

Para i = 0 Hasta 9 Hacer
Escribir "Array[",i,"] = ",array[i];
FinPara
FinAlgoritmo

^ Arriba ^



Simulacro 2 - B
Link de descarga

// Ingresar por teclado 10 números enteros guardándolos en un arreglo.
// Luego, mostrar cuál es el menor y en qué orden fue leído. Para
// terminar, mostrar todo el vector.
// Los números pueden ser positivos, negativos o cero

Algoritmo Simulacro_2B

max = 10;
Dimension array[max];

Escribir "Menor de una serie.";
Escribir "";
Escribir "Por favor, ingrese un numero para agregarlo a la serie.";

i = 0;
minNum = 0;
minPos = 0;

Mientras i < max Hacer
Escribir "";

Leer array[i];

Si i < max Entonces
Escribir "Ingrese otro numero. Faltan ",max - i;
FinSi

i = i + 1;

FinMientras

Para i = 0 Hasta max-1 Hacer
Si i == 0 Entonces
minNum = array[i];
minPos = i;
SiNo
Si array[i] < minNum Entonces
minNum = array[i];
minPos = i;
FinSi
FinSi
FinPara

Escribir "";
Escribir "El numero mas chico ingresado es ", minNum;
Escribir "en la posicion ", minPos + 1;
Escribir "";

Para i = 0 Hasta max-1 Hacer
Escribir "Array[",i,"] = ",array[i];
FinPara

FinAlgoritmo

^ Arriba ^

11
Simulacro 1 - A
Link de descarga

// Mostrar por pantalla la tabla de multiplicar del 3, desde el 3 hasta el
// número N ingresado por teclado, en forma ascendente. Validar que N
// sea mayor a 0.
// Un ejemplo de pantalla de ejecución sería:
// “Serie: Tabla de multiplicar por 3”
// “Ingrese un número para terminar la serie: ”
// ? 25
// 3, 6, 9, 12, 15, 18, 21, 24

Algoritmo Simulacro_1A

Definir n, a, suma como ENTERO;

Escribir "Tabla del 3 hasta N.";
Escribir "";
Escribir "Ingrese el numero objetivo.";

n = 0;
a = 0;
suma = 0;

Mientras n <= 0 Hacer
Si a == 1 Entonces
Escribir "El numero ingresado es invalido.";
Escribir "Por favor ingrese un numero mayor a cero.";
FinSi
a = 1;
Leer n;
Escribir "";
FinMientras

Mientras suma + 3 <= n Hacer
suma = suma + 3
Escribir ", ", suma Sin Saltar;
FinMientras

FinAlgoritmo

^ Arriba ^



Simulacro 1 - B
Link de descarga

//Mostrar por pantalla la tabla de multiplicar del 4, desde el 4 hasta el
//número N ingresado por teclado, en forma ascendente. Validar que N
//sea mayor a 0.
//Un ejemplo de pantalla de ejecución sería:
//“Serie: Tabla de multiplicar por 4”
//“Ingrese un número para terminar la serie: ”
// ? 25
// 4 ,8 ,12 ,16 ,20 ,24

Algoritmo Simulacro_1B

Definir a, n como ENTERO;

Escribir "Tabla del 4 hasta N.";
Escribir "";
Escribir "Ingrese el numero objetivo.";

a = 0;
n = 0;

Mientras n <= 0 Hacer
Si a == 1 Entonces
Escribir "El numero ingresado es invalido.";
Escribir "Por favor, ingrese un numero mayor a cero.";
FinSi

a = 1;
Leer n;

FinMientras

n = TRUNC(n/4);
Dimension suma[n+1];
a = 0;
Mientras a <= n Hacer
suma[a] = a * 4;
a = a + 1;
FinMientras

a = 0;
Mientras a <= n Hacer
Escribir a, " x 4 = " suma[a];
a = a + 1;
FinMientras

FinAlgoritmo

^ Arriba ^



Simulacro 1 - C
Link de descarga

//Mostrar por pantalla la tabla de multiplicar del 5, desde el 5 hasta el
//número N ingresado por teclado, en forma ascendente. Validar que N
//sea mayor a 0.
//Un ejemplo de pantalla de ejecución sería:
//“Serie: Tabla de multiplicar por 4”
//“Ingrese un número para terminar la serie: ”
// ? 32
// 5, 10, 15, 20, 25, 30

Algoritmo Simulacro_1C

Definir a, n como ENTERO;

Escribir "Tabla del 5 hasta N.";
Escribir "";
Escribir "Ingrese el numero objetivo.";

n = 0;
a = 0;

Mientras n <= 0 Hacer
Si a == 1 Entonces
Escribir "El numero ingresado es invalido.";
Escribir "Por favor ingrese un numero mayor a cero.";
FinSi
a = 1;
Leer n;
Escribir "";
FinMientras

Escribir "0" SINSALTAR;

Para a = 5 hasta n Con Paso 5 Hacer
Escribir ", ",a SINSALTAR;
FinPara

FinAlgoritmo

^ Arriba ^



Simulacro 1 - D
Link de descarga

//Mostrar por pantalla los primeros N números de una serie, siguiendo
//el ejemplo. Validar que N sea mayor a 0.
//Un ejemplo de pantalla de ejecución sería:
//“Serie: N * i - 1” (siendo i de 0 a N-1)
//“Ingrese un número generar para la serie: ”
// ? 5
// -1, 4, 9, 14, 19

Algoritmo Simulacro_1D

Definir a, b, n como ENTERO;

Escribir "Serie N.";
Escribir "";
Escribir "Ingrese el numero patron.";

n = 0;
a = 0;

Mientras n <= 0 Hacer
Si a == 1 Entonces
Escribir "El numero ingresado es invalido.";
Escribir "Por favor ingrese un numero mayor a cero.";
FinSi
a = 1;
Leer n;
Escribir "";
FinMientras

a = -1;
b = 1;

Escribir "-1" SINSALTAR;

Mientras b < n Hacer
b = b + 1;
a = a + n;
Escribir ", ", a SINSALTAR;
FinMientras

FinAlgoritmo

^ Arriba ^



Simulacro 1 - E
Link de descarga

//Mostrar por pantalla los primeros N números de una serie, siguiendo
//el ejemplo. Validar que N sea mayor a 0.
//Un ejemplo de pantalla de ejecución sería:
//“Serie: N / i ” (siendo i de 1 a N)
//“Ingrese un número generar para la serie: ”
// ? 7
// 7, 3.5, 2.33, 1.75, 1.4, 1.16, 1

Algoritmo sin_titulo

Definir b, a como ENTERO;

Escribir "Serie N / i.";
Escribir "";

n = 0;
a = 0;

Mientras n <= 0 Hacer
Si a == 1 Entonces
Escribir "El numero ingresado es invalido.";
Escribir "Por favor ingrese un numero mayor a cero.";
FinSi
a = 1;
Leer n;
Escribir "";
FinMientras

Para a = 1 Hasta n Hacer

Escribir n, " / " a, " = " TRUNC(n/a*100)/100;

FinPara

FinAlgoritmo

^ Arriba ^

12
Primer Año / Re: Algebra I
« on: April 22, 2020, 11:32:59 am »
Una vez que tenemos la matriz transpuesta, multiplicamos la matriz por el inverso del determinante de la matriz original (55-1 = 1/55)

21
-11
8
___
21
55
-11
55
_8_
55
-1
11
-3
x
_1_
55
-1
55
11
55
-3
55
-16
11
7
___
-16
55
11
55
_7_
55

Aca tenemos la matriz inversa a la original!

Uno puede seguir a los siguientes pasos para obtener los valores de X, Y, y Z del enunciado origianl ya que este ejercicio no es de calculo de la inversa de la matriz si no de resolucion de un sistema de ecuaciones.

Continuando:

Ponemos del lado derecho los resultados originales del enunciado del sistema de ecuaciones y procedemos a sumar el producto de cada celda de la fila con cada celda de la columna de las respuestas para obtener los valores de X, Y, y Z respectivamente


21
55
-11
55
_8_
55
|7
-1
55
11
55
-3
55
|12
-16
55
11
55
_7_
55
|5


7 *
21
55
+ 12 *
-11
55
+ 5 *
_8_
55
= 1
7 *
-1
55
+ 12 *
11
55
+ 5 *
-3
55
= 2
7 *
-16
55
+ 12 *
11
55
+ 5 *
_7_
55
= 1

X = 1
Y = 2
Z = 1

13
Primer Año / Re: Algebra I
« on: April 22, 2020, 11:24:19 am »
Ahora debemos realizar las submatrices y realizar la resta de los productos de las diagonales.
paciencia wacho que esto es alta paja

2
3
-1
___
1
5
1
-->
5
1
3
-1
4
___
-1
4

5 * 4 = 20
1 * -1 = -1
20 - (-1) = 21



2
3
-1
___
1
5
1
-->
1
1
3
-1
4
___
3
4

1 * 4 = 4
1 * 3 = 3
4 - 3 = 1



2
3
-1
___
1
5
1
-->
1
5
3
-1
4
___
3
-1

1 * -1 = -1
5 * 3 = 15
-1 - 15 = -16



2
3
-1
___
3
-1
]1
5
1
-->
3
-1
4
___
-1
4

3 * 4 = 12
-1 * -1 = 1
12 - 1 = 11



2
3
-1
___
2
-1
1
5
1
-->
3
-1
4
___
3
4

2 * 4 = 8
-1 * 3 = -3
8 - (-3) = 11



2
3
-1
___
2
3
1
5
1
-->
3
-1
4
___
3
-1

2 * -1 = -2
3 * 3 = 9
-2 - 9 = -11



2
3
-1
___
3
-1
1
5
1
-->
5
1
3
-1
4
___

3 * 1 = 3
-1 * 5 = -5
3 - (-5) = 8



2
3
-1
___
2
-1
1
5
1
-->
1
1
3
-1
4
___

2 * 1 = 2
-1 * 1 = -1
2 - (-1) = 3



2
3
-1
___
2
3
1
5
1
-->
1
5
3
-1
4
___

2 * 5 = 10
3 * 1 = 3
10 - 3 = 7



Ahora, con los determinantes de las submatrices, realizamos una matriz adjunta.
Los numeros en rojo van a ser multiplicados por -1 en el siguiente paso.

21
1
-16
11
11
-11
8
3
7



21
-1
-16
-11
11
11
8
-3
7

y ahora realizamos la matriz transpuesta, cambiando de lugar las diagonales secundarias, manteniendo la principal intacta.

21
-11
8
-1
11
-3
-16
11
7

14
Ejercicio 36
Link de descarga (Mientras)

Link de descarga (Repetir)
Link de descarga (Para)

Obtener el promedio de edad de N alumnos utilizando Mientras, Para, y Repetir en tres algoritmos distintos.

///* 36 Obtener el promedio de edad de un grupo de N alumnos (realizar tres algoritmos uno con cada estructura de control Mientras, Repetir, Para) */
Algoritmo e36_0
Definir n, max como ENTERO;
Definir prom como REAL;
n = 0;
max = 0;
Escribir "Promedio de la edad de los alumnos (Mientras).";
Mientras max <= 0 Hacer
Escribir "";
Escribir "Ingrese la cantidad de alumnos que hay en el aula";
Leer max;
// /*max = ALEATORIO(15,40); //Aula entre 15 y 40 alumnos EDIT: profe dijo despues que el numero de alumnos lo ingresa el usuario */
FinMientras
Dimension array(max);
prom = 0;
Mientras n < max Hacer //rellenar los arrays
array[n] = ALEATORIO(13, 18); //edades promedio de un secundario
prom = prom + array[n];
n = n + 1;
FinMientras
prom = prom / max;

//Solo queremos hasta dos decimales
prom = prom * 100;
prom = TRUNC(prom);
prom = prom / 100;

Escribir "El promedio de edad del aula con ",max," alumnos es de ",prom;
FinAlgoritmo


^ Arriba ^



Link de descarga

///* 36 Obtener el promedio de edad de un grupo de N alumnos (realizar tres algoritmos uno con cada estructura de control Mientras, Repetir, Para) */
Algoritmo e36_0
Definir n, max como ENTERO;
Definir prom como REAL;
n = 0;
max = 0;
Escribir "Promedio de la edad de los alumnos (Repetir).";
Mientras max <= 0 Hacer
Escribir "";
Escribir "Ingrese la cantidad de alumnos que hay en el aula";
Leer max;
// /*max = ALEATORIO(15,40); //Aula entre 15 y 40 alumnos EDIT: profe dijo despues que el numero de alumnos lo ingresa el usuario */
FinMientras
Dimension array(max);
prom = 0;

Repetir //rellenar los arrays
array[n] = ALEATORIO(13, 18); //edades promedio de un secundario
prom = prom + array[n];
n = n + 1;
Hasta Que n == max;

prom = prom / max;

//Solo queremos hasta dos decimales
prom = prom * 100;
prom = TRUNC(prom);
prom = prom / 100;

Escribir "El promedio de edad del aula con ",max," alumnos es de ",prom;
FinAlgoritmo

^ Arriba ^



Link de descarga

///* 36 Obtener el promedio de edad de un grupo de N alumnos (realizar tres algoritmos uno con cada estructura de control Mientras, Repetir, Para) */
Algoritmo e36_0
Definir n, max como ENTERO;
Definir prom como REAL;
n = 0;
max = 0;
Escribir "Promedio de la edad de los alumnos (Para).";
Mientras max <= 0 Hacer
Escribir "";
Escribir "Ingrese la cantidad de alumnos que hay en el aula";
Leer max;
// /*max = ALEATORIO(15,40); //Aula entre 15 y 40 alumnos EDIT: profe dijo despues que el numero de alumnos lo ingresa el usuario */
FinMientras
Dimension array(max);
prom = 0;

Para n = 0 Hasta max-1 Hacer //rellenar los arrays
array[n] = ALEATORIO(13, 18); //edades promedio de un secundario
prom = prom + array[n];
FinPara

prom = prom / max;

//Solo queremos hasta dos decimales
prom = prom * 100;
prom = TRUNC(prom);
prom = prom / 100;

Escribir "El promedio de edad del aula con ",max," alumnos es de ",prom;
FinAlgoritmo

^ Arriba ^




Ejercicio 37
Link de descarga (Mientras)
Link de descarga (Repetir)
Link de descarga (Para)

Obtener el promedio de edad de N alumnos utilizando Mientras, Para, y Repetir en tres algoritmos distintos.
N será ingresado por el usuario y debe ser mayor a 0. Las N edades serán ingresadas por el usuario, deben ser mayor a 16.

///* 37 Obtener el promedio de edad de un grupo de N alumnos (realizar tres algoritmos uno con cada estructura de control Mientras, Repetir, Para) */
Algoritmo e37_0
Definir n, i como ENTERO;
Definir prom como REAL;
n = 0;
i = 0;
Escribir "Promedio de la edad de los alumnos (Mientras).";
Mientras n <= 0 Hacer
Si i > 0 Entonces
Escribir "La cantidad de alumnos debe ser mayor a cero.";
FinSi
Escribir "";
Escribir "Ingrese la cantidad de alumnos que hay en el aula";
Leer n;
i = 1;
FinMientras
Dimension array(n);
prom = 0;
i = 0;
Mientras i < n Hacer //rellenar los arrays
Escribir "";
Escribir "Ingrese la edad del alumno ",i+1;
Leer array[i];
Si array[i] > 16 Entonces
prom = prom + array[i];
i = i + 1;
SiNo Escribir "La edad debe ser mayor a 16.";
FinSi

FinMientras
prom = prom / n;

prom = prom * 100;
prom = TRUNC(prom);
prom = prom / 100;

Escribir "El promedio de edad del aula con ",n," alumnos es de ",prom;
FinAlgoritmo


Link de descarga (Para)

///* 36 Obtener el promedio de edad de un grupo de N alumnos (realizar tres algoritmos uno con cada estructura de control Mientras, Repetir, Para) */
Algoritmo e37_2
Definir n, i, a como ENTERO;
Definir prom como REAL;
n = 0;
Escribir "Promedio de la edad de los alumnos (Para).";
Para i=0 Hasta 1 Con Paso 0 Hacer

Escribir "";
Escribir "Ingrese la cantidad de alumnos que hay en el aula";
Leer n;
Si n > 0 Entonces
i = 2;
SiNo
Escribir "La cantidad de alumnos debe ser mayor a cero.";
FinSi
FinPara
prom = 0;

Para i = 0 Hasta n-1 Hacer //rellenar los arrays
Escribir "";
Escribir "Ingrese la edad del alumno ",i+1;
Leer a;
Si a > 16 Entonces
prom = prom + a;
SiNo Escribir "La edad debe ser mayor a 16.";
i = i - 1;
FinSi
FinPara

prom = prom / n;

//Solo queremos hasta dos decimales
prom = prom * 100;
prom = TRUNC(prom);
prom = prom / 100;

Escribir "El promedio de edad del aula con ",n," alumnos es de ",prom;
FinAlgoritmo


Link de descarga (Repetir)

///* 37 Obtener el promedio de edad de un grupo de N alumnos (realizar tres algoritmos uno con cada estructura de control Mientras, Repetir, Para) */
Algoritmo e37_1
Definir n, i como ENTERO;
Definir prom como REAL;
n = 0;
i = 0;
Escribir "Promedio de la edad de los alumnos (Repetir).";
Repetir
Si i > 0 && n <= 0 Entonces
Escribir "La cantidad de alumnos debe ser mayor a cero.";
FinSi
Si n >= 100 Entonces
Escribir "La cantidad de alumnos debe ser menor a cien.";
FinSi
Escribir "";
Escribir "Ingrese la cantidad de alumnos que hay en el aula";
Leer n;
i = 1;
Hasta Que n > 0 && n < 100;
Dimension array(100);
prom = 0;
i = 0;
Repetir //rellenar los arrays
Escribir "";
Escribir "Ingrese la edad del alumno ",i+1;
Leer array[i];
Si array[i] > 16 Entonces
prom = prom + array[i];
i = i + 1;
SiNo Escribir "La edad debe ser mayor a 16.";
FinSi
Hasta Que i == n;

prom = prom / n;

//Solo queremos hasta dos decimales
prom = prom * 100;
prom = TRUNC(prom);
prom = prom / 100;

Escribir "El promedio de edad del aula con ",n," alumnos es de ",prom;
FinAlgoritmo

^ Arriba ^



Ejercicio 38
Link de descarga

Promedio de cinco numeros.

Algoritmo sin_titulo
Definir promedio, max, n como REAL;
max = 5;
promedio = 0;
Dimension numerosIngresados(max);
Borrar Pantalla;
Escribir "Promedio de cinco numeros";
Escribir "Por favor, ingrese cinco numeros para calcular el promedio.";
n = 0;
Mientras n < max Hacer
Escribir "";
Escribir "Por favor, ingrese ",max-n," numeros.";
Leer numerosIngresados[n];
Si numerosIngresados[n] > 0 Entonces
promedio = promedio + numerosIngresados[n];
n = n+1;
SiNo Escribir "El numero ingresado debe ser mayor a cero.";
FinSi

FinMientras
promedio = promedio/5;
promedio = promedio * 100;
promedio = TRUNC(promedio);
promedio = promedio / 100;
n = 0;
Escribir "(" SINSALTAR;
Mientras n < max Hacer
Escribir numerosIngresados[n] SINSALTAR;
Si n < max-1 Entonces
Escribir " + " SINSALTAR
FinSi
n = n + 1;
FinMientras
Escribir ") / ",max," = ",promedio;
Escribir "El promedio es : ",promedio;
FinAlgoritmo

^ Arriba ^



Ejercicio 39
Link de descarga

Cuantificar pares, impares, y ceros.

Algoritmo ej39
Escribir "Ingreso de veinte numeros cuantificar los numeros pares e impares.";
Definir max, pares, impares, ceros, n como REAL;
max = 20;
pares = 0;
impares = 0;
Dimension numerosIngresados[max];
n=0;
Escribir "";
Para n=0 Hasta max-1 Hacer
Si n == 0 entonces
Escribir "Por favor, ingrese un numero.";
sino Escribir "Por favor, ingrese otro numero. Aun faltan ", max - n, " numeros.";
FinSi

Leer numerosIngresados[n];
si numerosIngresados[n] > 0 entonces
si numerosIngresados[n] % 2 == 0 entonces
pares = pares + 1;
SiNo
impares = impares + 1;
FinSi
SiNo
Escribir "";
Escribir "El numero ingresado debe ser mayor a cero.";
n = n - 1;
FinSi
Escribir "";
FinPara

si pares > 0 entonces
Escribir "Hay ", pares, " numeros pares.";
n = 0;
Mientras n < max Hacer
Si numerosIngresados[n] % 2 == 0 Entonces
Escribir numerosIngresados[n] SINSALTAR;
Si n < pares Entonces
Escribir ", " SINSALTAR
FinSi
FinSi
n = n + 1;
FinMientras
sino Escribir "No hay numeros pares.";
FinSi

si impares > 0 entonces
Escribir "";
Escribir "Hay ", impares, " numeros impares.";
n = 0;
Mientras n < max Hacer
Si numerosIngresados[n] % 2 != 0 Entonces
Escribir numerosIngresados[n] SINSALTAR;
Si n < impares Entonces
Escribir ", " SINSALTAR
FinSi
FinSi
n = n + 1;
FinMientras
sino Escribir "No hay numeros impares.";
FinSi
FinAlgoritmo

^ Arriba ^



Ejercicio 40
Link de descarga

MBs a GBs utilizando un Repetir, sin usar TRUNC();

///* 40 Convertir un número (dado en MB) a su correspondiente GB con Repetir, sin TRUNC(). */

Algoritmo e_23_1
Definir a, b, c como ENTERO;
Escribir "Megabytes a Gigabytes.";
Escribir "";
Escribir "Ingrese una cantidad de megabytes para convertir a gigabytes.";
Leer a;

c = a;

Repetir
Si  a - 1024 >= 0 Entonces
a = a - 1024;
b = b + 1;
FinSi
Hasta Que a - 1024 < 0

Si a != 0 entonces
Escribir c, " MBs son ", b," GBs con ",a," MBs.";
SiNo Escribir c, " MBs son ", b," GBs.";
FinSi
FinAlgoritmo

^ Arriba ^


15
Ejercicio 31
Link de descarga

Factorial de N

//31 Factorial de N. Calcular el producto de los N primeros números naturales.

Algoritmo e31
Escribir "Factorial de N";
Definir a, b, c como ENTERO;
a = -1;
Mientras a < 0 Hacer
Escribir "";
Escribir "Ingrese un numero natural para calcular el factorial " SINSARLTAR
Leer a;
FinMientras
b = a;
c = a;
Mientras a > 1 Hacer
c = c * (a-1);
a = a - 1;
FinMientras
Escribir b,"! es igual a ",c;
FinAlgoritmo


^ Arriba ^



Ejercicio 32
Link de descarga

Mostrar N numeros de la serie de Fibonacci

//Serie Fibonacci

Algoritmo e32
Definir a, c, d, e, f como ENTERO;
Definir b como CARACTER;
Escribir "Numero de Fibonacci";
a = -1;
Mientras a < 0 Hacer
Escribir "";
Escribir "Ingrese la cantidad de digitos de Fibonacci que desea calcular " SINSARLTAR
Leer a;
FinMientras
b = "0";
f = a;
Dimension array(3);
c = 0;
d = 1;
Mientras a > 1 Hacer
e = c + d;
c = d;
d = e;
b = CONCATENAR(b,CONCATENAR(", ",CONVERTIRATEXTO(c)));
a = a - 1;
FinMientras
Escribir "";
Escribir "Los primeros ", f, " numeros de Fibonacci son: ",b;
FinAlgoritmo


^ Arriba ^



Ejercicio 33
Link de descarga

Calcular la suma de los primeros N numeros pares

//Calcular la suma de los primeros N números pares.
//N debe ser mayor a cero y será ingresado por teclado
Algoritmo e33
Definir a, c, n como ENTERO;
Definir b como CARACTER;
Escribir "Suma de N numeros pares";
a = -1;
Mientras a < 1 Hacer
Escribir "";
Escribir "Ingrese la cantidad de numeros pares que desea sumar " SINSARLTAR
Leer a;
FinMientras
b = "2";
n = 2;
c = 2;
Mientras n < a*2 Hacer
n = n + 2;
b = CONCATENAR(b,CONCATENAR(" + ",CONVERTIRATEXTO(n)));
c = c + n;
FinMientras
Escribir "";
Escribir b," es igual a ",c;
FinAlgoritmo


^ Arriba ^



Ejercicio 34
Link de descarga

Promedio, maximo, y minimo de lluvia en un mes.

//Se ingresa por teclado la cantidad de agua caída en mm día a día durante un SOLO mes.
//Se pide el día de mayor lluvia, el de menor lluvia y el promedio de mm llovidos.
///*Si un día no llueve se ingresa 0. Todos los meses tendrán 30 días. */

Algoritmo e34
Dimension array(30);
Definir max, min, prom como REAL;
Definir max1, max2, n como ENTERO;
Definir mes como CARACTER;
Escribir "Max, min, y promedio de lluvia de un mes";
Escribir "";
max = 0;
max1 = 0;
Escribir "Ingrese el nombre del mes " SINSALTAR;
Leer mes;
min = -1;
min1 = 0;
prom = 0;
Mientras n < 30 Hacer
Escribir "Por favor, ingrese la cantidad de lluvia que cayo el dia ",n+1, " en milimetros.";
Leer array(n);
Si array(n) >= 0 Entonces
Si array(n) > max Entonces
max = array(n);
max1 = n;
FinSi
Si array(n) < min || min == -1 Entonces
min = array(n);
min1 = n;
FinSi
prom = prom + array(n);
n = n + 1;
Escribir "";
SiNo
Escribir "";
Escribir "El numero ingresado debe ser mayor o igual a cero.";
FinSi
FinMientras
prom = prom / 30;
Escribir "";
Escribir "En el mes de ", mes, ", cayo un promedio de ",prom,"mm de agua.";
Escribir "El maximo de caida fue de ", max, "mm en el dia ", max1;
Escribir "El minimo de caida fue de ", min, "mm en el dia ", min1;
FinAlgoritmo


^ Arriba ^



Ejercicio 35
Link de descarga

Ahorro anual

///* Se requiere saber cuánto ahorró una persona en un año, si al final de cada mes deposita lo que pudo ahorrar.
//Mostrar también lo que se va ahorrando mes a mes. Si no ahorró nada, ingresará 0.*/

Algoritmo e35
Dimension array(12), mes(12);
Definir max, min, tot como REAL;
Definir max1, max2, n como ENTERO;
Escribir "Ahorro Anual";
Escribir "";

mes[0] = "Enero";
mes[1] = "Ferbero";
mes[2] = "Marzo";
mes[3] = "Abril";
mes[4] = "Mayo";
mes[5] = "Junio";
mes[6] = "Julio";
mes[7] = "Agosto";
mes[8] = "Septiembre";
mes[9] = "Octubre";
mes[10] = "Noviembre";
mes[11] = "Diciembre";

max = 0;
max1 = 0;
min = -1;
min1 = 0;
prom = 0;
Mientras n < 12 Hacer
Escribir "Por favor, ingrese cuanto ahorro en el mes de ",mes(n);
Leer array(n);
Si array(n) >= 0 Entonces
Si array(n) > max Entonces
max = array(n);
max1 = n;
FinSi
Si array(n) < min || min == -1 Entonces
min = array(n);
min1 = n;
FinSi
tot = tot + array(n);
n = n + 1;
Escribir "";
SiNo
Escribir "";
Escribir "El numero ingresado debe ser mayor o igual a cero.";
Escribir "En el caso que haya perdido plata en el mes, no cuenta como ahorro negativo.";
FinSi
FinMientras
Escribir "";

n = 0;
Mientras n < 12 Hacer
Escribir "En el mes de ",mes[n]," se ahorro $", array(n), ".";
n = n + 1;
FinMientras
Escribir "";
Escribir "En el año, se ahorro un total de $",tot,".";
Escribir "El maximo ahorro fue de $", max, " en el mes de ", mes[max1];
Escribir "El minimo ahorro fue de $", min, " en el mes de ", mes[min1];
FinAlgoritmo

^ Arriba ^

Pages: [1] 2 3 ... 7

PILAR EL TIEMPO