Practicas Algoritmo 21-2
Practicas Algoritmo 21-2
Practicas Algoritmo 21-2
P02: Elaborar un programa que calcule cuántos números primos de cuatro dígitos cumplen con
la condición de que la suma de sus dígitos sea un cuadrado perfecto. El programa imprime en
una fila todos los números primos que cumplen la condición y en una segunda fila el número
total.
P03: Elaborar un programa que solicite el ingreso por teclado el valor del lado de un cuadrado
"T" (valor entero mayor o igual a 2) y el valor de "N" (número entero mayor a cero). Con esos
dos valores debe imprimir en pantalla la siguiente secuencia de asteriscos.
3era practica calificada
PC3-1: En un concurso de conocimientos se almacena en un arreglo unidimensional, la primera
letra de los nombres de N participantes, y en otro arreglo, las calificaciones, entre "A" y "D"
(ambas incluidas), obtenidas por cada participante. Se pide mostrar el nombre del participante
que obtuvo la mayor calificación, y en caso de existir más de uno, mostrarlos todos.
PC3-2: Construya un programa que permita guardar, en un arreglo, los doce primeros números
primos mayores a 50, que escritos a la inversa sigan siendo primos, pero diferentes al primero.
PC4-03: Construya un programa que cargue una matriz de N por M elementos, en una función
lea un dato entero menor a 10 y genere un segundo arreglo que contenga todos los elementos
del arreglo original de tal manera que sus filas estén desplazadas tantas veces como lo indique
el número leído.
Examen parcial
P01: Elaborar un programa que imprima en pantalla los "N" primeros números primos, que,
escrito a la inversa, sigan siendo primos, pero diferentes al primero. Ejemplos:
#include<stdio.h>
#include<math.h>
main(){
int i=1,j,buscar,cifras,digi,num,inv,divi1,divi2,primos=0;
do{
printf("Ingrese cantidad de primos a buscar: ");
scanf("%i",&buscar);
} while (buscar<=0);
while(primos!=buscar){
divi1=0;
for(j=2;j<i;j++){
if(i%j==0){divi1++;}
}
if(divi1==0){
//invertimos el numero
num=i;
cifras=log10(num)+1;
inv=0;
while(num>0){
digi=num%10;
inv=inv+digi*pow(10,cifras-1);
cifras--;
num=num/10;
}
if(i!=inv){ //El numero y el invertido deben ser diferentes
divi2=0;
for(j=2;j<inv;j++){
if(inv%j==0){
divi2++;
}
}
if(divi2==0){
primos++;
printf("%i, %i :%i\n",i,inv,primos);
}
}
}
i++;
}
printf("\nExisten %i primos que cumplen la condicion\
n",primos);
system("PAUSE");
}
P03: En una prueba de conocimientos, los alumnos que participan son evaluados en tres
pruebas. Las calificaciones de cada prueba van desde "A" hasta "D". Elaborar un programa
que:
Solicite el ingreso por teclado de la cantidad de alumnos que participan de la prueba.
Solicite, por cada alumno, los resultados obtenidos en cada una de las tres pruebas.
Imprime en pantalla el alumno que mayor calificación ha obtenido y sus respectivas
calificaciones. En caso de existir más de un estudiante con la misma mayor calificación, se debe
imprimir el último estudiante que lo obtuvo.
Ejemplo:
Ingrese el numero de alumno: 4
Alumno1: Prueba1=B, Prueba2=A, Prueba3=C
Alumno2: Prueba1=A, Prueba2=B, Prueba3=C
Alumno3: Prueba1=B, Prueba2=D, Prueba3=A
Alumno4: Prueba1=B, Prueba2=A, Prueba3=C
Mayor calificación:
Alumno4: Prueba1=B, Prueba2=A, Prueba3=C
#include <stdio.h>
main(){
int num,i,mejor=68*3,alumno; //ASCII D = 68
char p1,p2,p3,r1,r2,r3;
do{
printf ("Ingrese la cantidad de alumnos: ");
scanf ("%i",&num);
}while (num<0);
fflush(stdin);
for (i=1;i<=num;i++){
printf ("Alumno%i (Calificacion A-D):\n",i);
do{
printf ("\tIngrese Prueba1 = ");
scanf ("%c",&p1);
fflush(stdin);
}while (p1<'A'||p1>'D');
do{
printf ("\tIngrese Prueba2 = ");
scanf ("%c",&p2);
fflush(stdin);
}while (p2<'A'||p2>'D');
do{
printf ("\tIngrese Prueba3 = ");
scanf ("%c",&p3);
fflush(stdin);
}while (p3<'A'||p3>'D');
if (p1+p2+p3<=mejor){
mejor=p1+p2+p3;
alumno=i;
r1=p1; r2=p2; r3=p3;
}
}
if (num!=0){
printf ("Mayor calificacion:\n");
printf ("Alumno%i: Prueba1=%c, Prueba2=%c, Prueba3=%c\
n",alumno,r1,r2,r3);
}
else
printf ("Ningun alumno se presento a la prueba\n");
system ("PAUSE");
}
Examen final
Mediante una función genere los elementos del primer arreglo bidimensional con números
enteros random con valores comprendidos entre 1 y 30.
En otra función se debe almacenar en un segundo arreglo bidimensional (del cual usted por
programa deberá calcular el tamaño), los elementos de cada fila formados por la suma de los k
elementos adyacentes del arreglo original (empezando por la izquierda). Si quedan menos de k
elementos al final de cada fila, se suman los que quedan.
En otra función debe imprimir el primer y segundo arreglo bidimensional.
En otra función debe calcular el mayor y el menor elemento de cada fila del segundo arreglo
bidimensional.
Ejemplo:
Número de filas = 3
Número de columnas = 7
Valor de k = 2
El primer arreglo bidimensional es:
2 3 6 10 7 4 5
469 1 039
1 5 3 12 8 4 6
10 10 3 9
6 15 12 6
EF-03: Construya un programa que en la función principal declare dos arreglos: uno
unidimensional y otro bidimensional, cuyos tamaños deben ser ingresados por teclado.
En una segunda función los cargue con números random comprendidos entre 5 y 35 (incluido
los extremos).
Construya otra función que debe imprimir los dos arreglos y la palabra “VERDADERO “o “FALSO
“, dependiendo si los valores del arreglo unidimensional crecen y decrecen en forma alterna de
izquierda a derecha y para el caso del bidimensional dependiendo si la suma de los elementos
de cada columna crece y decrecen en forma intercalada.
7 10 5 12 2 6 VERDADERO
1 8 13
2 5 10 FALSO
37 4