RUBEN NAVARRO CASERO & RAUL MORALES GARCIA Corrección e implementación en PSeInt por Alejandro Caro y discoduroderoer © 2004 © 2012-2013 1 Ejercicios de Pseudocódigo Parte 1 Nota: Los arreglos son en base 0 1. Leer un número y mostrar por la salida estándar si dicho número es o no es par. anda 2. Leer 2 números y mostrar el producto de ellos. anda 3. Leer 2 números y determinar el mayor de ellos. anda 4. Leer 3 números y mostrar el mayor de ellos. anda 5. Leer un número y mostrar su tabla de multiplicar. anda 6. Leer una secuencia de 30 números y mostrar la suma y el producto de ellos. anda 7. Leer una secuencia de números, hasta que se introduce un número negativo y mostrar la suma de dichos números. anda 8. Leer dos números y realizar el producto mediante sumas. anda 9. Leer dos números y realizar la división mediante restas mostrando el cociente y el resto. anda 10. Leer una secuencia de números y mostrar su producto, el proceso finalizará cuando el usuario pulse a la tecla F. anda 11. Lee una secuencia de números y determina cual es el mayor de ellos. anda 12. Dado un número mostrar su valor en binario. anda 13. Generar enteros de 3 en 3 comenzando por 2 hasta el valor máximo menor que Calculando la suma de los enteros generados que sean divisibles por 5. anda 14. Calcular la media de una secuencia de números, el proceso finalizará cuando el usuario pulse F. anda 15. Generar los N primeros términos de la serie de Fibonacci y mostrarlos por pantalla. El valor N (entero y positivo) deberá ser leído por el teclado. En esta serie los dos primeros números son 1, y el resto se obtiene sumando los dos anteriores: 1,1,2,3,5,8,13,21… anda 16. Leer una secuencia se números y mostrar cuáles de ellos es el mayor y el menor, el proceso finalizará cuando se introduzca un número impar. anda 17. Leer una secuencia de números y sumar solo los pares mostrando el resultado del proceso. anda 18. Leer una secuencia de números y mostrar los 30 primeros pares leídos. anda 19. Leer una secuencia de números y mostrar la suma de los 30 números que ocupan posiciones de lectura par. anda 20. Leer un número y determinar su factorial. anda 21. Leer un número y determinar si es o no es primo. anda 22. Leer una secuencia de 30 números y mostrar la suma de los primos. anda 23. Leer una secuencia de 30 números y mostrar la suma de su factorial. anda 24. Calcular el valor del número E (Euler) =(1/n!) y mostrarlo en pantalla. anda (ver) 25. Implementar un programa que sea capaz de calcular el resultado de aplicar la fórmula siguiente (n i)=n! / (i! * (n-i)!). anda Véase página Ejercicios de Pseudocódigo Parte 2 para la segunda parte 2 PROCESO ejercicio_1 //anda DEFINIR numero COMO ENTERO; ESCRIBIR ("Introduce un número"); LEER numero; SI (numero % 2 = 0) ENTONCES ESCRIBIR ("El numero es par"); SINO ESCRIBIR ("El numero no es par"); FINSI FINPROCESO PROCESO ejercicio_2 //anda DEFINIR numero_a COMO ENTERO; DEFINIR numero_b COMO ENTERO; ESCRIBIR ("Introduce un número"); LEER numero_a; ESCRIBIR ("Introduce otro número"); LEER numero_b; ESCRIBIR (numero_a * numero_b); FINPROCESO PROCESO ejercicio_3 //anda DEFINIR numero1 COMO ENTERO; DEFINIR numero2 COMO ENTERO; ESCRIBIR ("Introduce el número1"); LEER numero1; ESCRIBIR ("Introduce el número2"); LEER numero2; SI (numero1 > numero2) ENTONCES ESCRIBIR ("El número1 es mayor", numero1); SINO ESCRIBIR ("El número2 es mayor", numero2); SI (numero1 = numero2) ENTONCES ESCRIBIR ("Los números son iguales"); FINSI FINSI FINPROCESO 3 PROCESO ejercicio_4 //anda DEFINIR numero1 COMO ENTERO; DEFINIR numero2 COMO ENTERO; DEFINIR numero3 COMO ENTERO; ESCRIBIR ("Introduce número1"); LEER numero1; ESCRIBIR ("Introduce número2"); LEER numero2; SI (numero1 > numero2) ENTONCES ESCRIBIR ("Introduce número3"); LEER numero3; SI (numero1 > numero3) ENTONCES ESCRIBIR ("El número1 es el mayor"); SINO SI (numero2 > numero3) ENTONCES ESCRIBIR ("El número2 es el mayor"); SINO ESCRIBIR ("El número3 es el mayor"); FINSI FINSI FINSI FINPROCESO PROCESO ejercicio_5 //anda DEFINIR indice COMO ENTERO; DEFINIR numero COMO ENTERO; DEFINIR cota_superior COMO ENTERO; DEFINIR cota_inferior COMO ENTERO; cota_inferior <- 1; cota_superior <- 10; indice <- 1; ESCRIBIR "Ingrese un número"; LEER numero; PARA indice <- cota_inferior HASTA cota_superior CON PASO 1 HACER ESCRIBIR numero ,(" * "), indice ,(" = "), numero*indice; FINPARA FINPROCESO 4 PROCESO ejercicio_6 //anda DEFINIR numero COMO ENTERO; DEFINIR indice COMO ENTERO; DEFINIR suma COMO ENTERO; DEFINIR producto COMO ENTERO; suma <- 0; producto <- 1; PARA indice <-1 HASTA 30 CON PASO 1 HACER LEER numero; suma <- suma + numero; producto <- producto * numero; indice <-indice + 1; FINPARA ESCRIBIR ("la suma es: "), suma; ESCRIBIR ("el producto es: "), producto; FINPROCESO PROCESO ejercicio_7 //anda DEFINIR numero COMO ENTERO; DEFINIR suma COMO ENTERO; suma <- 0; LEER numero; MIENTRAS (numero > 0) HACER suma <- suma +numero; LEER numero; FINMIENTRAS ESCRIBIR ("la suma es:"), suma; FINPROCESO PROCESO ejercicio_8 //anda DEFINIR a COMO ENTERO; DEFINIR b COMO ENTERO; DEFINIR indice COMO ENTERO; DEFINIR Multi COMO ENTERO; ESCRIBIR ("introduce el primer número"); LEER a; ESCRIBIR ("introduce el segundo número"); LEER b; multi <- 0; PARA indice <-b HASTA 1 CON PASO -1 HACER multi <- multi + a; FINPARA ESCRIBIR (multi), " "; //apretar alt + 01 FINPROCESO 5 PROCESO ejercicio_9 //anda DEFINIR dividendo COMO ENTERO; DEFINIR divisor COMO ENTERO; DEFINIR cociente COMO ENTERO; DEFINIR resto COMO ENTERO; DEFINIR signo COMO ENTERO; ESCRIBIR ("introduce el dividendo"); LEER dividendo; ESCRIBIR ("introduce el divisor"); LEER divisor; //idem multiplicar //casos especiales SI (divisor = 0) ENTONCES ESCRIBIR ("error"); SINO cociente <- 0; resto <- dividendo; MIENTRAS (resto >= divisor) HACER resto <- resto - divisor; cociente <- cociente + 1; FINMIENTRAS FINSI ESCRIBIR "El cociente es ", cociente; ESCRIBIR "El resto es ", resto; FINPROCESO PROCESO ejercicio_10 //anda DEFINIR numero COMO ENTERO; DEFINIR producto COMO ENTERO; DEFINIR ffin COMO CARACTER; DEFINIR limite COMO CARACTER; Limite <- "f"; Producto <- 1; REPETIR ESCRIBIR ("Introduce el número"); LEER numero; ESCRIBIR ("¿Seguir? f = no s = si\n"); LEER ffin; producto <- producto * numero; HASTA QUE (ffin = limite) ESCRIBIR ("el producto de los números es: "), producto; FINPROCESO 6 PROCESO ejercicio_11 //anda DEFINIR numero COMO ENTERO; DEFINIR mayor COMO ENTERO; DEFINIR final COMO CARACTER; DEFINIR ffin COMO CARACTER; ffin <-"F"; mayor <- 0; REPETIR ESCRIBIR ("Introduce un número"); LEER numero; ESCRIBIR ("¿Seguir? f = no s = si\n"); LEER final; SI (numero > mayor) ENTONCES mayor <- numero; FINSI HASTA QUE (final = ffin) ESCRIBIR ("El mayor es:"), mayor; FINPROCESO PROCESO ejercicio_12 //anda DEFINIR contador COMO ENTERO; DEFINIR binario COMO CADENA; DEFINIR digito COMO CADENA; DEFINIR decimal COMO ENTERO; DEFINIR cociente COMO ENTERO; binario<-""; digito<-""; Contador <- 0; REPETIR ESCRIBIR ("Introduce un decimal"); LEER decimal; Contador <- contador + 1; HASTA QUE (decimal >= 0) | (contador = 5) SI (contador = 5) ENTONCES ESCRIBIR ("Sobrepasado numero de errores"); SINO SI (decimal = 0) ENTONCES ESCRIBIR ("0"); FINSI Cociente <- decimal; MIENTRAS (cociente<> 0) HACER SI cociente % 2 = 0 ENTONCES digito<-"0" Sino digito<-"1" FinSi binario<-digito+binario Cociente <- cociente/2; FINMIENTRAS ESCRIBIR binario; FINSI 7 FINPROCESO (Otra solución) PROCESO sin_titulo DEFINIR num COMO ENTERO; DEFINIR cad COMO CADENA; ESCRIBIR ("Ingrese un número entero positivo: "); LEER num; cad <- ""; SI num > 0 ENTONCES MIENTRAS num>0 HACER SI num%2 = 0 ENTONCES cad <- "0" + cad; SINO cad <- "1" + cad; FINSI num <- num/2; FINMIENTRAS ESCRIBIR ("Numero en binario: "), cad; SINO SI num = 0 Entonces ESCRIBIR "0"; SINO Escribir ("Solo números mayores a cero"); FINSI FINSI FINPROCESO PROCESO ejercicio_13 //anda DEFINIR indice COMO ENTERO; DEFINIR suma COMO ENTERO; suma <- 0; PARA indice <-2 HASTA 29 CON PASO 3 HACER SI (indice % 5 = 0) ENTONCES suma <- suma + indice; FINSI FINPARA ESCRIBIR ("La suma es: "), suma; FINPROCESO PROCESO ejercicio_14 //anda DEFINIR media COMO ENTERO; DEFINIR suma COMO ENTERO; DEFINIR contador COMO ENTERO; DEFINIR numero COMO ENTERO; suma <- 0; contador <- 0; media <- 0; ESCRIBIR ("Introduce un número"); LEER numero; MIENTRAS (numero <> 0) HACER contador <- contador + 1; suma <- suma + numero; ESCRIBIR ("Introduce un número"); 8 LEER numero; FINMIENTRAS media <- suma/contador; ESCRIBIR suma, " "; ESCRIBIR media; FINPROCESO PROCESO ejercicio_15 //anda (coincide con el número de ejercicio) DEFINIR numero COMO ENTERO; DEFINIR indice COMO ENTERO; DEFINIR intercambio COMO ENTERO; DEFINIR n_1 COMO ENTERO; DEFINIR n_2 COMO ENTERO; REPETIR ESCRIBIR ("Introduce un número"); LEER numero; HASTA QUE (numero > 0) SI (numero = 1) ENTONCES ESCRIBIR ("a1 <- 1"); SINO SI (numero = 2) ENTONCES ESCRIBIR ("a1 <- 1"); ESCRIBIR ("a2 <- 1"); SINO ESCRIBIR ("a1 <- 1"); ESCRIBIR ("a2 <- 1"); FINSI n_1 <- 1; //a1 <- 1 n_2 <- 1; //a2 <- 1 PARA indice <-3 HASTA numero CON PASO 1 HACER ESCRIBIR ( "a"), indice ,(" = "), n_1 + n_2; intercambio <- n_1; n_1 <- n_1 + n_2; n_2 <- intercambio; FINPARA FINSI FINPROCESO PROCESO ejercicio_16 //anda DEFINIR numero COMO ENTERO; DEFINIR mayor COMO ENTERO; DEFINIR menor COMO ENTERO; ESCRIBIR ("Introduce un número"); LEER numero; MIENTRAS (numero % 2 = 0) HACER mayor <- numero; menor <- numero; MIENTRAS (numero % 2 = 0) HACER SI (numero > mayor) ENTONCES mayor <- numero; SINO SI (numero < menor) ENTONCES menor <- numero; 9 FINSI FINSI FINMIENTRAS FINMIENTRAS FINPROCESO PROCESO ejercicio_17 // anda DEFINIR suma COMO ENTERO; DEFINIR numero COMO ENTERO; suma <- 0; ESCRIBIR ("Introduce un número"); LEER numero; MIENTRAS (numero % 2 = 0) HACER LEER numero; suma <- suma + numero; SI (numero % 2 = 0) ENTONCES suma <- suma + numero; FINSI FINMIENTRAS ESCRIBIR (suma); FINPROCESO PROCESO ejercicio_18 //anda (coincide con el número de ejercicio) DEFINIR numero COMO ENTERO; DEFINIR contador COMO ENTERO; DEFINIR caracter COMO ENTERO; contador <- 0; ESCRIBIR ("Introduce el primer número"); REPETIR LEER numero; SI (numero % 2 = 0) ENTONCES ESCRIBIR (numero); contador <- contador + 1; FINSI HASTA QUE (contador = 30) FINPROCESO PROCESO ejercicio_19 //anda DEFINIR numero COMO ENTERO; DEFINIR suma COMO ENTERO; DEFINIR posicion COMO ENTERO; DEFINIR indice COMO ENTERO; suma <- 0; posicion <- 0; MIENTRAS (indice <= 30) HACER ESCRIBIR ("introduce un número"); LEER numero; posicion <- posicion + 1; SI (posicion % 2 = 0 ) ENTONCES suma <- suma + numero; FINSI FINMIENTRAS ESCRIBIR (suma); 10 FINPROCESO PROCESO ejercicio_20 //anda DEFINIR factorial COMO ENTERO; DEFINIR indice COMO ENTERO; DEFINIR numero COMO ENTERO; ESCRIBIR ("introduce un número"); LEER numero; SI (numero < 0) ENTONCES ESCRIBIR (); SINO SI (numero = 0) ENTONCES ESCRIBIR ("El factorial de 0 es 1"); SINO factorial <- 1; PARA indice <-2 HASTA numero CON PASO 1 HACER factorial <- factorial * numero; FINPARA ESCRIBIR ("El resultado es: "), factorial; FINSI FINSI FINPROCESO PROCESO ejercicio_21 //anda DEFINIR n COMO ENTERO; DEFINIR contador COMO ENTERO; DEFINIR encontrado COMO LOGICO; ESCRIBIR ("introduce un número"); LEER n; encontrado <- falso; contador <- 2; MIENTRAS (contador <= n-1) & (n % contador <> 0) HACER contador <- contador + 1; FINMIENTRAS SI (contador <= n-1 ) ENTONCES ESCRIBIR ("el número no es primo"); SINO ESCRIBIR ("el número es primo"); FINSI FINPROCESO PROCESO ejercicio_22 //anda DEFINIR n COMO ENTERO; DEFINIR contador COMO ENTERO; DEFINIR suma COMO ENTERO; DEFINIR indice COMO ENTERO; suma <- 0; PARA indice <-0 HASTA 29 CON PASO 1 HACER ESCRIBIR ("introduce un número"); LEER numero; contador <- 2; MIENTRAS (contador <= n-1) & (n % contador = 0) HACER contador <- contador + 1; 11 FINMIENTRAS SI (contador = n ) ENTONCES suma <- suma + numero; FINSI FINPARA FINPROCESO PROCESO ejercicio_23 //anda DEFINIR n COMO ENTERO; DEFINIR contador COMO ENTERO; DEFINIR factorial COMO ENTERO; DEFINIR suma COMO ENTERO; DEFINIR indice COMO ENTERO; DEFINIR numero COMO ENTERO; n <- 0; contador <- 0; suma <- 0; REPETIR REPETIR ESCRIBIR ("introduce un número"); LEER numero; HASTA QUE (n >= 0) factorial <- 1; PARA indice <-2 HASTA numero CON PASO 1 HACER factorial <- factorial * numero; FINPARA suma <- suma + factorial; contador <- contador + 1; HASTA QUE (contador = 30) ESCRIBIR ("la suma es:"), suma; FINPROCESO SUBPROCESO suma <- factorial ( numero ) DEFINIR suma COMO ENTERO; suma<-numero; PARA contador<-numero-1 HASTA 1 CON PASO -1 HACER suma<-suma*contador; FINPARA FINSUBPROCESO PROCESO ejercicio_24 //anda pero revisar el uso de subprocesos //(ir a índice) (basarse en el ejercico_37) DEFINIR e, n, numero COMO REALES; e<-1; ESCRIBIR "Ingrese la cantidad de cifras para el límite del factorial: "; LEER numero; //ESCRIBIR (1+1/numero)^numero; PARA n <-1 HASTA numero CON PASO 1 HACER e <- e + 1/factorial(n); FINPARA ESCRIBIR e; 12 FINPROCESO //http://www.discoduroderoer.es/ejercicios-de-funciones-pseudocodigo/ SUBPROCESO suma <- factorial ( numero ) DEFINIR suma COMO ENTERO; suma<-numero; PARA contador<-numero-1 HASTA 1 CON PASO -1 HACER suma<-suma*contador; FINPARA FINSUBPROCESO PROCESO ejercicio_25 //anda DEFINIR numero COMO ENTERO; DEFINIR resultado COMO ENTERO; DEFINIR i COMO ENTERO; DEFINIR indice COMO ENTERO; REPETIR ESCRIBIR ("Introduce un número"); LEER numero; ESCRIBIR ("Introduce i"); LEER i; HASTA QUE (numero > i) & (numero >= 0) & (i >= 0) resultado <-factorial(numero) / (factorial(i) * factorial(numero-i)); ESCRIBIR resultado; FINPROCESO 13 1. Desarrolle un algoritmo (Pseudocódigo-Organigrama) para cada uno de los siguientes problemas que se plantean: a. Dado una secuencia de números determinar el mayor leído y el número de veces que aparece. anda b. Dado una secuencia de palabras determinar el mayor y menor lexicográficamente. anda c. Resolución de una ecuación de 2º grado. anda d. Dado una secuencia de números obtener la suma de los factoriales de aquellos que ocupan posición par. anda e. Determina dado una secuencia de enteros obtener los dos más mayores. (anda mal) (ir a código) f. Dada un entero extraer cada uno de los dígitos que lo forma. (anda pero con resultado incorrecto) (ir al código) g. Dada un entero visualizar sus divisores. anda h. Dada una secuencia de enteros determinar para cada una los divisores. anda i. Dada una secuencia de enteros determinar los que son primos y también los que tienen como dígito menos significativo un 7. anda j. Dada una secuencia de enteros determinar para cada su factorial y si es o no primo. anda k. Determina de una secuencia de enteros aquel que es mayor pero además es primo. anda l. Determina de una secuencia de enteros aquel factorial que es mayor. anda m. Dado una secuencia de enteros de cada uno determina sus 20 primeros múltiplos positivos y enteros. anda 14 PROCESO ejercicio_a //anda DEFINIR numero COMO ENTERO; DEFINIR mayor COMO ENTERO; DEFINIR contador COMO ENTERO; DEFINIR ffin COMO CARACTER; ffin <- "F"; contador <- 1; mayor <- 0; REPETIR ESCRIBIR ("Introduce un número"); LEER numero; ESCRIBIR ("¿Seguir? f = no s = si\n"); LEER fin; SI (numero > mayor) ENTONCES contador <- 1; mayor <- numero; ESCRIBIR numero ,("es el mayor"); SINO ESCRIBIR ("El mayor es:"), mayor; FINSI HASTA QUE (ffin = limite) ESCRIBIR ("El mayor es:"), mayor; ESCRIBIR ("Aparece:"), contador ,("veces"); FINPROCESO PROCESO ejercicio_b //anda DEFINIR palabra COMO CARACTER; DEFINIR mayor COMO ENTERO; DEFINIR contador COMO ENTERO; DEFINIR ffin COMO ENTERO; ffin <- "F"; contador <- 1; mayor <- 0; REPETIR ESCRIBIR ("Introduce una palabra"); LEER palabra; ESCRIBIR ("¿Seguir? f = no s = si\n"); LEER ffin; SI (palabra > mayor) ENTONCES contador <- 1; mayor <- palabra; ESCRIBIR palabra ,(" es la mayor"); SINO ESCRIBIR ("La mayor es:", mayor); FINSI HASTA QUE (fin = limite) ESCRIBIR ("La mayor es:"), mayor; ESCRIBIR ("Aparece:"), contador ,("veces"); FINPROCESO 15 PROCESO ejercicio_c //anda DEFINIR a COMO ENTERO; DEFINIR b COMO ENTERO; DEFINIR c COMO ENTERO; DEFINIR det COMO REAL; ESCRIBIR ("Introduce b"); LEER b; ESCRIBIR ("Introduce a"); LEER a; ESCRIBIR ("Introduce c"); LEER c; det <-b^2 - 4 * a * c; SI ((det)<0) ENTONCES ESCRIBIR ("error"); SINO ESCRIBIR (-b + (det)^0.5) / (2 * a); ESCRIBIR (-b - (det)^0.5) / (2 * a); FINSI FINPROCESO PROCESO ejercicio_d //anda DEFINIR numero COMO ENTERO; DEFINIR factorial COMO ENTERO; DEFINIR contador COMO ENTERO; DEFINIR suma COMO ENTERO; DEFINIR c_s COMO ENTERO; DEFINIR indice COMO ENTERO; contador <- 0; suma <- 0; ESCRIBIR ("cuantos números quieres leer"); LEER c_s; REPETIR ESCRIBIR ("Introduce un número"); LEER numero; contador <- contador + 1; SI (contador % 2 = 0) ENTONCES factorial <- 1; PARA indice<-2 HASTA numero CON PASO 1 HACER factorial <- factorial * indice; FINPARA suma <- suma + factorial; FINSI HASTA QUE (contador = c_s) FINPROCESO PROCESO ejercicio_e //no anda (ir al índice) DEFINIR numero COMO ENTERO; DEFINIR mayor COMO ENTERO; DEFINIR contador COMO ENTERO; DEFINIR ffin COMO CADENA; DEFINIR limite COMO CADENA; limite <- "F"; 16 ffin <- limite; Contador <- 1; Mayor <- 0; REPETIR ESCRIBIR ("Introduce un número"); LEER numero; ESCRIBIR ("Si quieres finalizar pulsa F (solo ingrese F o N)"); LEER ffin; SI (numero > mayor) ENTONCES Contador <- 1; Mayor <- numero; ESCRIBIR numero ,(" es el mayor"); SINO ESCRIBIR ("El mayor es: "),mayor; FINSI HASTA QUE (ffin = limite) ESCRIBIR ("El mayor es:"),mayor; ESCRIBIR ("Aparece: "),contador ,(" veces"); FINPROCESO PROCESO ejercicio_f //anda mal, con error de código // (ir al índice) DEFINIR decimal COMO ENTERO; DEFINIR cociente COMO ENTERO; DEFINIR contador COMO ENTERO; contador <- 0; REPETIR ESCRIBIR ("Introduce un número"); LEER decimal; contador <- contador + 1; HASTA QUE (decimal >= 0) | (contador = 5) SI (contador = 5) ENTONCES ESCRIBIR ("sobrepasa el número de errores"); SINO cociente <- decimal; MIENTRAS (contador <> 0) HACER ESCRIBIR (cociente % 10); cociente <- cociente/10; FINMIENTRAS FINSI FINPROCESO PROCESO ejercicio_g //anda DEFINIR numero COMO ENTERO; DEFINIR indice COMO ENTERO; REPETIR ESCRIBIR ("Introduce un número"); LEER numero; HASTA QUE (numero > 0) PARA indice <-1 HASTA numero CON PASO 1 HACER SI (numero % indice =0) ENTONCES ESCRIBIR ("Un divisor es: "), indice; SINO 17 ESCRIBIR ("El "), indice ,(" no es un divisor"); FINSI FINPARA FINPROCESO PROCESO ejercicio_h //anda DEFINIR numero COMO ENTERO; DEFINIR indice COMO ENTERO; DEFINIR ffin COMO CARACTER; DEFINIR limite1 COMO CARACTER; DEFINIR limite2 COMO CARACTER; Limite1 <- "N"; Limite2 <- "S"; REPETIR ESCRIBIR ("Introduce un número"); LEER numero; HASTA QUE (numero > 0) PARA indice <-1 HASTA numero CON PASO 1 HACER SI (numero % indice <-0) ENTONCES ESCRIBIR ("Un divisor es: "), indice; SINO ESCRIBIR ("El "), indice ,(" no es un divisor"); FINSI FINPARA REPETIR ESCRIBIR ("¿Quieres seguir? (S/N)"); LEER ffin; HASTA QUE (ffin = limite1) | (fin = limite2) MIENTRAS (ffin = limite2) HACER PARA indice <-1 HASTA numero CON PASO 1 HACER SI (numero % indice <-0) ENTONCES ESCRIBIR ("Un divisor es:"), indice; SINO ESCRIBIR ("El "), indice ,(" no es un divisor"); FINSI FINPARA REPETIR ESCRIBIR ("¿Quieres seguir? (S/N)"); LEER ffin; HASTA QUE (ffin = limite1) | (ffin = limite2) FINMIENTRAS FINPROCESO 18 Programación modular (no anda ninguno) i Calcular el mayor de dos valores introducidos mediante el teclado utilizando programación modular. No anda (ir al código) Leer un número y mostrar su tabla de multiplicar No anda Realizar un algoritmo que muestre el siguiente menú. No anda 1. Amigos 2. Sociables 3. Vector de productos 4. Vector de sumas 5. Bisiesto 6. Salir Define una función que reciba un vector y devuelva el mayor de todos. No anda Define una función que recibiendo un vector y un entero devuelva la existencia o no de dicho entero en el vector. No anda Algoritmo que lea n enteros que indiquen el factorial de los primos. No anda (ir al código) (Ir a códigos parte 2) 19 Calcular el mayor de dos valores introducidos mediante el teclado utilizando programación modular. (volver al índice) PROCESO ejercicio_i //no anda DEFINIR A1 COMO ENTERO; DEFINIR A2 COMO ENTERO; Leer valores; SI (mayor (A1,A2) = 0) ENTONCES ESCRIBIR ("A1 es mayor que A2"); SINO SI (mayor (A1,A2) = 1) ENTONCES ESCRIBIR ("A2 es mayor que A1"); SINO ESCRIBIR ("Son iguales"); FINSI FINSI FINSUBPROCESO SUBPROCESO pantalla_principal ESCRIBIR ("__"); ESCRIBIR ("__"); //…… FINSUBPROCESO SUBPROCESO leer valores ESCRIBIR ("Introduce A1"); LEER A1; ESCRIBIR ("Introduce A2"); LEER A2; FINSUBPROCESO SUBPROCESO borrar_pantalla DEFINIR A1 COMO ENTERO; //A1 es un contador DEFINIR primera_linea, ultima_linea COMO ENTEROS; primera_linea <- 1; ultima_linea <- 24; PARA A1 <- primera_linea HASTA ultima_linea CON PASO 1 HACER ESCRIBIR ("__"); FINPARA FINSUBPROCESO SUBPROCESO mayor (valor1, valor2) SI (valor1 > valor2) ENTONCES Retornar (0); SINO SI (valor1 < valor2) ENTONCES Retornar (1); SINO Retornar (2); FINSI FINSI FINSUBPROCESO 20 Leer un número y mostrar su tabla de multiplicar PROCESO principal DEFINIR error COMO ENTERO; Error <- leer_valores; SI (error = 1) ENTONCES ESCRIBIR ("Has introducido mal los datos"); SINO Tabla_multiplicar(); FINSI //final; FINPROCESO SUBPROCESO leer_valores DEFINIR numero COMO ENTERO; DEFINIR indice COMO ENTERO; DEFINIR cota_superior COMO ENTERO; DEFINIR cota_inferior COMO ENTERO; ESCRIBIR "Introduce el número de multiplicar", c_s, c_i "; LEER numero; LEER cota_superior; LEER cota_inferior; SI (cota_superior < cota_inferior) ENTONCES Retornar (1); SINO Retornar (0); FINSI FINSUBPROCESO SUBPROCESO numero <- Tabla_multiplicar() DEFINIR numero COMO ENTERO; DEFINIR indice COMO ENTERO; DEFINIR cota_superior COMO ENTERO; DEFINIR cota_inferior COMO ENTERO; indice <- 1; PARA indice <- cota_inferior HASTA cota_superior CON PASO 1 HACER ESCRIBIR numero ,(" * "), indice ,(" = "), numero*indice; FINPARA FINSUBPROCESO Ejercicios de momento no ejecutables en PSeInt Realizar un algoritmo que muestre el siguiente menú. 7. Amigos 8. Sociables 9. Vector de productos 10. Vector de sumas 11. Bisiesto 12. Salir PROCESO principal DEFINIR opcion COMO ENTERO; REPETIR Pantalla_menu; Leer_opcion; 21 SEGÚN opcion Hacer 1: amigos; 2: sociables(vector, c_i, c_s); 3: vector_producto(vector, c_i, c_s); 4: vector_de_sumas; 5: bisiesto; FINSEGUN HASTA QUE (opcion = 6) FINPROCESO SUBPROCESO pantalla_menu ESCRIBIR ("__"); //…… //…… FINSUBPROCESO SUBPROCESO leer_opcion LEER opcion; FINSUBPROCESO SUBPROCESO amigos DEFINIR valor1 COMO ENTERO; DEFINIR valor2 COMO ENTERO; DEFINIR tecla COMO CARACTER; REPETIR amigos; REPETIR LEER valor1; LEER valor2; HASTA QUE ((valor1 > 0) & (valor2 > 0)) SI (amigos(valor1,valor2) = 1) ENTONCES ESCRIBIR ("Son amigos"); SINO ESCRIBIR ("No son amigos"); FINSI REPETIR ESCRIBIR ("¿Quieres seguir s/n?"); LEER tecla; HASTA QUE ((teca = s) | (tecla = n)) HASTA QUE (tecla = N) SI (suma_divisores (v1) = v2 & suma_divisores(v2) = v1) ENTONCES Retornar (1); SINO Retornar (0); FINSI FINSUBPROCESO funcion suma_divisores (vvalor) DEFINIR indice COMO ENTERO; DEFINIR suma COMO ENTERO; Suma <- 0; PARA indice <- 1 HASTA v1 - 1 CON PASO 1 HACER SI (v1 % divisor = 0) ENTONCES Suma <- suma + indice; 22 FINSI FINPARA Retornar (suma); FINFUNCION FUNCION sociable DEFINIR c_i COMO ENTERO; DEFINIR c_s COMO ENTERO; DIMENSION vector[c_i,c_s]; DEFINIR vector COMO ENTERO; DEFINIR indice COMO ENTERO; c_i <- 1; c_s <- 20; Sociable; PARA indice <- c_i HASTA c_s CON PASO 1 HACER LEER vector[indice]; FINPARA SI ((sociable(vector, c_i, c_s)) = 1) ENTONCES ESCRIBIR ("Son sociables"); SINO ESCRIBIR ("NO son sociables"); FINSI FINFUNCION funcion sociables (vector, c_i, c_s) DEFINIR indice COMO ENTERO; Indice <- 1; MIENTRAS (indice < c_i) & (sociables(vector[indice], vector[indice + 1]) = 1) HACER Indice <- indice + 1; FINMIENTRAS SI (indice = c_s) & ((sociable[c_i], v[c_s]) = 1) ENTONCES Retornar (1); SINO Retornar (0); FINSI finfuncion funcion producto <- vector_producto (vector, c_i, c_s) DEFINIR indice COMO ENTERO; DEFINIR producto COMO ENTERO; producto <- 1; PARA indice <- c_i HASTA c_s CON PASO 1 HACER producto <- producto * vector[indice]; FINPARA FINFUNCION SUBPROCESO suma <- vector_de_sumas DEFINIR c_i COMO ENTERO; DEFINIR c_s COMO ENTERO; DEFINIR suma COMO ENTERO; DEFINIR indice COMO ENTERO; DIMENSION vector [c_i,c_s]; Borrar pantalla; 23 vector_de_sumas; Leer c_i; Leer c_s; PARA indice <- c_i HASTA c_s CON PASO 1 HACER LEER vector[indice]; FINPARA ESCRIBIR ("suma_vector es"), vector, c_i, c_s; Suma <- 0; PARA indice <- c_i HASTA c_s CON PASO 1 HACER Suma <- suma + vector[indice]; FINPARA FINSUBPROCESO SUBPROCESO bisiesto DEFINIR anio COMO ENTERO; Borrar pantalla; ESCRIBIR ("Dame un año"); LEER anio; SI (anio <= 0) ENTONCES ESCRIBIR ("El año no es bisiesto"); SINO SI (anio % 400 = 0) ENTONCES ESCRIBIR ("Es bisiesto"); SINO SI (anio % 100 = 0) ENTONCES ESCRIBIR ("No es bisiesto"); SINO ESCRIBIR ("Es bisiesto"); FINSI FINSI FINSI SI (anio % 4 <> 0) ENTONCES Retornar (0); SINO SI (anio % 400 = 0) ENTONCES Retornar (1); SINO SI (anio % 100 <> 0) ENTONCES Retornar (1); SINO Retornar (0); FINSI FINSI FINSI FINSUBPROCESO Define una función que reciba un vector y devuelva el mayor de todos. SUBPROCESO Mayor <- subproceso_mayor_vector (a, c_i, c_s) DEFINIR indice COMO ENTERO; DEFINIR mayor COMO ENTERO; mayor <- a[c_i]; PARA (indice <- c_i HASTA c_s) CON PASO 1 HACER SI (a[indice] > mayor) ENTONCES Mayor <- a[indice]; FINSI 24 FINPARA FINSUBPROCESO Define una función que recibiendo un vector y un entero devuelva la existencia o no de dicho entero en el vector. SUBPROCESO numero_vector (numero, vector, c-i, c_s) DEFINIR indice COMO ENTERO; Indice <- c_i; MIENTRAS (indice <= c_s) & (vector(indice <> numero) HACER Indice <- indice + 1; FINMIENTRAS SI (indice <- c_i + 1) ENTONCES Retornar (0); SINO Retornar (1); FINSI FINSUBPROCESO Algoritmo que lea n enteros que indiquen el factorial de los primos. (retorno variable) (ir al principio) PROCESO vector_de_factoriales_primos DIMENSION vector [c_i,c_s]; DIMENSION vector_factorial [c_i,c_s]; DEFINIR cota_superior COMO ENTERO; DEFINIR cota_inferior COMO ENTERO; DEFINIR indice COMO ENTERO; Leer_valores; PARA (indice <- cota_inf HASTA cota_sup) CON PASO 1 HACER SI (numeros_primos(vector[indice]) = 1) ENTONCES Vector_factorial[indice] <- factorial_de_un _numero (vector[indice]); FINSI ESCRIBIR vector_factorial[indice]; FINPARA Pantalla inicial; FINPROCESO SUBPROCESO numero_primo (numero) DEFINIR numero COMO ENTERO; DEFINIR indice COMO ENTERO; indice <- 2; MIENTRAS (indice < numero) & (numero % indice <> 0) HACER indice <- indice + 1; FINMIENTRAS SI (indice = numero) ENTONCES Retornar (1); SINO Retornar (0); FINSI FINSUBPROCESO 25 Algoritmo que lea n enteros almacenados en un vector sus factoriales. PROCESO factorial // no anda DIMENSION entero[c_i,c_s]; DIMENSION factorial[c_i,c_s]; DEFINIR cota_inferior COMO ENTERO; DEFINIR cota_superior COMO ENTERO; Borrar pantalla; Leer_valores; PARA indice <- cota_inf HASTA cota_sup CON PASO 1 HACER Vector_factorial[indice] = factorial_de_un_numero(vector:entero[indice]); ESCRIBIR (vector_factorial[indice]); FINPARA FINSUBPROCESO SUBPROCESO leer valores DEFINIR cota_inf, cota_sup COMO ENTEROS; ESCRIBIR "introduce cotas"; LEER cota_inf; LEER cota_sup; ESCRIBIR ("Rellena el vector"); PARA indice <- cota_inf HASTA cota_sup CON PASO 1 HACER LEER vector_entero [indice]; FINPARA FINSUBPROCESO SUBPROCESO factorial <- factorial_de_un _numero (numero) DEFINIR factorial COMO ENTERO; DEFINIR indice COMO ENTERO; SI (numero < 0) ENTONCES Retornar (-1); SINO SI (numero = 1) ENTONCES Retornar (1); SINO Factorial <- 1; FINSI PARA indice <- 2 HASTA numero CON PASO 1 HACER factorial <- factorial + indice; FINPARA FINSI FINSUBPROCESO Leer una secuencia y determinar la longitud de la palabra (no anda) SUBPROCESO contador_palabra <- palabra_mas_larga (parrafo) DEFINIR indice COMO ENTERO; DEFINIR contador_palabra COMO ENTERO; DEFINIR mayor_palabra COMO ENTERO; indice <- 0; contador_palabra <- 0; mayor_palabra <- 0; MIENTRAS (parrafo[indice] <> "\o") HACER SI (parrafo[indice] <> "\o") ENTONCES 26 Contador_palabra <- contador_palabra + 1; FINSI SI (parrafo[indice] <> "\o") & (parrafo[indice + 1] = " " | (parrafo[indice + 1] = "\o") ENTONCES SI(contador_palabra > mayor_palabra) ENTONCES Mayor_palabra <- contador_palabra; FINSI Contador_palabra <- 0; FINSI Indice <- indice + 1; FINMIENTRAS FINSUBPROCESO Leer una secuencia y determinar la longitud de la misma. (no anda) SUBPROCESO indice <- longitud_cadena DEFINIR indice COMO ENTERO; indice <- \o; MIENTRAS (texto[indice] <> "\o") HACER indice <- indice -1; FINMIENTRAS FINSUBPROCESO Realizar una función que recibiendo una secuencia devuelva dicha secuencia en mayúsculas. SUBPROCESO parrafo <- touppercase_java (parrafo) DEFINIR indice COMO ENTERO; DEFINIR resultado COMO SECUENCIA; indice <- 0; MIENTRAS (parrafo[indice] <> "\o") HACER SI (parrafo[indice] >= "a") & (parrafo[indice] <= "z") ENTONCES Parrafo[indice] <- convertiratexto(convertiranumero[indice] -32); FINSI FINMIENTRAS FINSUBPROCESO Definir una función recibiendo una secuencia cuyo fin será el carácter "\o" que devuelva el entero que representa. SUBPROCESO simula_autoi (texto) DEFINIR V_a[1.longitud(texto) + 1] COMO CARACTER; DEFINIR indice COMO ENTERO; DEFINIR acumulador COMO ENTERO; DEFINIR indice2 COMO ENTERO; indice <- 0; MIENTRAS (texto[indice] <> "\o") & (texto[indice] >= "\o") & (texto[indice] <= "9") V_a[indice + 1] <- texto[indice]; indice <- indice + 1; FINMIENTRAS V_a[indice] <- "\o"; acumulador <- 0; PARA indice2 <- 0 HASTA indice-1 CON PASO 1 HACER Acumulador <- acumulador + (caracter_to_entero (v_a[indice2]) – 45) * (10^(indice – indice2)); 27 FINPARA Retornar (acumulador); FINSUBPROCESO Dada una secuencia mostrar por pantalla el numero de apariciones del codigo ascii. (probar en sle SUBPROCESO apariciones (texto) DEFINIR ascii[255] COMO ENTERO; DEFINIR indice COMO ENTERO; PARA indice <- 0 HASTA 254 CON PASO 1 HACER ascii[indice] <- 0; FINPARA PARA indice = 0 HASTA longitud(texto) CON PASO 1 HACER ascii (convertiranumero(texto[indice])) <- (ascii[convertiranumero(texto[indice])) +1 FINPARA PARA indice <- 0 HASTA 255 CON PASO 1 HACER ESCRIBIR ("El codigo ascii"), indice, (", ascii[indice]); FINPARA FINSUBPROCESO 28 Ejercicios de Pseudocódigo Parte 2 27. Leer una secuencia de números y mostrar la suma de los pares y el producto de los que son múltiplo de 5. anda 28. Leer una secuencia de números y determinar el mayor de los pares leídos. anda 29. Leer una secuencia de números y mostrar el mayor de los múltiplos de 5 leídos y el menor de los múltiplos de 3 leídos. anda 30. Leer una secuencia de letras y mostrar la suma de sus códigos ASCII. Suponemos que tenemos la función convertiranumero(caracter)=entero. PSeInt no puede hacer eso 31. Dado un vector de 5 enteros actualizar cada posición de dicho vector con un número leído y mostrarla en pantalla. anda 32. Leer una secuencia de 20 números almacenarlos en un vector y mostrar la posición donde se encuentra el mayor valor leído. anda 33. Dado dos vectores A y B de 15 elementos cada uno, obtener un vector C donde la posición i se almacene la suma de A[i]+B[i]. anda 34. Dado dos vectores A y B de 15 elementos cada uno, obtener un vector C donde la posición i se almacene la suma de A[i]+B[i] y mostrar el mayor de los C[i]. anda 35. Dado una secuencia de número leídos y almacenados en un vector A mostrar dichos números en orden. anda 36. Dado una secuencia de número leídos y almacenados en un vector A y un número leído determinar si dicho número se encuentra o no en el vector. anda 37. Leer una secuencia de 20 números y almacenar en un vector sus factoriales y mostrarlos en pantalla. anda 38. Leer 20 números y almacenarlos de manera ordenada en un vector y mostrar dicho vector en pantalla. anda 39. Dado dos matrices A y B obtener la suma y mostrarla en pantalla. anda 40. Dado una matriz determinar la posición (i,j) del mayor y mostrarla en pantalla. anda 41. Dado una matriz determinar la posición (i,j) del mayor y menor y mostrarla en pantalla. anda 42. Leer un número y una letra si la letra es B mostrar el valor en binario, si es O en octal y si es H en hexadecimal. no anda, puede ser problema de código (ir al código) 43. Leer una secuencia de 20 números almacenarlos en un vector A[20] y mostrar la suma de los elementos que ocupan posiciones pares y el mayor de los que ocupan posiciones impares. anda 44. Dada una matriz A[4,5] realiza la ordenación de la misma (y mostrarla ordenada por pantalla). anda 45. Dada una matriz A[4,5] realiza el proceso de ordenar solo por filas. anda 46. Dado un vector de números determina aquellos que sea primos. anda Ir a Ejercicios de Pseudocódigo Parte 1 Para programación modular siga este enlace 29 PROCESO ejercicio_27 //anda DEFINIR numero COMO ENTERO; DEFINIR producto COMO ENTERO; DEFINIR sumapares COMO ENTERO; numero <- 0 producto <- 1; sumapares <- 0; MIENTRAS numero <> -1 HACER LEER numero SI (numero % 2 = 0) ENTONCES //preguntar si es par sumapares <- sumapares + numero; // sumar numero a numero de pares SINO SI (numero % 5 = 0) ENTONCES producto<-producto*numero; LEER numero; FINSI FINSI FINMIENTRAS ESCRIBIR (sumapares); ESCRIBIR (producto); FINPROCESO PROCESO ejercicio_28 //anda //Adaptado a PSeInt desde código que se encuentra en http://dis.um.es/~lopezquesada/documentos/FP0405/Proyecto/web4/webalgo/page22b.h tm DEFINIR MAX COMO ENTERO; MAX<-5; DEFINIR indice COMO ENTERO; DEFINIR numero COMO ENTERO; DEFINIR mayor COMO ENTERO; indice<-0; numero<-0; mayor<-0; MIENTRAS (indice <MAX) HACER indice<-indice+1; ESCRIBIR ("Introduzca NUMERO"); LEER numero; SI ((indice%2)=0) ENTONCES SI (numero>mayor) ENTONCES mayor<-numero; FINSI FINSI FINMIENTRAS ESCRIBIR (mayor); FINPROCESO PROCESO ejercicio_29 DEFINIR MAX COMO ENTERO; DEFINIR indice COMO ENTERO; DEFINIR numero COMO ENTERO; 30 DEFINIR mayor COMO ENTERO; DEFINIR menor COMO ENTERO; MAX<-10; indice<-0; //inicializar índice en 0 numero<-0; mayor<-0; menor<-0; MIENTRAS (indice <MAX) HACER indice<-indice+1; ESCRIBIR ("Introduzca NUMERO"); LEER numero; SI (indice%5=0) ENTONCES //Si numero del índice es múltiplo de 5 SI (numero>mayor) ENTONCES //si nuevo mayor que ingresa es todavía mayor al mayor actual mayor<-numero; //numero ingresado es nuevo mayor FINSI FINSI SI (indice%3=0) ENTONCES //Si numero del índice es múltiplo de 3 SI (numero<menor) ENTONCES //si nuevo menor que ingresa es todavía menor al menor actual menor<-numero; //numero ingresado es nuevo menor FINSI //cerrar si FINSI //cerrar si FINMIENTRAS ESCRIBIR (mayor); ESCRIBIR (menor); //Corregido y adaptado a PSeInt desde código que se encuentra en http://dis.um.es/~lopezquesada/documentos/FP0405/Proyecto/web4/webalgo/page32.ht m FINPROCESO PROCESO ejercicio_30 PSeInt no puede hacer eso. PROCESO ejercicio_31 //anda DIMENSION n[5]; DEFINIR N COMO ENTERO; DEFINIR indice COMO ENTERO; PARA indice <- 0 HASTA 4 CON PASO 1 HACER ESCRIBIR ("Introduce un número"); LEER indice; FINPARA ESCRIBIR indice; FINPROCESO PROCESO ejercicio_32 //anda DEFINIR n COMO ENTERO; DIMENSION n[20]; DEFINIR mayor_indice COMO ENTERO; DEFINIR indice COMO ENTERO; DEFINIR mayor COMO ENTERO; 31 PARA indice <-0 HASTA 19 CON PASO 1 HACER ESCRIBIR ("Introduce un número"); LEER indice; FINPARA Mayor <- n[1]; PARA indice <-0 HASTA 19 CON PASO 1 HACER SI (n[indice] > mayor) ENTONCES mayor_indice <-indice; FINSI FINPARA ESCRIBIR (mayor_indice); FINPROCESO PROCESO ejercicio_33 //anda DIMENSION A[16] ; DIMENSION B[16]; DEFINIR indice COMO ENTERO; DEFINIR suma COMO ENTERO; DIMENSION C[16]; DEFINIR A, B, C COMO ENTEROS; PARA indice <- 1 HASTA 15 CON PASO 1 HACER ESCRIBIR ("Introduce un número para el vector A"); LEER A[indice]; ESCRIBIR ("Introduce un número para el vector B"); LEER B[indice]; FINPARA PARA indice <- 1 HASTA 15 CON PASO 1 HACER Suma <- A[indice] + B[indice]; C[indice] <- suma; FINPARA PARA indice <- 1 HASTA 15 CON PASO 1 HACER ESCRIBIR C[indice]; FINPARA FINPROCESO PROCESO ejercicio_34 //anda DIMENSION A[16]; DIMENSION B[16]; DIMENSION C[16]; DEFINIR indice COMO ENTERO; DEFINIR suma COMO ENTERO; DEFINIR mayor COMO ENTERO; DEFINIR mayor_indice COMO ENTERO; DEFINIR A, B, C COMO ENTEROS; PARA indice <- 1 HASTA 15 CON PASO 1 HACER ESCRIBIR ("Introduce un número para el vector A"); LEER A[indice]; FINPARA PARA indice <-1 HASTA 15 CON PASO 1 HACER ESCRIBIR ("Introduce un número para el vector B"); LEER B[indice]; FINPARA 32 PARA indice <-1 HASTA 15 CON PASO 1 HACER suma <- A[indice] + B[indice]; C[indice] <- suma; FINPARA mayor <- C[1]; mayor_indice <- 1; PARA indice <-1 HASTA 15 CON PASO 1 HACER SI (C[indice] > mayor) ENTONCES mayor_indice <- indice; mayor <- C[indice]; FINSI FINPARA ESCRIBIR (mayor); ESCRIBIR (mayor_indice); FINPROCESO PROCESO ejercicio_35 //anda DEFINIR intercambio COMO ENTERO; DIMENSION n[15]; DEFINIR intermedio COMO ENTERO; DEFINIR indice COMO ENTERO; DEFINIR n COMO ENTERO; PARA indice <-0 HASTA 14 CON PASO 1 HACER ESCRIBIR ("Introduce un número"); LEER n[indice]; FINPARA REPETIR intercambio <- 0; PARA indice <-0 HASTA 14 CON PASO 1 HACER SI (n[indice] > n[indice + 1]) ENTONCES intermedio <- n[indice]; n[indice] <- n[indice + 1]; n[indice + 1] <- intermedio; intercambio <- 1; FINSI FINPARA HASTA QUE (intercambio = 0) FINPROCESO PROCESO ejercicio_36 //anda DIMENSION A[10]; DEFINIR numero COMO ENTERO; DEFINIR indice COMO ENTERO; DEFINIR A COMO ENTERO; PARA indice <-0 HASTA 9 CON PASO 1 HACER ESCRIBIR ("Introduce un número"); LEER A[indice]; FINPARA indice <-1; MIENTRAS (indice < 11) & (numero <> A[indice]) HACER indice <-indice + 1; FINMIENTRAS SI (indice <-11) ENTONCES 33 ESCRIBIR ("No está"); SINO ESCRIBIR ("Existe"); FINSI FINPROCESO PROCESO ejercicio_37 //anda DIMENSION n[10]; DEFINIR indice COMO ENTERO; DEFINIR factorial COMO ENTERO; DEFINIR indice1 COMO ENTERO; DEFINIR n COMO ENTERO; PARA indice <- 0 HASTA 9 CON PASO 1 HACER ESCRIBIR ("Introduce un número"); LEER n[indice]; FINPARA PARA indice <- 0 HASTA 9 CON PASO 1 HACER factorial <- 1; PARA indice1 <- 3 HASTA n[indice] CON PASO 1 HACER factorial <- factorial * indice1; FINPARA N[indice] <- factorial; FINPARA PARA indice <-0 HASTA 9 CON PASO 1 HACER ESCRIBIR n[indice]; FINPARA FINPROCESO PROCESO ejercicio_38 //anda DIMENSION vector[20]; DIMENSION ordenado[20]; DEFINIR vector COMO ENTERO; DEFINIR ordenado COMO ENTERO; DEFINIR aux COMO ENTERO; DEFINIR i COMO ENTERO; DEFINIR j COMO ENTERO; PARA i <-0 HASTA 19 CON PASO 1 HACER LEER vector[i]; FINPARA PARA i <- 0 HASTA 19 CON PASO 1 HACER PARA i <- 0 HASTA 19 CON PASO 1 HACER SI vector[i]>vector[j] ENTONCES aux<-vector[i]; vector[i]<-vector[j]; vector[j]<-aux; FINSI FINPARA FINPARA PARA i <-0 HASTA 19 CON PASO 1 HACER ordenado[i]<-vector[i]; ESCRIBIR ordenado[i]; FINPARA 34 FINPROCESO http://programadoraplicaciones.bichotoblog.com/programacion/continuando-conpseudocodigo.html PROCESO ejercicio_39 //anda // Habilitar permitir usar variables paras dimensionar arreglos en opciones de lenguaje //Nota: Las dimensiones variables tienen que ir después de la lectura de la cantidad de sus elementos DIMENSION A[5,10]; DIMENSION B[5,10]; DEFINIR A, B COMO ENTEROS; DEFINIR suma COMO ENTERO; DEFINIR fila COMO ENTERO; DEFINIR columna COMO ENTERO; PARA fila <- 0 HASTA 4 CON PASO 1 HACER PARA columna <- 0 HASTA 9 CON PASO 1 HACER LEER A[fila,columna]; FINPARA FINPARA PARA fila <- 0 HASTA 4 CON PASO 1 HACER PARA columna <- 0 HASTA 9 CON PASO 1 HACER LEER B[fila,columna]; FINPARA FINPARA DIMENSION suma[fila,columna]; PARA fila <- 0 HASTA 4 CON PASO 1 HACER PARA columna <- 0 HASTA 9 CON PASO 1 HACER suma[fila,columna] <- A[fila,columna] + B[fila,columna]; FINPARA FINPARA ESCRIBIR (suma[fila,columna]); FINPROCESO http://programador-apli.blogspot.com/2012/04/sumar-las-filas-y-columnas-de-una.html 35 PROCESO ejercicio_40 //anda DIMENSION A[5,4]; DEFINIR A COMO ENTERO; DEFINIR fila COMO ENTERO; DEFINIR columna COMO ENTERO; DEFINIR mayor COMO ENTERO; DEFINIR posicion_fila COMO ENTERO; DEFINIR posicion_columna COMO ENTERO; PARA fila <- 0 HASTA 4 CON PASO 1 HACER PARA columna <- 0 HASTA 3 CON PASO 1 HACER ESCRIBIR ("Introduce un número"); LEER A[fila,columna]; FINPARA FINPARA Mayor <- A[1,1]; posicion_fila <- 1; posicion_columna <- 1; PARA fila <- 0 HASTA 4 CON PASO 1 HACER PARA columna <- 0 HASTA 3 CON PASO 1 HACER SI (A[fila,columna] > mayor) ENTONCES Mayor <- A[fila,columna]; posicion_fila <- [fila]; posicion_columna <- [columna]; FINSI FINPARA ESCRIBIR ("El mayor es: "), mayor; ESCRIBIR ("La posición es: "), posicion_fila, posicion_columna; FINPARA FINPROCESO 36 PROCESO ejercicio_41 //anda (ir arriba) DIMENSION A[4,3]; DEFINIR A COMO ENTERO; DEFINIR fila COMO ENTERO; DEFINIR columna COMO ENTERO; DEFINIR mayor COMO ENTERO; DEFINIR menor COMO ENTERO; DEFINIR posicion_fila COMO ENTERO; DEFINIR posicion_columna COMO ENTERO; DEFINIR posicion_fila1 COMO ENTERO; DEFINIR posicion_columna1 COMO ENTERO; PARA fila <- 0 HASTA 3 CON PASO 1 HACER PARA columna <- 0 HASTA 2 CON PASO 1 HACER ESCRIBIR ("Introduce un numero"); LEER A[fila,columna]; FINPARA FINPARA Mayor <- A[1,1]; Posicion_fila <- 1; Posicion_columna <- 1; PARA fila <- 0 HASTA 3 CON PASO 1 HACER PARA columna <- 0 HASTA 2 CON PASO 1 HACER SI (A[fila,columna] > mayor) ENTONCES Mayor <- A[fila,columna]; Posicion_fila <- [fila]; Posicion_columna <- [columna]; FINSI FINPARA ESCRIBIR ("El mayor es: "), mayor; ESCRIBIR ("La posición es: "), posicion_fila, posicion_columna; FINPARA Menor <- 1; Posicion_fila1 <- 1; Posicion_columna1 <- 1; PARA fila <- 0 HASTA 3 CON PASO 1 HACER PARA columna <- 0 HASTA 2 CON PASO 1 HACER SI (A[fila,columna] < menor) ENTONCES Menor <- A[fila,columna]; Posicion_fila1 <- [fila]; Posicion_columna1 <- [columna]; FINSI FINPARA FINPARA ESCRIBIR ("El menor es: "), menor; ESCRIBIR ("La posición es: "), posicion_fila1, posicion_columna1; FINPROCESO 37 PROCESO ejercicio_42 //no anda, probado en código fuente, puede ser problema de código (ir al índice) DEFINIR indice COMO ENTERO; DEFINIR pul COMO ENTERO; DEFINIR tipo COMO CARACTER; DEFINIR numero COMO ENTERO; DEFINIR cociente COMO ENTERO; DEFINIR divisor COMO ENTERO; DEFINIR resto COMO ENTERO; DIMENSION resultado[20]; DEFINIR resultado COMO CADENA; ESCRIBIR ("Ingrese un número"); LEER numero; ESCRIBIR ("Ingrese el tipo de base"); LEER tipo; // O,H,B cociente <- numero; SEGÚN tipo HACER 'B': divisor <- 2; 'O': divisor <- 8; 'H': divisor <- 16; FINSEGÚN pul <- 0; REPETIR pul <- pul + 1; resto <- cociente % divisor; SEGÚN resto HACER 10: resultado[pul] <- 'A'; 11: resultado[pul] <- 'B'; 12: resultado[pul] <- 'C'; 13: resultado[pul] <- 'D'; 14: resultado[pul] <- 'E'; 15: resultado[pul] <- 'F'; De Otro Modo: resultado[pul] <- resto; //<- no coinciden los tipos FINSEGÚN cociente <- trunc(cociente/divisor); HASTA QUE (cociente = 0) PARA indice <-pul HASTA 1 CON PASO -1 HACER ESCRIBIR (resultado[pul]); FINPARA FINPROCESO Código fuente (con errores): #include <stdio.h> #include <stdlib.h> #include <conio.h> int main(){ int indice; int pul; char tipo; int numero; int cociente; int divisor; 38 int resto; char resultado[20]; printf ("Ingrese un n£mero "); scanf ("%d", &numero); fflush(stdin); printf ("Ingrese el tipo de base "); fflush(stdin); scanf ("%c", &tipo); // O,H,B cociente = numero; switch(tipo){ case 'B': divisor = 2; break; case 'O': divisor = 8; break; case 'H': divisor = 16; break; } pul = 0; do{ pul = pul + 1; resto = cociente % divisor; switch(resto){ case 10: resultado[pul] = 'A'; break; case 11: resultado[pul] = 'B'; break; case 12: resultado[pul] = 'C'; break; case 13: resultado[pul] = 'D'; break; case 14: resultado[pul] = 'E'; break; case 15: resultado[pul] = 'F'; break; default: resultado[pul] = resto; } cociente = cociente/divisor; }while (cociente != 0); for(indice = pul; pul >= 1; indice--){ printf("%d", resultado[pul]); } getch(); return 0; 39 } 40 PROCESO ejercicio_43 //anda DIMENSION A[20]; //de 20 elementos DEFINIR indice COMO ENTERO; DEFINIR suma COMO ENTERO; DEFINIR mayor COMO ENTERO; DEFINIR A COMO ENTERO; PARA indice <- 0 HASTA 19 CON PASO 1 HACER ESCRIBIR ("Introduce un número"); LEER A[indice]; FINPARA suma <- 0; PARA indice <- 2 HASTA 19 CON PASO 2 HACER suma <- suma + A[indice]; FINPARA mayor <- A[1]; PARA indice <- 0 HASTA 19 CON PASO 2 HACER SI (A[indice] > mayor) ENTONCES mayor <- A[indice]; FINSI FINPARA ESCRIBIR ("La suma es: "), suma; ESCRIBIR ("El mayor es: "), mayor; FINPROCESO 41 PROCESO ejercicio_44 //anda DIMENSION A[4,5]; DEFINIR A COMO ENTERO; DEFINIR fila COMO ENTERO; DEFINIR columna COMO ENTERO; DIMENSION V[20]; DEFINIR V COMO ENTERO; DEFINIR indice COMO ENTERO; DEFINIR intercambio COMO ENTERO; DEFINIR intermedio COMO ENTERO; DEFINIR saltador COMO ENTERO; PARA fila <- 0 HASTA 3 CON PASO 1 HACER PARA columna <- 0 HASTA 4 CON PASO 1 HACER ESCRIBIR ("Introduce un número"); LEER A[fila,columna]; FINPARA FINPARA saltador<-0; PARA fila <- 0 HASTA 3 CON PASO 1 HACER PARA columna <- 0 HASTA 4 CON PASO 1 HACER //V[((fila - 1) + 5) + columna] <- A[fila,columna]; V[columna+saltador] <- A[fila,columna]; SI columna % 5 = 0 entonces saltador<-saltador+5; FINSi FINPARA FINPARA REPETIR Intercambio <- 0; PARA indice <- 0 HASTA 18 CON PASO 1 HACER SI (V[indice] > V[indice + 1]) ENTONCES Intermedio <- V[indice]; V[indice] <- V[indice +1]; V[indice +1] <- intermedio; Intercambio <- 1; FINSI FINPARA HASTA QUE (intercambio = 0) PARA fila <- 0 HASTA 3 CON PASO 1 HACER PARA columna <- 0 HASTA 2 CON PASO 1 HACER A[fila,columna] <- V[((fila - 1) * 5) + columna]; FINPARA FINPARA Para fila <- 0 HASTA 19 CON PASO 1 HACER ESCRIBIR V[fila]; FINPARA FINPROCESO 42 PROCESO ejercicio_45 DIMENSION A[4,5]; DEFINIR intermedio COMO ENTERO; DEFINIR intercambio COMO ENTERO; DEFINIR fila COMO ENTERO; DEFINIR columna COMO ENTERO; DEFINIR A COMO ENTERO; PARA fila <- 0 HASTA 3 CON PASO 1 HACER PARA columna <- 0 HASTA 4 CON PASO 1 HACER ESCRIBIR ("Introduce un número"); LEER A[fila,columna]; FINPARA FINPARA REPETIR intercambio <- 0; PARA fila <- 0 HASTA 3 CON PASO 1 HACER PARA columna <- 0 HASTA 2 CON PASO 1 HACER SI (A[fila,columna] > A[fila,columna + 1]) ENTONCES intermedio <- A[fila,columna]; A[fila,columna] <- A[fila,columna + 1]; A[fila,columna + 1] <- intermedio; intercambio <- 1; FINSI FINPARA FINPARA HASTA QUE (intercambio = 0) PARA fila <- 0 HASTA 3 CON PASO 1 HACER ESCRIBIR A[fila,columna]; FINPARA FINPROCESO 43 PROCESO ejercicio_46 //anda DIMENSION A[20]; DEFINIR A COMO ENTERO; DEFINIR indice COMO ENTERO; DEFINIR indice1 COMO ENTERO; PARA indice <- 0 HASTA 19 CON PASO 1 HACER ESCRIBIR ("Introduce un número"); LEER A[indice]; FINPARA PARA indice <- 0 HASTA 19 CON PASO 1 HACER indice1 <- 2; MIENTRAS (indice1 < A[indice]) & (A[indice] % indice1 <> 0) HACER indice1 <- indice1 + 1; FINMIENTRAS SI (indice1 = A[indice]) ENTONCES ESCRIBIR A[indice], (" es primo"); FINSI FINPARA FINPROCESO Otro ejercicio http://programadoraplicaciones.bichotoblog.com/continu&o-con-pseudocodigo/ 44