Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Lima - 2017
La presentacin y disposicin de:
Introducion a la programacin y lenguaje C
Son propiedad del autor, Abraham Sopla Maslucn
Ingeniero de Sistemas por la Universidad Nacional de Cajamarca
Maestro en Ciencias de la computacin Tecnolgico de Monterrey, Mxico.
Doctorando en Ingeniera de Sistemas e Informtica, Universidad Nacional Mayor de San
Marcos, Per.
Profesor nombrado en la EAP de Ingeniera de Sistemas, Facultad de Ingeniera de Sistemas y
Mecnica Elctrica, Universidad Nacional Toribio Rodrguez de Mendoza. Fundador del Instituto
de ingeniera de software y del Instituto de estudios estadsticos y control de calidad.
abrahamsopla@gmail.com
abraham.sopla@untrm.edu.pe
i
4.4.2 Ejercicios con bucle for .................................................................................................... 38
4.4.3 Ejercicios con for anidado ............................................................................................... 48
4.4.4 La sentencia while ............................................................................................................ 48
4.5 EJERCICIOS CON BUCLE WHILE ................................................................................... 49
4.5.1 La sentencia do-while ...................................................................................................... 62
4.6 EJERCICIOS PROPUESTOS ......................................................................................... 64
CAPTULO IV ........................................................................................................................................ 65
FUNCIONES Y PROCEDIMIENTOS ......................................................................................................... 65
5.1 FUNCIONES........................................................................................................... 65
5.1.1 Argumentos de las funciones ......................................................................................... 66
5.1.2 Correspondencia entre argumentos .............................................................................. 66
5.1.3 Recursividad ...................................................................................................................... 66
5.1.4 Ejercicios con funciones y procedimientos ................................................................... 67
5.1.5 Ejercicios con funciones recursivas ................................................................................ 75
5.2 EJERCICIOS PROPUESTOS ......................................................................................... 81
CAPTULO V ......................................................................................................................................... 82
ARREGLOS............................................................................................................................................ 82
6.1 INTRODUCCIN A LOS ARREGLOS ................................................................................ 82
6.2 VECTOR O ARREGLO DE UNIDIMENSIONAL ..................................................................... 82
6.3 EJERCICIOS CON VECTORES O ARREGLOS UNIDIMENSIONALES ............................................. 83
6.4 MATRICES A ARREGLO BIDIMENSIONAL ......................................................................... 96
6.5 EJERCICIOS CON MATRICES O ARREGLOS BIDIMENSIONALES ............................................... 98
6.6 EJERCICIOS PROPUESTOS ....................................................................................... 101
6.6.1 Vectores y matrices ........................................................................................................ 101
6.6.2 Cadenas de caracteres .................................................................................................. 101
BIBLIOGRAFA.............................................................................................................................. 102
APNDICE A ................................................................................................................................... 103
APENDICE B ................................................................................................................................... 104
GLOSARIO DE TRMINOS .......................................................................................................... 108
ii
Algoritmos y Lenguaje C
Introduccin
Los estudiantes de las materias de lenguajes de programacin, tcnicas de programacin,
algoritmos, estructuras de datos y de la informacin, sistemas operativos, entre otros, darn fe de
lo complicado que a veces resultan estas materias cuando no entendemos cmo es que la
computadora interpreta internamente las lneas de cdigo escritas en algn lenguaje de
programacin para realizar una actividad. Quin tiene una nocin de cmo se
an los datos en una hoja de clculo Excel?, de manera que, luego de seleccionar una lista de datos,
pulsamos en el botn ordenar de la barra de herramientas y ya. Quin sabe cmo la computadora
calcula el trmino n de una sucesin de nmeros?, as podramos mencionar muchos casos ms.
Muchos operaramos las computadoras para resolver problemas sin antes hacer por lo menos
un pequeo plan acerca de la solucin o tantear el camino a seguir para llegar a la solucin de una
situacin problemtica dada. Aspectos que nos obligan a llevar largas horas frente a las
computadoras. Hay quienes creen que para ser buenos programadores hay que tener una
computadora en frente, pues esto no es cierto; ms cierto, es que primero sepamos resolver los
problemas usando algoritmos en pseudocdigo o diagramas de flujo para luego llevarlos a la
computadora. En estos casos queda claro que el uso de la computadora pasa a segundo plano. En
consecuencia, para resolver un problema en computadora mediante un programa primero hay que
hacer un plan, en otras palabras un algoritmo y en eso queremos ahondar en este libro.
Los algoritmos que desarrollamos en este libro estn representados usando pseudocdigo e
implementados en lenguaje C, evitando complicaciones en el uso del lenguaje. La claridad con que
estn escritos hace que estos se puedan implementar fcilmente en otros lenguajes de programacin
como java. Es as como se cumple nuestro propsito de ayudar al lector a dar el paso seguro del
algoritmo en pseudocdigo al programa, situacin difcil para muchos principiantes. El objetivo es
que tengan un buen comienzo en este largo camino de la programacin y que este sea el ms corto
posible.
En los primeros captulos del libro, encontramos conceptos suficientes para desarrollar e
implementar los algoritmos en lenguaje C. Se debe tener en cuenta que este documento no tiene
prioridad en el estudio del lenguaje C sino ms bien en el uso del mismo en la resolucin de
problemas comunes. Segn el avance se trata ejercicios combinados con los diferentes tipos de
sentencias y grado de dificultad. Algunos de los ejercicios solucionados se encuentran propuestas
por otros autores, sin embargo, nuestro aporte est en proponer un mtodo simple y efectivo para
solucionarlos, explicando desde el algoritmo que soluciona un problema hasta la construccin del
programa.
Este trabajo est orientado a estudiantes que se inician en educacin superior, en carreras
de ingeniera mecnica, elctrica, de sistemas, de computacin e informtica, electrnica, industrial,
etc., a quienes se les sugiere estudiar detenidamente los casos que presentamos. Claro est que nos
es lo ideal que se los copien o que se memoricen las soluciones que aqu proponemos, sino que usen
como gua para poder solucionar otros problemas. No ms queda decir que, disfruten de este
material didctico para fortalecer su formacin acadmica y profesional.
Captulo I
Indicaciones para
principiantes
1.1 Pseudocdigo
El pseudocdigo es un lenguaje general, de especificacin de la solucin del problema
mediante un algoritmo. Se considera como el paso anterior a la codificacin. La ventaja es que, este
lenguaje puede ser traducido indistintamente y sin problemas a cualquier lenguaje de programacin
de computadora. Un algoritmo es una secuencia de pasos lgicos que nos conducen hacia la solucin
de un determinado problema.
Nosotros implementaremos los algoritmos usando un lenguaje comn, el ms sencillo para
todos. Adelantamos, si es necesaria la palabrera, ser solamente para aclarar situaciones puntuales
orientados a la solucin de dificultades. La idea en fin, es solucionar los problemas y as lo haremos,
sabiendo que lo ms importante antes de empezar a escribir un programa, es necesario hacer el
algoritmo.
Lgicamente, si ya tiene el programa que soluciona un problema, ya no necesitamos hacer
el algoritmo, esto se da en las personas que tienen mucha experiencia en la programacin,
definitivamente todos empezamos haciendo algoritmos; pero si de situaciones acadmicas se trata,
hacer el algoritmo teniendo el programa no necesita de ningn esfuerzo, solamente adherirse a
algunas reglas y trminos de pseudocdigo, como inicio, fin, leer, asignar, imprimir.
3. Comprobando
Consiste en simular para verificar si el algoritmo resuelve el problema realmente, se hacen
con los datos posibles de entrada, puede realizarse en papel y a mano.
Proceso 1:
Luego
Proceso 2:
3. Comprobando.
ENTRADAS SALIDAS
Basemayor Basemenor altura rea
20 4 5 60
15 10 4 50
24 12 6 108
22 15 7 129,5
Algoritmo
Entero area, basemayor, basemenor, altura
Real Area
Inicio
Area ((basemayor+basemenor)/2)* altura
Imprimir area
Fin
NOTA: cuando no se declaran las variables se supone que estas ya estn declaradas.
Algoritmo
Entero suma, a
Inicio
Suma0
Desde a=10 hasta a<=50 hacer
Sumasuma+(1/a)
Fin Desde
Imprimir Suma
Fin
Captulo II
Apuntes de lenguaje C
Para escribir el programa en lenguaje C podemos usar el editor de cdigo llamado Sc1, obtenindolo
de la direccin http://www.scintilla.org. Asimismo debe instalar el compilador Borland C++ 5.5
despus de bajarlo de la direccin http://www.programacionenc.net/modules.php u otra que crea
conveniente1.
1. Una vez terminada la instalacin, crea con el bloc de notas un archivo, y pega en el las lneas
siguientes, luego guarda el archivo con el nombre: bcc32.cfg, en la carpeta:
C:\Borland\BCC55\Bin
-I"C:\Borland\BCC55\Include"
-L"C:\Borland\BCC55\Lib;C:\Borland\BCC55\Lib\PSDK"
1
Los pasos se describen en http://www.programacionenc.net
3. Luego, del mismo modo crea un archivo con el bloc de notas, que incluya las lneas
siguientes, gurdalo con el nombre: ilink32.cfg, en la carpeta: C:\Borland\BCC55\Bin
-L"C:\Borland\BCC55\Lib;C:\Borland\BCC55\Lib\PSDK"
4. Ahora vamos a realizar una configuracin adicional, esto se hace para que puedas compilar
tus programas sin importar en donde se encuentre el archivo fuente. La configuracin difiere
de acuerdo al sistema operativo que tengas, pues a partir de Windows 2000 se tiene una
diferente forma de manipular el fichero: autoexec.bat. Si usas Windows 95, 98 o Me abre
el archivo: autoexec.bat (que se encuentra en: C:\) con el Bloc de notas y aade la siguiente
lnea al final del archivo:
set PATH=C:\Borland\BCC55\Bin;%PATH%
5. Una vez hecho esto reinicia el computador para que se actualice el archivo.
Si usas Windows 2000, XP superior. Ve hacia el Panel de Control, haz clic en el icono
Sistema y continuacin en la ficha Opciones avanzadas.
6. Haz clic en el botn Variables de entorno y fjate en el cuadro Variables del sistema.
7. Selecciona la variable Path y pulsa el botn Modificar, ve al final del cuadro Valor de la
variable y pega lo siguiente ah:
;C:\Borland\BCC55\Bin
Nota que se aade un punto y coma antes de todo, esto es para separar las variables del
sistema que ya estn creadas, producto de la instalacin del resto de programas de tu PC.
#include<conio.h>
#include <stdio.h>
void main( ) {
printf("Hola mundo");
getch();
}
1. Presiona CTRL+F7, para compilar el programa, luego presiona F5, para ejecutarlo, vers
que tanto la compilacin como la ejecucin del programa aparecen en la parte inferior de la
pantalla, aunque tambin puede ejecutar el programa hello.exe, recin generado desde el
Explorador de Windows.
Por ejemplo puede copiar el cdigo de la solucin del Ejercicio 21 de captulo V. Los pasos para la
escritura, compilacin y ejecucin, en el editor Sc1, de ste cdigo sera:
Paso 3: Compilamos el programa apretando la tecla Ctrl+F7 y lo ejecutamos apretando la tecla F5.
2.4 Libreras
C
es un lenguaje pequeo. La funcionalidad de C se obtiene a travs de un rico conjunto de
bibliotecas de funciones, llamados tambin libreras.
Por ejemplo la funcin sqrt pertenece a la librera math.
NOTA: Si usted intenta usar la funcin sqrt sin declarar la librera math, tendr errores
justamente en la lnea donde este escrita esta funcin. Otras funciones de la librera math
seran sin, cos, tan, etc.
Otras libreras son stdio, stdlib, etc. Las libreras y sus funciones estn escritas en la ayuda
del lenguaje C.
Cada librera contiene sus propias funciones!
La funcin sqrt devuelve la raz cuadrada de un nmero, ejm sqrt(25) regresa 5. La librera
stdio, es la que mas solemos usar para resolver problemas sencillos como los que veremos mas
adelante.
Variables globales: son aquellas que se definen fuera de las funciones. Pueden ser utilizadas en
cualquier funcin que se declaren despus de ellas, mantienen su valor entre las distintas llamadas.
{int s;
s=a+b;
return s;
}
Nota importante
Del ejemplo anterior:
x y n son variables globales
c y s son variables locales.
a) C requiere un punto y coma al final de cada sentencia.
b) printf es una funcin estndar de C, que se usa para escribir o imprimir datos.
c) \n significa salto de lnea.
d) % Salida formateada.
Tipo Variable;
Ejemplo: int a;
En este caso la variable a de tipo entero, aceptar valores enteros, como 2, -20, 15, 0, -658,
etc.
char mensaje[20];
En este caso la variable mensaje aceptar un texto o cadena cuya longitud ser de 20 caracteres
como mximo. La variable mensaje es un vector o arreglo unidimensional de 20 espacios, en cada
espacio se almacena una letra de la cadena. Los arreglos se estudiarn al final de este libro.
Los tipos de datos bsicos tienen varios modificadores que los preceden. Se usa un modificador para
alterar el significado de un tipo base para encajar con las necesidades de diversas situaciones.
Por ejemplo:
La sentencia(s) de formato se encierra entre comillas " ", y enseguida las variables. Asegurarse que
el orden de formateo y los tipos de datos de las variables coincidan debe existir correspondencia
entre las variables y los formatos- en este caso, el valor de ape ser de tipo carcter, i entero
decimal, x de coma flotante.
scanf() es la funcin para entrar valores a variables. Su formato es similar a printf.
Por ejemplo:
Observar que se antepone & a los nombres de las variables, excepto a la variable de tipo cadena de
caracteres que es de tipo string.
2.8 Operadores
2.8.1 El parntesis
Los parntesis se usan para agrupar datos. Es decir, por ejemplo, no es lo mismo, 4+8/2 que
(4+8)/2, si evaluamos en el primer caso tendremos como resultado 8 y en el otro 6, e ah la
importancia del parntesis bien usado.
Tenga en cuenta los tres resultados anteriores, y vea la importancia del parntesis, dependiendo
de la operacin que desea realizar ser utilizado. Sin embargo todos los operadores tienen una
prioridad:
Los operadores de mayor prioridad son evaluados antes que los que tienen menor prioridad.
Los operadores que tienen la misma prioridad son evaluados de izquierda a derecha, por lo
que:
En a + b c es evaluado como (a + b) c.
En a - b c es evaluado como (a - b) c.
Captulo III
Estructuras de control
Programa
#include<conio.h>
#include<stdio.h>
int x;
main()
{int a,b,suma;
a=5;
b=12;
suma=a+b;
suma=suma+b;
printf("%d",suma);
getch();
}
En este caso, la evaluacin se hace lnea por lnea, siguiendo un orden. En el caso anterior valor
de suma que se imprime es 29.
caso de que el valor de la variable sea FALSO y cualquier otro nmero cuando el valor es
VERDADERO. Cuando se declaran variables no se tiene en cuenta la ortografa o la gramtica.
a = 2
a = a + 1
b = a * 2
b = b - 1
c = a + 2 * b
Presentar c
Rastreo: Para el rastreo hay que asignarle a cada lnea un nmero, de la siguiente manera, de
antemano ya nos habremos fijado que el valor de salida es el de la variable c, el problema sera
saber el valor de esta variable c que se mostrar al final o en la lnea 6.
1) a = 2
2) a = a + 1
3) b = a * 2
4) b = b - 1
5) c = a + 2 * b
6) Presentar c
Variables
Resultado: valor de la expresin luego de ser evaluada.
x : guarda un valor numrico ingresado.
w : guarda un valor numrico ingresado.
Algoritmo
Real Resultado, x, w
Inicio
Leer x,w
Resultado(x+w)/(2*w)
Mostrar Resultado
Fin
Programa
#include<stdio.h>
#include<conio.h>
main(void)
{float resultado,x,w;
//se escriben dos valores separados por la barra espaciadora
printf("ingrese el valor de x , tambin de w \n");
//se leen o capturan dos valores escritos en las variables x y
w.
scanf("%f %f",&x,&w);
//Se evala la expresin y el resultado es asignado a la
variable resultado.
resultado=(x+w)/(2*w);
//se imprime el valor de la variable resultado.
printf("%f",resultado);
getch();
}
Cometario:
Printf: Permite escribir en pantalla un mensaje o imprimir un resultado, producto de un proceso.
Scanf: Permite capturar los valores de los datos ingresados, escritos a travs de un printf.
//Evita la ejecucin de esta lnea, se usa para escribir comentarios, como aclaraciones,
recomendaciones, explicaciones, etc.
/* */ Si necesita escribir un comentario extenso, es decir de varias lneas, puede usarlo de la
siguiente manera.
/*...
...Comentario...
... */
\n Permite escribir datos en la lnea siguiente (salta una lnea). Si se escribe \n\n\n
saltaremos 3 lneas, \n\n\n\n saltaremos hasta la cuarta lnea siguiente para imprimir o escribir
el siguiente dato.
Explicacin:
Estas dos lneas de cdigo:
Pueden ser escritas en cuatro lneas de la siguiente manera, con la diferencia de que la forma de
capturar de los datos cambia. Quedando de la siguiente manera.
Variables
x : guarda un valor numrico ingresado,
y : guarda un valor numrico ingresado,
resultado : guarda el valor resultado de la expresin.
Algoritmo
Real x, y, resultado
Inicio
Leer x, y
resultadoraizcuadrada(3*x*x+4*y*y)
Mostrar resultado
Fin
Programa
#include<stdio.h>
#include<math.h>
#include<conio.h>
main(void)
{int x,y;
float resultado;
printf("ingrese el valor de x, tambin y \n");
scanf("%d %d",&x,&y);
resultado=sqrt(3*x*x+4*y*y);
printf("%f",resultado);
getch();
}
Comentario
resultado=sqrt(3*x*x+4*y*y);
printf("%f",resultado);
printf("%f", sqrt(3*x*x+4*y*y));
#include<conio.h>
#include<stdio.h>
#include<math.h>
main(void)
{int x,y;
printf("ingrese el valor de x, tambin y \n");
scanf("%d %d",&x,&y);
printf("%f", sqrt(3*x*x+4*y*y));
getch();
}
Variables
total : guarda el valor del total ingresado
subtotal: guarda el valor del subtotal calculado
igv : guarda el valor del total ingresado
Algoritmo
Real total, subtotal, igv
Inicio
Leer total
Igv 0.19*total
Subtotal total-igv
Mostrar subtotal, igv
Fin
Programa
#include<conio.h>
#include<stdio.h>
main()
{float total,subtotal,igv;
printf("ingrese el total a pagar: ");
scanf("%f",&total);
igv=0.19*total;
subtotal=total-igv;
printf("total: %f, subtotal: %f, igv: %f",total,subtotal,igv);
getch();
}
e) a/c
f) a div b
g) a * b /c
h) a * (b/c)
i) (a*c) mod b
j) a * (c mod b)
4.2.1 La sentencia if
Las tres formas como se puede emplear la sentencia if son:
If (condicin)
{Sentencias1}; If doble: Si condicin es verdadera se
entonces se ejecutan las sentencias1, en
else caso contrario se ejecutan las sentencias2.
{Sentencias2};
if (condicin1)
{Sentencias1};
else if (condicin2)
{Sentencias2}; If anidado: La sentencia que est asociada
a la palabra reservada else se ejecuta si
else if (condicin3)
todas las condiciones de la estructura if
{Sentencias3}; fueron falsas.
...
else
{SentenciasN};
Si condicin entonces
Sentencias1; Condicional doble: Si la condicin es
Sino verdadera se ejecutan las sentencias1, en
Sentencias2; caso contrario se ejecutan las sentencias2.
Fin Si
Si condicin1
Sentencias1;
Sino Si condicin2
Condicional anidado: La sentencia que
Sentencias2; est asociada a la palabra reservada sino se
Sino Si condicin3 ejecuta si todas las condiciones de la
estructura if fueron falsas.
Sentencias3;
...
Sino
SentenciasN;
Fin Si
Variables
Nu2m: Nmero que se ingresa por el teclado
Algoritmo
Entero num
Inicio
Leer num
Si num>0 entonces
Imprimir num es positivo
Fin Si
Fin
Programa
#include<conio.h>
#include<stdio.h>
main(void)
{int num;
printf("ingrese un nmero.... ");
scanf("%d",&num);
if(num>0)
printf("el nmero es positivo");
getch();
}
EJERCICIO 06 Hacer un algoritmo para un programa que calcule el pago que hacen un
grupo de personas para ver una pelcula teniendo en cuenta que si el
grupo es menor de 8 personas el pago es de 1.5 soles por persona y para grupos de 8 personas
o ms el pago es 0.5 soles por persona.
Variables
num: Nmero que se ingresa por el teclado e indica la cantidad de personas
Pago: El valor del pago que se calcular.
Algoritmo
Real num, pago
Inicio
Leer num
Si num>=8 entonces
Pago=0.5*num
Sino
Pago=1.5*num
Fin Si
Imprimir pago
Fin
Programa
#include<conio.h>
#include<stdio.h>
main(void)
{float pago;
int num;
printf(" ingrese nmero de personas ");
scanf("%d",&num);
if(num<8)
pago=1.5*num;
else
pago=0.5*num;
printf("el pago es %f",pago);
getch();
}
Variables
num : valor numrico entero ingresado,
horas : cantidad de horas,
rmin : cantidad de segundos, resto de num,
min : cantidad de minutos,
seg : cantidad de segundos, resto de min.
Algoritmo
Entero num, horas, rmin, min
Inicio
Leer num
Si num>10000 entonces
Horascociente(num,3600)
Rminresto(num,3600)
Mincociente(rmin,60)
Segresto(rmin,60)
Mostrar horas, min, seg
Fin Si
Fin
Programa
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
main(void)
{int num, rmin, seg;
div_t horas,min;
printf("ingrese un nmero mayor de 10000 ........ ");
scanf("%d",&num);
if(num>10000)
{horas=div(num,3600);
rmin= num % 3600;
min=div(rmin,60);
seg=rmin%60;
printf("%d HORAS\n",horas);
printf("%d MINUTOS\n",min);
printf("%d SEGUNDOS\n",seg);
}
getch();
}
Variables
x : Nmero de cursos
Pago : guarda el pago calculado
Algoritmo
Entero x
Inicio
Leer x
Si x<6 entonces
Imprimir 20*x
Sino
Imprimir el pago es 120 soles
Fin si
Fin
Programa
#include<conio.h>
#include<stdio.h>
main(void)
{int x;
printf("ingrese el nmero de cursos desaprobados \n");
scanf("%d",&x);
if(x<=6) printf("el pago ser de %d soles ",x*20);
else printf("el pago ser de 120 soles");
getch();
}
Variables
categoria : Asume los valores exsoldado o regular.
nc : Nmero de cursos.
pago : Pago por el total de cursos matriculados
Algoritmo
Alfanumerico categoria
Entero nc, pago
Leer categora
Leer nc
Inicio
Si categora exsoldado entonces
Pagonc*30
Imprimir ex soldado, nc, pago
Sino
Pagonc*50
Imprimir regular, nc, pago
Fin Si
Fin
Programa
#include<stdio.h>
#include<conio.h>
main(void)
{int x,pago,nc;
printf("ingrese la categora: 1) Ex soldado Otro)
Regular\n");
scanf("%d",&x);
printf("ingrese el nmero de cursos\n");
scanf("%d",&nc);
if(x==1)
printf("categora: ex soldado, %d cursos, pago: %d soles
",nc,nc*30);
else
printf("categora: regular, %d cursos, pago: %d soles
",nc,nc*50);
getch();
}
mujeres de 21 aos o ms pagan 500 soles. Escribir el algoritmo del programa que imprima la
edad del conductor, sexo, y el pago correspondiente para los clientes de la aseguradora.
Variables
sexo : Almacena 1 (masculino), 2 (femenino).
edad : Edad del cliente.
pago : valor del pago que har el cliente
Algoritmo
Entero sexo, edad, pago
Inicio
Leer sexo, edad
Si sexomasculino entonces
Si edad<25 entonces
Pago1000
Imprimir edad, sexo, pago
Sino
Pago700
Imprimir edad, sexo, pago
Fin Si
Si no
Si edad<21 entonces
Pago800
Imprimir edad, sexo, pago
Sino
Pago500
Imprimir edad, sexo, pago
Fin si
Fin si
Fin
Programa
#include<conio.h>
#include<stdio.h>
main(void)
{int x,pago,edad;
printf("ingrese el sexo: 1. Masculino 2.Femenino \n");
scanf("%d",&x);
printf("ingrese la edad \n");
scanf("%d",&edad);
if(x==1)
if(edad<25)
printf("edad: %d aos, sexo: masculino, pago: %d soles
",edad,1000);
else
printf("edad: %d aos, sexo: masculino, pago: %d soles
",edad,700);
else
if(edad<21)
printf("edad: %d aos, sexo: femenino, pago: %d soles
",edad,800);
else
Variables
numero : Nmero ingresado por el teclado
Algoritmo
Entero numero
Inicio
Leer numero
Si nmero >=0 entonces
Si nmero>0 entonces
Imprimir nmero, POSITIVO
Sino
Imprimir nmero, CERO
Fin si
Sino
Imprimir nmero, NEGATIVO
Fin Si
Fin
Programa
#include<conio.h>
#include<stdio.h>
main(void)
{int num;
printf("ingrese un nmero\n");
scanf("%d",&num);
if(num>=0)
if(num>0)
printf("%d POSITIVO",num);
else
printf("%d CERO",num);
else
printf("%d NEGATIVO",num);
getch();
}
Variables
num : cantidad de sillas compradas,
tot : Total a pagar.
Algoritmo
Entero num, tot
Inicio
Leer num, tot
Si num<=8 entonces
Si num<=4 entonces
Tot =num*15
Sino
tot=num*11
Fin si
Sino
tot=num*10
Fin si
Imprimir tot
Fin
Programa
#include<conio.h>
#include<stdio.h>
main(void)
{int num,tot;
printf("ingrese un nmero de sillas\n");
scanf("%d",&num);
if(num<=8)
if(num<=4)
tot=num*15;
else
tot=num*11;
else
tot=num*10;
printf("%d soles",tot);
getch();
}
Variable
Nmero : Nmero correspondiente al da de la semana.
Algoritmo
Entero numero
Inicio
Leer nmero
Segun numero sea
Case 1
Imprimir " LUNES"
Case 2
Imprimir "MARTES"
Case 3
Imprimir "MIERCOLES
Case 4
Imprimir "JUEVES"
Case 5
Imprimir "VIERNES"
Case 6
Imprimir "SABADO"
Case 7
Imprimir "DOMINGO
Sino
Imprimir "SOLO NMEROS ENTRE 1 Y 7........ "
Fin Segun
Fin
Programa
#include<conio.h>
#include<stdio.h>
main(void)
{int dia;
printf("ingrese un nmero entre 1 y 7........ ");
scanf("%d",&dia);
switch(dia)
{
case 1:
printf(" LUNES \n");
break;
case 2:
printf(" MARTES \n");
break;
case 3:
printf(" MIRCOLES\n");
break;
case 4:
printf(" JUEVES\n");
break;
case 5:
printf(" VIERNES\n");
break;
case 6:
printf(" SABADO\n");
break;
case 7:
printf(" DOMINGO\n");
break;
default:
printf(" SOLO NMEROS ENTRE 1 Y 7........ ");
}
getch();
}
Variables
opcion : 1 para calcular el rea, 2 para calcular la base, 3 para calcular la altura.
Base : Valor de la base del triangulo
Altura : Valor de la altura del triangulo
Area : Valor del rea del triangulo
Algoritmo
Entero opcion, base, altura, area
Inicio
Leer opcion
Segun opcin sea
Caso 1
Leer base, altura
area(base*altura)/2
Imprimir area
Caso 2
Leer area, altura
Base2*area/altura
Imprimir base
Caso 3
Leer area,base
Altura2*area/base
Imprimir altura
Caso contrario
Imprimir " Eso es todo amigo
Fin Segn
Fin
Programa
#include<conio.h>
#include<stdio.h>
main(void)
{int operacion;
printf("EJERCICIOS DE LOS TRINGULOS ........ \n");
printf("============================ \n\n\n");
printf("1 para calcular el rea de un tringulo \n");
printf("2 para calcular la base \n");
printf("3 para calcular la altura \n\n");
printf("ingrese una opcin ........ ");
scanf("%d",&operacion);
switch(operacion)
{
float area, altura, base;
case 1:
printf("AREA DEL TRINGULO \n");
printf("ingrese la base ........ ");
scanf("%f",&base);
printf("ingrese la altura ........ ");
scanf("%f",&altura);
printf("el area del tringulo es %f ",base*altura/2);
break;
case 2:
printf("BASE DE UN TRINGULO \n");
printf("ingrese el area ........ ");
scanf("%f",&area);
printf("ingrese la altura ........ ");
scanf("%f",&altura);
printf("la base de area del tringulo es %f ",2*area/altura);
break;
case 3:
printf("ALTURA DE UN TRINGULO \n");
printf("ingrese el area ........ ");
scanf("%f",&area);
printf("ingrese la base ........ ");
scanf("%f",&base);
Algoritmo
En este caso usted puede guiarse del algoritmo del ejercicio 14 y escribir el proceso matemtico
respectivo para obtener el algoritmo buscado.
Programa
#include<conio.h>
#include<stdio.h>
#include<math.h>
main(void)
{int operacion;
printf("CALCULO DE AREAS ........ \n");
printf("============================ \n\n\n");
printf("1 para calcular el rea de un tringulo \n");
printf("2 para calcular el rea de un trapecio \n");
printf("3 para calcular el rea de un rectngulo \n");
printf("4 para calcular el rea de un tringulo en funcin de sus
lados\n\n\n");
printf("ingrese el nmero que le corresponde al rea que desea
calcular ........ ");
scanf("%d",&operacion);
switch(operacion)
{
case 1:
int bt,ht;
printf("AREA DEL TRINGULO \n");
printf("ingrese la base ........ ");
scanf("%d",&bt);
printf("ingrese la altura ........ ");
scanf("%d",&ht);
printf("el area del tringulo es %d ",bt*ht/2);
break;
case 2:
int bmayt,bment,at;
printf("AREA DEL TRAPECIO \n");
printf("ingrese la base mayor ........ ");
scanf("%d",&bmayt);
printf("ingrese la base menor ........ ");
scanf("%d",&bment);
printf("ingrese la altura del trapecio ........ ");
scanf("%d",&at);
printf("el area del trapecio es %d
unidades",((bmayt+bment)/2)*at);
break;
case 3:
int ac,hc;
printf("AREA DE UN RECTANGULO \n");
printf("ingrese la ancho ........ ");
scanf("%d",&ac);
printf("ingrese la alttura ........ ");
scanf("%d",&hc);
printf("el area del cuadrado es %d ",ac*hc);
break;
case 4:
int a,b,c;
float s;
printf("REA DEL TRINGULO EN FUNCIN DE SUS LADOS \n");
printf("ingrese lado a ........ ");
scanf("%d",&a);
printf("ingrese lado b ........ ");
scanf("%d",&b);
printf("ingrese lado c......... ");
scanf("%d",&c);
s=(a+b+c)/2;
printf("el area del tringulo es %f unidades",sqrt(s*(s-a)*(s-
b)*(s-c)));
break;
default:
printf(" nada mas ........ ");
}
getch();
}
V : Variable contador,
valorInicial : Valor inicial de V,
valorFinal : Valor final de V.
Variable
X : asume valores desde 10 hasta 30,
Area : asume el valor del rea.
Algoritmo
Entero x, area
Inicio
Desde x=10 hasta 30 hacer
Area=100-2*x
Imprimir x, area
Fin Desde
Fin
Programa
#include<conio.h>
#include<stdio.h>
main(void)
{int x;
for(x=10; x<=30;x++)
printf("%d unidades, para x=%d \n",x*(100-2*x),x);
getch();
}
Variables
num : guarda un nmero ingresado,
mayor : Para asignarle el valor del mayor de los nmeros ledos,
menor : Para asignarle el valor del menor de los nmeros ledos,
x : Permite contar los 8 ingresos (valores desde 1 hasta 8).
Algoritmo
Entero num, mayor, menor, x;
Inicio
mayor0;
menor10000;
Desde x=1 hasta 8 hacer
leer num
si mayor<num entonces mayornum;
si menor>num entonces menornum;
Fin Desde
Programa
#include<stdio.h>
main(void)
{int num,mayor,menor,x;
mayor=0;
menor=10000;
for(x=1; x<=8;x++)
{ printf("INGRESAR NMERO %d : ",x);
scanf("%d",&num);
if(mayor<num) mayor=num;
if(menor>num) menor=num;
}
printf("EL NUMERO MAYOR ES : %d Y EL NUMERO MENOR ES : %d
\n",mayor,menor);
getch();
}
EJERCICIO 18 Hacer el algoritmo para el ejercicio 16, para encontrar solamente el valor
de la mayor rea e imprimir el valor de x para el esta rea mxima.
Variables
area : Valor del area
x : valor de x.
maxarea : valor de la mxima rea.
maxx : valor delmximo valor de x.
Algoritmo
Entero area, x, maxarea, maxx
Inicio
maxarea0;
Desde x=10 hasta 30 hacer
areax*(100-2*x);
Si maxarea<area entonces
maxareaarea;
maxxx
Fin Si
Fin Desde
Imprimir maxarea, maxx
Fin
Programa
#include<conio.h>
#include<stdio.h>
main(void)
{int area, x;
int maxarea,maxx;
maxarea=0;
for(x=10; x<=30;x++)
{
area=x*(100-2*x);
if(maxarea<area)
{maxarea=area;
maxx=x;}
}
printf("Area maxima %d unidades, para x=%d \n",maxarea,maxx);
getch();
}
Ejemplo:
Pago por
Nombre Sexo *nht Total
hora
A M 50 5 250
E F 60 4 240
I M 70 6 420
O F 50 6 300
U F 50 10 500
E M 70 7 490
*Nmero de horas trabajadas
Variables
x : asume valores de 1 hasta 6,
pht : pago por hora trabajada,
nht : nmero de horas trabajadas,
sexo : sexo,
ptt : pago total,
sumasm : suma de pagos de las hombres,
sumasf : suma de pagos de las mujeres,
sm : nmero de hombres cuyos datos se ingresaron,
sf : nmero de mujeres cuyos datos se ingresaron,
nombre : nombre de los trabajadores.
Algoritmo
Entero x, pht, nht, sexo, ptt, sumasm, sumasf, sm, sf
Alfanumerico nombre
Inicio
sumasm0;
sumasf0;
sm0;
sf0;
Desde x=1 hasta 6 hacer
Leer sexo
Si sexo=1 entonces
smsm+1;
Leer nombre,nht, pht
pttnht*pht;
Imprimir nombre, ptt
sumasmsumasm+ptt
Else
sfsf+1;
Leer nombre, nht, pht
pttnht*pht;
Imprimir nombre, ptt
sumasfsumasf+ptt
Fin Si
Fin Desde
Imprimir sumasm, sumasm/sm
Imprimir sumasf, sumasf/sf
Fin
Programa
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int x,pht,nht,sexo,ptt,sumasm,sumasf;
float sm,sf;
main(void)
{char nombre[20];
sumasm=0;
sumasf=0;
sm=0;
sf=0;
for(x=1; x<=6;x++)
{printf("ingrese sexo 1 varon, 2 mujer\n ");
scanf("%d",&sexo);
if(sexo==1)
{sm=sm+1;
printf("ingrese nombre \n ");
scanf("%s",&nombre);
printf("ingrese nro de horas trabajadas \n");
scanf("%d",&nht);
printf("ingrese pago por hora trabajada\n");
scanf("%d",&pht);
ptt=nht*pht;
printf("%s GANA %d SOLES \n\n",nombre,ptt);
sumasm=sumasm+ptt;}
else
{sf=sf+1;
printf("ingrese nombre \n ");
scanf("%s",&nombre);
printf("ingrese nro de horas trabajadas \n");
scanf("%d",&nht);
printf("ingrese pago por hora trabajada\n");
scanf("%d",&pht);
ptt=nht*pht;
printf("%s GANA %d SOLES \n\n",nombre,ptt);
sumasf=sumasf+ptt;}
}
printf("los HOMBRES GANAN TOTAL: %d SOLES, PROMEDIO: %f
\n",sumasm,sumasm/sm);
printf("las MUJERES GANAN TOTAL: %d SOLES, PROMEDIO:
%f",sumasf,sumasf/sf);
getch();
}
Variables
a : Asume los valores de los numeradores,
c : Indica las 14 repeticiones,
suma : Acumula el valor de la suma.
Algoritmo
Real a, suma;
Entero c
Inicio
a1
suma0.5
Desde c=1 hasta c<14 hacer
aa*2+1
sumasuma+(a/(a+1))
Fin Desde
Imprimir suma
Fin
Nota: Tenga en cuenta el bucle es de 14 repeticiones por que suma se inicializa en 0.5.
Programa
#include<stdio.h>
main(void)
{float a,c,suma;
a=1;
suma=0.5;
for(c=1;c<15;c++)
{a=a*2+1;
suma=suma+(a/(a+1));}
printf("%lf",suma);
getch();
}
Variables
fac : acumulador del valor del factorial del numero ingresado,
c : cuenta el nmero de repeticiones,
num : el nmero cuyo factorial se va a calcular.
Algoritmo
Entero c, num, fac
Inicio
Leer num
Fac1
Desde c=1 hasta num hacer
fac=fac*c
Fin Desde
Imprimir num, fac
Fin
Programa
#include<conio.h>
#include<stdio.h>
main(void)
{int c,num;
float fac;
printf("ingrese el nmero n para calcular su factorial ");
scanf("%d",&num);
fac=1;
for(c=1;c<=num;c++)
fac=fac*c;
printf("el factorial de %d es %lf",num,fac);
getch();
}
Ejemplo:
Horas de Sueldo
Nombre Total Impuesto Neto Edad
trabajo por hora
Juan Sopla 275 50 35 5 240 57
La segunda parte debe informar sobre el pago total promedio para los empleados de al
menos 55 aos. El nombre y el pago total para el empleado de menos de 55 aos con mximo
pago total (se puede suponer que no hay empate).
Ejemplo:
Pago
Nombre Nht Edad Total Des1 Neto
hora
Ana 50 5 40 275 35 240
La solucin sera: Empleado menor de 55 aos con mximo sueldo es Sergio con 460 soles.El
promedio del sueldo para los empleados mayor de 55 aos es: 342.667 soles
Variables
me : la mxima edad,
mp : mximo promedio,
promedio : promedio que se calcula,
nombre : nombre que se ingresa por el teclado,
nme : nombre del que tiene la mxima edad,
nht : nmero de horas trabajadas,
ph : pago por hora normal,
total : total sin descuentos,
neto : neto a pagar,
impuesto : impuesto,
i : contador,
edad : edad que se ingresa por el teclado.
Algoritmo
Entero me, mp, nme, nht, ph, total, neto, i, edad
Real promedio, impuesto
Alfanumerico nombre
Inicio
mp0;
promedio0;
Desde i=1 hasta 10 hacer
Leer nombre, nht, ph, edad
Si nht>40 entonces total40*ph+(nht-40)*(ph+0.5*ph)
Sino totalnht*ph
Si total>200 entonces impuesto200*0.1+(total-200)*0.2
Sino impuestototal*0.1
netototal-impuesto
Imprimir nombre, nht, ph, edad
Imprimir total, impuesto, neto
Si edad>=55 entonces promediopromedio+neto/3
Sino
Si mp<neto entonces
mpneto;
meedad;
nmenombre
Fin si
Fin si
Fin Desde
Imprimir promedio
Imprimir nme mp me
Fin
Programa
#include<conio.h>
#include<stdio.h>
#include<string.h>
main(void)
{
float me,mp;
float promedio;
char nombre[20];
char nme[20];
float nht,ph;
float total, neto,impuesto;
int i,edad;
mp=0;
promedio=0;
for(i=1;i<=10;i++)
{ printf("\n ingrese nombre: ");
scanf("%s",nombre);
printf("Ingrese nmero de horas trabajadas: ");
scanf("%f",&nht);
printf("Ingrese el valor del pago por hora: ");
scanf("%f",&ph);
printf("Ingrese la edad: ");
scanf("%d",&edad);
if(nht>40) total=40*ph+(nht-40)*(ph+0.5*ph);
else total=nht*ph;
if(total>200) impuesto=200*0.1+(total-200)*0.2;
else impuesto=total*0.1;
neto=total-impuesto;
printf("%s trabajo %lf horas, Pago por hora %lf, Edad %d aos
\n",nombre,nht,ph,edad);
printf("total %lf, impuesto %lf, neto %lf soles
",total,impuesto,neto);
if(edad>=55) promedio=promedio+neto/3;
else
{ if(mp<neto)
{ mp=neto;
me=edad;
strcpy(nme,nombre);
}
}
}
printf("\n\n pago promedio: %lf soles",promedio);
printf("\n %s gana %lf soles edad: %lf aos\n",nme,mp,me);
getch();
}
Variables
i : contador,
n1, n2, n3 : notas,
Promedio : promedio de notas,
naa : nmero de alumnos desaprobados,
na18 : nmero de alumnos mayores de 18 aos,
nombre : nombre del alumno,
condicin : asume valores 1 (aprobados), 2 desaprobados.
Algoritmo
Entero i, n1, n2, n3, naa, na18, condicin.
Real promedio
Alfanumerico nombre
Inicio
naa0;
na180;
Desde i=1 hasta 40 hacer
Leer nombre, n1, n2, n3
promedio(n1+n2+n3)/3
Si promedio>12 entonces
condicion1;
naanaa+1;
sino
condicion2
Fin Si
Si condicion=1 entonces Imprimir nombre, n1, n2, n3, promedio
Sino Imprimir nombre, n1, n2, n3, promedio
Si promedio>=18 entonces na18na18+1
Fin Desde
Imprimir naa, na18
Fin
Programa
#include<conio.h>
#include<stdio.h>
#include<string.h>
main(void)
{
int i,n1,n2,n3;
float promedio;
int naa,na18;
char nombre[20];
int condicion;
naa=0;
na18=0;
for(i=1;i<=40;i++)
{printf("ingrese el nombre ");
scanf("%s",nombre);
printf("ingrese el nota1: ");
scanf("%d",&n1);
printf("ingrese el nota2: ");
scanf("%d",&n2);
printf("ingrese el nota3: ");
scanf("%d",&n3);
promedio=(n1+n2+n3)/3;
if(promedio>12)
{condicion=1;
naa=naa+1;
}
else
{ condicion=2; }
if(condicion==1) printf("%s nota1: %d nota2: %d, Nota3: %d,
promedio: %lf condicion :aprobado \n",nombre,n1,n2,n3,promedio);
else printf("%s nota1: %d nota2: %d, Nota3: %d, promedio: %lf
condicion :desaprobado \n",nombre,n1,n2,n3,promedio);
if(promedio>=18) na18=na18+1;
}
printf("hay aprobados: %d y aprobados con mas de 18
%d:\n",naa,na18);
getch();
}
Variables
i : Contador
n : Numero de trminos de la serie
num : valor del numerador de la serie
suma : Acumulador de la suma
Algoritmo
Entero i, n, Num
Real Suma
Inicio
Leer n
Suma0;
Num2;
Desde i=1 hasta n hacer
Numnum*2+1
Sumasuma+num/(num+1)
Fin Desde
Imprimir suma
Fin
Programa
#include<conio.h>
#include<stdio.h>
main(void)
{
int i,n;
float num,den,suma;
Variables
n, m : Variables contadores
Algoritmo
Entero n, m
Inicio
Desde n=1 hasta 3 hacer
Imprimir HOLA
Desde m=1 hasta 5 hacer
Imprimir "CHACHAPOYAS
Fin Desde
Fin Desde
Fin
Programa
#include<conio.h>
#include<stdio.h>
int n,m;
main(void)
{
for(n=1;n<=3;n++)
{ printf(" HOLA \n");
for(m=1;m<=5;m++)
printf("CHACHAPOYAS \n");
}
getch();
}
Variables
i : Contador
Algoritmo
Entero i
Inicio
Leer i
i1
Programa
#include<conio.h>
#include<stdio.h>
main(void)
{
int i;
i=1;
while(i<=9)
{
printf(" \n nmero= %d", i);
i=i+2;
}
getch();
}
Hacer un algoritmo para un programa que encuentre el primer entero
que haga que la suma de la serie 1, 2, 3, 4, 5, 6, 7, 8,9,; supere 30.
EJERCICIO 27
Variables
i : Contador
suma : acumulador del valor de la suma
Algoritmo
Entero i, suma
Inicio
i0
suma0
Mientras suma<=30 hacer
ii+1
sumasuma+i
Fin Mientras
Imprimir i
Fin
Programa
#include<conio.h>
#include<stdio.h>
main(void)
{
int i,suma;
i=0;
suma=0;
while(suma<=30)
{
i=i+1;
suma=suma+i;
}
printf(" \n El primer entero es: %d", i);
getch();
Variables
i : contador,
num : numero ingresado.
Algoritmo
Entero i, num
Inicio
Leer num
Mientras num>1 hacer
Si num modulo 2 = 0 entonces numnum/2
Sino numnum*3+1
Imprimir num
Fin Mientras
Fin
Programa
#include<conio.h>
#include<stdio.h>
main(void)
{
int i,num;
printf("ingrese un nmero.. ");
scanf("%d",&num);
while(num>1)
{
if(num%2==0)num=num/2;
else num=num*3+1;
printf(" \n nmero= %d", num);
}
getch();
}
Variables
suma : acumulador de la suma,
num : numero ingresado.
Algoritmo
Entero suma, num
Inicio
Suma0
Mientras num <> 0 hacer
Leer num
Sumasuma+num
Fin Mientras
Imprimir suma
Fin
Programa
#include<conio.h>
#include<stdio.h>
main(void)
{int suma,num;
suma=0;
printf("CUANDO PULSE 0, TERMINA EL PROGRAMA.. \n");
while(num!=0)
{
printf(" ingrese un nmero.. ");
scanf("%d",&num);
suma=suma+num;
}
printf(" \n la suma es= %d", suma);
getch();
}
F C
32 0
34 1,1111
36 2,2222
100 37,778
Variables
fareng: valor numrico de los grados farengheit ingresado,
cel : valor numrico de los grados celcius calculado.
Algoritmo
Real fareng, cel
Inicio
fareng30
Mientras fareng<=100 hacer
Cel(fareng-32)*5/9
farengfare+2
Imprimir fareng, cel
Fin mientras
Fin
Programa
#include<conio.h>
#include<stdio.h>
main(void)
{int fare;
float cel;
fare=30;
while(fare<=100)
{ cel=(fare-32)*5/9;
fare=fare+2;
printf(" %d en grados farengheit = %lf grados en celcius
\n",fare,cel);
}
getch();
}
Variables
a : Toma los valores de x desde a hasta 2,
y : Toma los valores de la expresin para cada valor de a.
Algoritmo
Real y
Entero a
Inicio
a1
Mientras a<2.1 hacer
y4*a*a-16*a+15
aa+0.1
si y>0 entonces Imprimir y, POSITIVO"
Sino Imprimir y, NEGATIVO"
fin si
Fin mientras
Fin
Programa
#include<conio.h>
#include<stdio.h>
main(void)
{float a,y;
a=1;
while(a<2.1)
{ y=4*a*a-16*a+15;
a=a+0.1;
if(y>0) printf(" %lf POSITIVO\n",y);
else printf(" %lf NEGATIVO\n",y);
}
getch();
}
Uso de centinela
Se usan centinelas para salir de los bucles en cualquier instante que uno desee, un
centinela es una variable que inicialmente adopta un valor, luego dentro de un bucle
este valor cambia, por lo que nos vemos obligados a abandonarlos. Lo anterior se
comprende a travs del ejercicio 32
Variables
pht : valor del pago por hora trabajada,
nht : cantidad de horas trabajadas,
sexo : valor numrico que indica (1 masculino, 2 femenino),
ptt : valor del pago por persona,
sumasm: guarda la suma de pagos a los varones,
sumasf: guarda la suma de pagos a las mujeres,
sm : guarda la cantidad de varones ingresados,
sf : guarda la cantidad de mujeres ingresadas,
nombre: guarda los nombres de las personas,
centinela: valor numrico que permite finalizar el programa.
Algoritmo
Entero pht, nht, sexo, ptt, sumasm, sumasf, centinela
Real sm, sf
Alfanumerico nombre
Inicio
Sumasm0
Sumasf0
Sm0
Sf0
Mientras centinela <> 1 hacer
Leer sexo
Si sexo<>1 y sexo <> 2 entonces
{
Centinela1 //aqu se origina la salida
Sm1
Sf1
}
Sino
{ Si sexo=1 entonces
{
smsm+1
leer nombre, nht, pht
pttnht*pht
Imprimir nombre,ptt
sumasmsumasm+ptt
}
Else
{
sfsf+1
Leer nombre, nht, pht
pttnht*pht
Imprimir nombre, ptt
sumasfsumasf+ptt
}
}
Fin si
}
Fin Si
Fin mientras
Imprimir sumasm, sumasm/sm
Imprimir sumasf, sumasf/sf
Fin
Comentario: para este caso cualquier nmero asignado a la variable sexo, diferente de 1 o 2,
har que la variable centinela se cargue a 1, hecho que obligar la salida del sistema.
Programa
#include<conio.h>
#include<stdio.h>
int x,pht,nht,sexo,ptt,sumasm,sumasf;
float sm,sf;
main(void)
{char nombre[20];
int centinela;
sumasm=0;
sumasf=0;
sm=0;
sf=0;
while(centinela!=1)
{
printf("ingrese sexo 1) varon, 2) mujer 3) Salir \n
");
scanf("%d",&sexo);
if(sexo!=1 || sexo!=2 )
{
centinela=1;
sm=1;
sf=1;
}
else
{
if(sexo==1)
{
sm=sm+1;
printf("ingrese nombre \n ");
scanf("%s",&nombre);
Variables
potencia: acumula el producto de la variable potencia y el nmero 2,
e : guarda el valor del exponente.
Algoritmo
Real potencia, e
Inicio
Potencia1
e0
Mientras potencia<=1000 hacer
potenciapotencia*2
ee+1 //e es el exponente
Fin Mientras
Imprimir e
Fin
Programa
#include<conio.h>
#include<stdio.h>
main(void)
{
int potencia,e;
potencia=1;
e=0;
while(potencia<=1000)
{
potencia=potencia*2;
e=e+1; //e es el exponente
}
printf("%d",e);
getch();
}
Variables
suma : el valor de suma acumulada
num : numero ingresado
Algoritmo
Entero suma, num
Inicio
Suma0
Mientras suma<=21 hacer
Leer num
Si num>=1 y num<=5 entonces sumasuma+num
Fin si
Fin Mientras
Imprimir suma, num
Fin
Programa
#include<conio.h>
#include<stdio.h>
main(void)
{
int suma,num;
suma=0;
printf("Ingrese nmeros entre 1 y 5 \n");
while(suma<=21)
{
printf("Ingrese un nmero ");
scanf("%d",&num);
if(num>=1 && num<=5)
{suma=suma+num;}
}
printf("\ n Suma: %d, Nmero: %d",suma,num);
getch();
}
Variables
c : contador,
num : nmero que se imprimir.
Algoritmo
Entero c, num
Inicio
Leer num
c1;
Mientras num>1 y c<=10 hacer
Si num modulo 2=0 entonces numnum/2
Sino numnum*3+1
Fin Si
Imprimir num
cc+1
Fin Mientras
Fin
Programa
#include<conio.h>
#include<stdio.h>
main(void)
{
int c,num;
printf("Ingrese un numero.. ");
scanf("%d",&num);
c=1;
while(num>1 && c<=10)
{
if(num%2==0)num=num/2;
else num=num*3+1;
printf(" \n nmero= %d", num);
c=c+1;
}
getch();
}
EJERCICIO 36
ex se puede expresar como la siguiente serie infinita.
x1 x 2 x 3
e 1
x
...
1! 2! 3!
x2
Si se considera 1 como el trmino 0, x como el primer trmino, como el segundo trmino,
2!
x3
como el tercer trmino, etc.; entonces el trmino n es igual al trmino n-1 multiplicado por
3!
x
. Haga el algoritmo para un programa basado en esta serie para encontrar una aproximacin
n
a e 2.5 . El programa debe parar cuando el ltimo trmino sumando sea menor de 0.0001.
Compruebe el programa para e 1 y compare con el valor de la funcin que devuelve este valor (
e ) en cualquier lenguaje de programacin.
Variables
t : valor del trmino,
n : posicin del trmino,
e : acumulador de t ,
x : valor del exponente ingresado.
Algoritmo
Real t, a, n, e, x
Inicio
Leer x
n2
tx
e1+x
Mientras t>0000.1 hacer
tt*(x/n)
ee+t
nn+1
Fin Mientras
Imprimir x, e
Fin
Programa
#include<conio.h>
#include<stdio.h>
main(void)
{float n, t, e;
float x;
printf("ingrese el valor de x.. ");
scanf("%f",&x);
n=2;
t=x;
e=1+x;
while(t>0000.1)
{
t=t*(x/n);
e=e+t;
n=n+1;
}
printf(" \n e a la %f es = %lf", x,e);
getch();
}
Variables
x : valor ingresado
Algoritmo
Entero x
Inicio
x1
Mientras x<32000 y x<>0 hacer
Leer x
Si x>=0 y x<10 entonces Imprimir x, Tiene 1 cifra" Fin si
Si x>9 y x<100 entonces Imprimir x, Tiene 2 cifras" Fin Si
Si x>99 y x<1000 entonces Imprimir x, Tiene 3 cifras" Fin Si
Si x>999 y x< 10000 entonces Imprimir x, "Tiene 4 cifras" Fin Si
Si x>9999 y x<=32000 entonces Imprimir "Tiene 5 cifras" Fin si
Fin Mientras
Fin
Programa
#include<conio.h>
#include<stdio.h>
main(void)
{
int x=1;
printf("Cuantas cifras tiene un numero. Pulse 0 para terminar");
while(x<32000 && x!=0)
{
printf("\n ingrese un nmero: ");
scanf("%d",&x);
if(x>=1 && x<=9) printf("%d tiene 1 cifra",x);
else if(x>=10 && x<=99) printf("%d tiene 2 cifras",x);
else if(x>=100 && x<=999) printf("%d tiene 3 cifras",x);
else if(x>=1000 && x<=9999) printf("%d tiene 4 cifras",x);
else if(x>=10000 && x<=32000) printf("%d tiene 5 cifras",x);
}
getch();
}
Variables
x : valor ingresado,
suma : acumulador de los valores de x,
c : contador de nmeros impares.
Algoritmo
Entero x, suma, c
Inicio
Mientras (c<10)
Leer x
Si x modulo 2 <>0 entonces
sumasuma+x
cc+1
Fin Si
Fin Mientras
Imprimir suma
Fin
Programa
#include<conio.h>
#include<stdio.h>
int x,suma,c;
main(void)
{
printf("INGRESE 10 NMEROS IMPARES \n");
while(c<10)
{printf("ingrese un nmero ");
scanf("%d",&x);
if(x%2!=0)
{suma=suma+x;
c=c+1;}
}
printf("la suma es %d ",suma);
getch();
}
Variables
i : contador, nmero primo,
j : contador,
n1 : primer nmero del rango,
n2 : segundo nmero del rango.
Algoritmo
Entero i, n1, n2, j
Inicio
Leer n1, n2
Desde i=n1 hasta n2 hacer
j2
Mientras i modulo j <>0 hacer
j=j+1
Si i=j entonces Imprimir i
Fin Si
Fin mientras
Fin Desde
Fin
Programa
#include<conio.h>
#include<stdio.h>
main(void)
{
int i,n1,n2,j;
printf("ingrese el primer nmero ");
scanf("%d",&n1);
printf("ingrese el segundo nmero ");
scanf("%d",&n2);
for(i=n1;i<=n2;i++)
{j=2;
while(i%j!=0)
{
j=j+1;
if(i==j) printf(" %d ",i);
}
}
getch();
}
NOTA: Las llaves no son necesarias si solamente se escribe una sentencia dentro de
los bucles.
En el siguiente programa se usa un ciclo do... while para leer nmeros desde el teclado hasta
que uno de ellos es menor que o igual a 100:
#include<conio.h>
#include<stdio.h>
main()
{
int num;
do
{
scanf("%d", &num);
} while ( num>100 );
getch();
}
Captulo IV
Funciones y
procedimientos
5.1 Funciones
Sea la funcin f ( x) x 2 2
Nuevamente la funcin g(x, y) devuelve un solo valor para dos valores de 2 variables de entrada,
x e y respectivamente. Las funciones en los lenguajes de programacin se tratan teniendo en
cuenta el criterio anterior.
Funcin: Una funcin es un grupo de instrucciones cuya ejecucin se lleva a cabo cada
vez que se invoca el nombre de la funcin con valores de entrada y luego de realizar
un clculo regresa un valor hasta la lnea donde se hizo la llamada a la funcin.
Toda funcin regresa un nico valor
5.1.3 Recursividad
Normalmente una funcin f puede llamar a una funcin g y esta a una funcin h y as
sucesivamente. Cuando una funcin se llama a si misma se dice que sigue un proceso recursivo.
En este caso una funcin f se llama as misma, o la funcin f llama a la funcin f; estos conceptos
pueden ser utilizados para calcular el factorial de un nmero o calcular un elemento de la serie
del Italiano Fibonacii.
Importante:
En un proceso recursivo, identifique primero la semilla, si no logra identificarlo, siga
intentando hasta lograrlo.
Semilla: Son los valores iniciales de las series que siguen procesos recursivos.
En el factorial: La semilla es 1, para factorial de 0 o 1.
Serie fibonacii: La semilla es 1,1, para fibonacii de 0 o 1.
Cuando una funcin no regresa valores se le puede llamar procedimiento como es el caso de
la funcin cubo de algoritmo2.
Programa
#include<conio.h>
#include<stdio.h>
float num;
float res, cubo(int x);
main()
{
printf("ingrese un nmero ");
scanf("%f",&num);
res=cubo(num);
printf("%f al cubo es: %f",num,res);
getch();
}
//Funcion cubo
float cubo(int x)
{
return x*x*x;
}
Algoritmo
Entero b, e
Nada potencia(m, n)
Inicio
Leer b, e
Imprimir potencia(b, e)
Fin
//Funcin potencia
Nada potencia(m, n)
Inicio
Entero i, y
y1
Desde i=1 hasta i<=abs(n) hacer
yy*m
Si n<0 entonces y1/y
Fin Si
Fin Desde
potenciay
Fin
Programa
#include<conio.h>
#include<stdio.h>
#include <math.h>
int b,e;
float potencia(int m, int n);
main(void)
{
printf("Ingrese dos nmeros menores de 10.. ");
scanf("%d %d",&b,&e);
printf("%f",potencia(b,e));
getch();
}
return y;
}
Variables
r : valor ingresado,
Circulo : funcin,
m : toma el valor de r,
pi : guarda el valor 3,1416.
Algoritmo
Entero r;
Nada circulo(m)
Inicio
Leer r
circulo(r)
Fin
//Funcin crculo
Nada circulo(m)
Inicio
Real pi
pi3.1416
Imprimir pi*m*m
Imprimir 2*pi*m
Fin
Programa
#include<conio.h>
#include<stdio.h>
int r;
void circulo(int m);
main(void)
{
printf(" Ingrese el valor del radio: ");
scanf("%d",&r);
circulo(r); // llamada a un procedimiento
}
Variables
Temp : temporal,
a : valor ingresado,
b : valor ingresado,
x : toma el valor de a,
y : toma el valor de b,
intercambio: procedimiento.
Algoritmo
Nada intercambio(x, y)
Entero temp, a, b
Inicio
Leer a, b
Intercambio(a, b);
Fin
//Funcion intercambio
Nada intercambio(x, y)
Inicio
tempx
Xy
Ytemp
Imprimir x, y
Fin
Programa
#include<conio.h>
#include<stdio.h>
void intercambio(int x,int y);
int temp,a,b;
main(void)
{
printf("Ingrese valor de a: ");
scanf("%d",&a);
printf("Ingrese valor de b: ");
scanf("%d",&b);
intercambio(a,b);
getch();
}
Comentario: En este caso vea usted la variable temp no est declarada dentro del procedimiento
intercambio. Esto significa que la variable temp es una variable global.
Variables
n : valor que se ingresa para calcular su factorial,
a : toma el valor de n,
factorial: funcin.
Algoritmo
Entero n
Entero factorial(a)
Inicio
Leer n
Imprimir factorial(n) //llamada a la funcin.
Fin
//Funcin factorial
Entero factorial(a)
Inicio
Si a=0 o a=1 entonces factorial1 //semilla 1
Sino factoriala*factorial(a-1) //aqu el llamado es nuevamente a la funcin
factorial(a), hasta que a=0 o a=1
Fin si
Regresa factorial
Fin
Programa
#include<conio.h>
#include<stdio.h>
int n,factorial(int a);
main(void)
{
printf("Ingrese el numero: ");
scanf("%d",&n);
printf("%d",factorial(n)); // llamada a la funcin
getch();
}
int factorial(int a)
{
if(a==0 ||a==1) return 1; //semilla 1
else return a*factorial(a-1); //el llamado es nuevamente a la funcin
factorial(a), hasta que a=0 o a=1.
}
F(5)=5*f(4)
4*f(3)
3*f(2)
2*f(1)
1*f(0)
La semilla es f(0)=1
Variables
n : ensimo elemento de la serie fibonacii,
x : toma valores de n,
fibonacii : funcin.
Algoritmo
Entero n
Entero fibonacii(x)
Inicio
Leer n
Imprimir n, fibonacii(n)
}
//Funcin Fibonacii
Funcion fibonacii(x)
Inicio
Si x=0 x=1 entonces fibonacii 1 //semilla
Sino fibonacii fibonacii(x-2)+fibonacii(x-1); //est llamando nuevamente a la
funcin fibonacii(x) hasta que
x=0 o x=1.
Fin Si
Fin
Programa
#include<conio.h>
#include<stdio.h>
int n;
int fibonacii(int x);
main(void)
{
printf(" INGRESE LA POSICION DEL ELEMENTO .. ");
scanf("%d",&n);
printf("FIBONACII DE %d es %d",n,fibonacii(n));
getch();
}
int fibonacii(int x)
{
if(x==0 || x==1)return 1; //semilla
else return fibonacii(x-2)+fibonacii(x-1); //est llamando nuevamente
a la funcin fibonacii(x) hasta que x=0 o x=1.
}
F(4)=5
F(3) + F(2)
F(2)+F(1) F(1)+F(0)
F(1)+F(0) 1 1 1
1 1
Variables
n : ensimo elemento de la serie,
x : toma valores de n,
elemento : funcin.
Algoritmo
Entero n
Entero elemento(x)
Inicio
Leer n
Imprimir n, elemento(n)
Fin
//Funcin elemento
Entero elemento(x)
Inicio
Si x=0 entonces elemento 4 Fin Si //semilla
Si x=1 entonces elemento 6 //semilla
Sino elementoelemento(x-2)+elemento(x-1) //recursividad
Fin si
Fin
Programa
#include<conio.h>
#include<stdio.h>
int n;
int elemento(int x);
main(void)
{
printf(" Ingrese la posicin del elemento .. ");
scanf("%d",&n);
printf("Elemento DE %d es %d",n,elemento(n));
getch();
}
int elemento(int x)
{
if(x==0)return 4; //semilla
if(x==1)return 6; //semilla
else return elemento(x-2)+elemento(x-1); //recursividad
}
Variables
n : ensimo elemento de la serie fibonacii,
x : toma valores de n,
elemento : funcin.
Algoritmo
Entero n
Entero elemento(x)
Inicio
Leer n
Imprimir n, elemento(n)
Fin
//Funcin elemento
Entero elemento(x)
Inicio
Si x=0 entonces elemento1 Fin si //semilla
Si x=1 entonces elemento1 Fin si //semilla
Si x=2 entonces elemento2 //semilla
Sino elementoelemento(x-3)+elemento(x-2)+elemento(x-1);
//recursividad
Fin
Programa
#include<conio.h>
#include<stdio.h>
int n;
int elemento(int x);
main(void)
{
printf(" Ingrese la posicin del elemento .. ");
scanf("%d",&n);
printf("Elemento de %d es %d",n,elemento(n));
getch();
}
int elemento(int x)
{
if(x==0)return 1; //semilla
if(x==1)return 1; //semilla
if(x==2)return 2; //semilla
else return elemento(x-3)+elemento(x-2)+elemento(x-1); //recursividad
}
Variables
n : valor ingresado,
X : toma valor de n,
valor : toma el valor de la variable potencia,
potencia : valor de la potencia del trmino n,
potenciadedos : funcin,
exponente : funcin.
Algoritmo
Entero n, potencia
Entero potenciadedos(x), exponente(valor)
Inicio
Leer n
Potenciapotenciadedos(n)
Imprimir n, potencia
Imprimir potencia, exponente(potencia)
Fin
//Funcin potenciadedos
Entero potenciadedos(x)
Inicio
Si x=0 entonces potenciadedos1
Sino potenciadedos 2*potenciadedos(x-1)
Fin si
Fin
//Funcin exponente
Entero exponente(valor)
Inicio
Si valor=1 entonces exponente0
Sino exponenteexponente(valor/2)+1
Fin Si
Fin
Programa
#include<conio.h>
#include<stdio.h>
int n;
int potenciadedos(int x), exponente(int valor);
int potencia;
main(void)
{
printf(" Ingrese la posicin del elemento .. ");
scanf("%d",&n);
potencia=potenciadedos(n);
printf("2 a la %d es %d",n,potencia);
int potenciadedos(int x)
{
if(x==0)return 1;
else return 2*potenciadedos(x-1);
}
Comentario: Observe que los procesos potenciadedos y exponente son recursivos. En el ejercicio
anterior tal vez no se note como opera la funcin exponente, ya que la posicin que se ingresa
representa el exponente, para comprenderlo mejor vea la solucin del ejercicio 49.
Variables
n : valor ingresado,
exponente : funcin,
valor : toma el valor de n.
Algoritmo
Entero n
Entero exponente(valor)
Inicio
Leer n
Imprimir n, exponente(n)
Fin
Entero exponente(valor)
Inicio
Si valor=1 entonces exponente0
Sino exponenteexponente(valor/2)+1
Fin Si
Fin
Programa
#include<conio.h>
#include<stdio.h>
int exponente(int valor);
int potencia;
main(void)
{
printf(" Ingrese valor potencia de 2 .. ");
scanf("%d",&potencia);
printf("%d es 2 a la %d",potencia, exponente(potencia));
getch();
Real area(base,altura)
Inicio
Areabase*altura/2
Fin
Real altura(area,base)
Inicio
altura2*area/base
Fin
Comentario: algunas variables pueden funcionar como tal o como funciones, en este problema,
fjese por que.
default:
printf(" nada mas ........ ");
}
getch();
}
{return 2*a/b;
}
Variables
opcion : para saber cual es la operacin a realizar,
base : valor de la base, tambin es procedimiento,
altura : valor de la altura, tambin es procedimiento,
area : valor del rea, tambin es procedimiento.
Nada area()
Inicio
Real area, base, altura
Leer base, altura
Areabase*altura/2
Mostrar area
Fin
Nada base()
Inicio
Entero area, base, altura
Leer area, altura
base2*area/altura
Mostrar base
Fin
Nada altura()
Inicio
Real area, base, altura
Leer area,base
altura2*area/base
mostrar altura
Fin
case 2:
base();
break;
case 3:
altura();
break;
default:
printf(" nada mas ........ ");
}
getch();
}
void area()
{
float altura, base;
printf("AREA DEL TRINGULO \n");
printf("ingrese la base ........ ");
scanf("%f",&base);
printf("ingrese la altura ........ ");
scanf("%f",&altura);
printf("el area del tringulo es %f ",base*altura/2);
}
void base()
{
float area,altura;
printf("BASE DE UN TRINGULO \n");
printf("ingrese el area ........ ");
scanf("%f",&area);
printf("ingrese la altura ........ ");
scanf("%f",&altura);
printf("la base de area del tringulo es %f ",2*area/altura);
}
void altura()
{
float area,base;
Captulo V
Arreglos
seccin A B C D
Para guardar los nombres de cada profesor tendramos que usar las variables: profeso1,
profesor2, profesor3 y profesor4 de tipo alfanumrico o cadena. Sin embargo si seran 60
secciones necesitaramos 60 variables diferentes de tipo cadena cada una. Tambin sera
complicado usar una estructura repetitiva para asignar el nombre de cada profesor a cada
variable.
Usando un vector es fcil, se requiere una sola variable cuya estructura se muestra a
continuacion.
ndice 0 1 2 3
La variable para referirnos al vector sera profesor. En este sentido para asignar el nombre del
profesor de la seccin C a la variable se hara as:
profesor[2]Manuel
Entero vectorNumero[5],
En el vector vectorNumero se pueden guardar hasta cinco nmeros enteros. Sin embargo para
el tratamiento de cadenas o variables alfanumricas esto difiere un poco:
Variables
profe1, profe2, profe3, profe4 : nombre de los profesores,
n : seccin.
Algoritmo
Alfanumerico profe1, profe2, profe3, profe4;
Entero n;
Inicio
Leer profe1
Leer profe2
Leer profe3
Leer profe4
//Imprimiendo
Imprimir profe1
Imprimir profe2
Imprimir profe3
Imprimir profe4
Leer n
Segn n sea
caso 1
Imprimir profe1
caso 2
Imprimir profe2
caso 3
Imprimir profe3
caso 4
Imprimir profe4
Fin Segn
Fin
Programa
#include<conio.h>
#include<stdio.h>
char profe1[20], profe2[20], profe3[20], profe4[20];
int n;
main(void)
{
printf("Profesor de 1 seccion: ");
scanf("%s",&profe1);
printf("Profesor de la 2 seccion: ");
scanf("%s",&profe2);
printf("Profesor de la 3 seccion: ");
scanf("%s",&profe3);
printf("Profesor de la 4 seccion: ");
scanf("%s",&profe4);
//Imprimiendo
printf("\nEn la 1 seccion ensena %s", profe1);
printf("\nEn la 2 seccion ensena %s", profe2);
printf("\nEn la 3 seccion ensena %s", profe3);
printf("\nEn la 4 seccion ensena %s", profe4);
printf("\nIngrese una seccion : ");
scanf("%d",&n);
switch(n)
{
case 1:
printf("En el piso %d ensena %s", n,profe1);
break;
case 2:
printf("En el piso %d ensena %s", n,profe2);
break;
case 3:
printf("En el piso %d ensena %s", n,profe3);
break;
case 4:
printf("En el piso %d ensena %s", n,profe4);
break;
default:
printf("Las secciones va de 1 a 4");
}
getch();
}
El programa anterior se puede reducir usando una estructura de datos de tipo vector y una
estructura repetiva for.
Variables
profesor[4] : estructura de datos para cuatro valores,
profe : nombre del profesor,
n : seccin,
i : contador.
Algoritmo
Alfanumerico profesor[4], profe;
Entero n, i;
Inicio
Desde i=0 hasta 4 hacer
Leer profe;
profesor[i]profe
Fin Desde
//Ver el profesor de una seccion en particular
Leer n;
Imprimir profesor[n-1]
Programa
#include<conio.h>
#include<stdio.h>
#include<string.h>
char profesor[4][20], profe[20]; //20 representa la cantidad de letras
int n, i;
main(void)
{
for(i=0; i<4; i++)
{
printf("Nombre del profesor de la seccon %d: ", i+1);
scanf("%s",&profe);
strcpy(profesor[i],profe);
}
//Ver el profesor de una seccion en particular
printf("Quien es el profesor de la seccion: ");
scanf("%d",&n);
printf("Profesor de la seccion %d es %s",n,profesor[n-1]);
getch();
}
Variables
Numero[8] : variable para guardar nmeros,
i : contador,
num : para leer nmeros,
busca : numero a buscar.
Algoritmo
Entero Numero[8]
Entero i, num, busca
Inicio
Desde i=0 hasta 8 hacer
Leer num;
Numero[i]num;
Fin Desde
//Imprimir
Programa
#include<conio.h>
#include<stdio.h>
int Numero[8];
int i, num, busca;
main(void)
{
for(i=0;i<8;i++)
{
printf("Escriba el numero: ");
scanf("%d",&num);
Numero[i]=num;
}
for(i=0;i<8;i++)
{
printf("\nNumero%d: %d", i, Numero[i]);
}
//Busqueda
printf("\nDame un valor a buscar: ");
scanf("%d",&busca);
for(i=0;i<8;i++)
{
if(busca == Numero[i])
{
printf("Posicion %d, Numero: %d", i, Numero[i]);
i=8;
}
}
getch();
}
Variables
Numero[100] : variable para guardar nmeros,
n : cantidad de nmeros,
i : contador,
num : para leer nmeros,
busca : numero a buscar.
Algoritmo
Entero Numero[100]
Entero n, i, num, busca
Inicio
Leer n
Mientras i<n
Leer num;
Si num>100 y num<500 entonces
Numero[i]num
ii+1
Fin Si
Fin Desde
//Imprimir
Desde i=0 hasta n hacer
Imprimir Numero[i]
Fin Desde
//Bsqueda
Leer busca
Desde i=0 hasta n hacer
Si busca == Numero[i] Entonces
Imprimir i, Numero[i]
in;
Fin Si
Fin
Programa
#include<conio.h>
#include<stdio.h>
int Numero[100];
int n, i, num, busca;
main(void)
{
printf("Cuantos numeros desea ingresar: ");
scanf("%d",&n);
i=0;
while(i<n)
{
printf("Escriba el numero: ");
scanf("%d",&num);
if(num>100 && num<500)
{
Numero[i]=num;
i++;
}
}
for(i=0;i<n;i++)
{
printf("\nNumero%d: %d", i, Numero[i]);
}
//Busqueda
Variables
Numero[20] : variable para guardar 20 nmeros,
i : contador,
num : para leer nmeros.
Algoritmo
Entero Numero[20];
Entero i, num, busca;
Inicio
Desde i=0 hasta 20 hacer
Leer num
Numero[i]num
Fin Desde
Programa
#include<conio.h>
#include<stdio.h>
int Numero[20];
int n, i, num, busca;
main(void)
{
for(i=0;i<20;i++)
{
printf("Escriba el numero: ");
scanf("%d",&num);
Numero[i]=num;
}
for(i=0;i<20;i++)
{
if(Numero[i]>25)
printf("\nNumero%d: %d", i, Numero[i]);
}
getch();
}
Variables
Numero[10] : variable para guardar 10 nmeros,
i : contador,
num : para leer nmeros,
Suma : acumulador para sumar nmeros mltiplos de 3.
Algoritmo
Entero Numero[10];
Entero i, num, Suma;
Inicio
Desde i=0 hasta 10 hacer
Leer num
Numero[i]num
Fin Desde
Desde i=0 hasta 10 hacer
Si Numero[i] % 3==0 entonces
Suma = Suma + Numero[i];
Fin Si
Fin Desde
Imprimir Suma
Fin
Programa
#include<conio.h>
#include<stdio.h>
int Numero[10];
int n, i, num, Suma;
main(void)
{
for(i=0;i<10;i++)
{
printf("Escriba el numero: ");
scanf("%d",&num);
Numero[i]=num;
}
for(i=0;i<10;i++)
{
if(Numero[i] % 3==0)
Suma = Suma + Numero[i];
}
printf("\n La suma es %d",Suma);
getch();
}
Variables
Numero[10] : Vector de nmeros,
i : contador,
num : nmero a leer,
posicin : posicin del elemento,
buscar : Elemento a buscar.
Algoritmo
//Buscar un nmero en una lista
Entero Numero[10]
Entero i, num
Entero posicion=-1, buscar
Inicio
Desde i=0 hasta 9 hacer
Leer num
Numero[i]num
Fin desde
Leer buscar
Desde i=0 hasta 9 hacer
Si Numero[i]=buscar entonces
Posicini
Fin Si
Fin desde
Imprimir posicin
Fin
Programa
//Buscar un nmero en una lista
#include<conio.h>
#include<stdio.h>
int Numero[10];
int i, num, busca;
int posicion=-1, buscar;
main(void)
{
for(i=0;i<10;i++)
{
printf("Escriba el numero: ");
scanf("%d",&num);
Numero[i]=num;
}
printf("Deme el numero a buscar: ");
scanf("%d",&buscar);
for(i=0;i<10;i++)
{
if(Numero[i]==buscar)
posicion=i;
}
printf("El numero esta en la posicion %d: ", posicion);
getch();
}
Programa
//Buscar un nmero en una lista
#include<conio.h>
#include<stdio.h>
int Numero[10];
int i, num, busca;
int posicion=-1, buscar;
main(void)
{
for(i=0;i<10;i++)
{
printf("Escriba el numero: ");
scanf("%d",&num);
Numero[i]=num;
}
printf("Deme el numero a buscar: ");
scanf("%d",&buscar);
i=0;
while(i<10)
{
if(Numero[i]==buscar)
{
posicion=i;
i=9;
}
i++;
}
printf("El numero esta en la posicion %d: ", posicion);
getch();
}
Algoritmo
//Ordenar datos en una lista poniendo el dato ms pequeo al comienzo
Entero Numero[10]
Entero i, j, num, temp
Inicio
Desde i=0 hasta 9 hacer
Leer num
Numero[i]num
Fin Desde
//Ordenar
Desde i=0 hasta 9 hacer
Desde j=0 hasta 9 hacer
Si Numero[i] > Numero[j] Entonces
temp = Numero[j]
Numero[j] = Numero[i]
Numero[i] = temp
Fin Si
Fin Desde
Fin Desde
//Imprimir lista ordenada
Desde i=0 hasta 9 hacer
Imprimir Numero[i]
Fin Desde
Fin
Programa
//Ordenar datos en una lista
#include<conio.h>
#include<stdio.h>
int Numero[10];
int i, j, num, temp;
main(void)
{
for(i=0;i<10;i++)
{
printf("Escriba el numero: ");
scanf("%d",&num);
Numero[i]=num;
}
//Ordenar
for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
{if(Numero[i] > Numero[j])
{
temp = Numero[j];
Numero[j] = Numero[i];
Numero[i] = temp;
}
}
}
//Imprimir lista ordenada
for(i=0;i<10;i++)
{
printf("\n Numero: %d", Numero[i]);
}
getch();
}
Algoritmo
//Ordenar datos en una lista poniendo el dato ms grande al final
Entero Numero[10]
Entero i, j, num, temp
Inicio
Desde i=0 hasta 9 hacer
Leer num
Numero[i]num
Fin Desde
//Ordenar
Desde i=0 hasta 9 hacer
Desde j=0 hasta 8-i hacer
Si Numero[j] > Numero[j+1] Entonces
tempNumero[j]
Numero[j]Numero[j+1]
Numero[j+1]temp
Fin Si
Fin Desde
Fin Desde
//Imprimir lista ordenada
Desde i=0 hasta 9 hacer
Imprimir Numero[i]
Fin Desde
Fin
Programa
//Ordenar datos en una lista
#include<conio.h>
#include<stdio.h>
int Numero[10];
int i, j, num, temp;
main(void)
{
for(i=0;i<10;i++)
{
printf("Escriba el numero: ");
scanf("%d",&num);
Numero[i]=num;
}
//Ordenar por el mtodo de la burbuja
for(i=0;i<10;i++)
{
for(j=0;j<9-i;j++)
{if(Numero[j] > Numero[j+1])
{
temp = Numero[j];
Numero[j] = Numero[j+1];
Numero[j+1] = temp;
}
}
}
//Imprimir lista ordenada
for(i=0;i<10;i++)
{
printf("\n Numero: %d", Numero[i]);
}
getch();
}
Bsqueda binaria
EJERCICIO 58
Algoritmo
//Bsqueda binaria
Entero Numero[10]{10,15,18,18,19,19,20,21,24,38}
Entero i, j, posicion, buscar
Entero medio=0, inicio=0, fin=9
Inicio
//buscar
Leer buscar
Mientras inicio <= fin
Medio(inicio + fin) / 2
Si Numero[medio] = buscar Entonces
posicion medio
inicio inicio+1
Sino
Si buscar<Numero[medio] Entonces
fin medio-1
Sino
iniciomedio+1
Fin Si
posicin -1
Fin Si
Fin Mientras
Imprimir posicion
Fin
Programa
//Bsqueda binaria
#include<conio.h>
#include<stdio.h>
int Numero[10]={10,15,18,18,19,19,20,21,24,38};
int i, j, posicion, buscar;
int medio=0, inicio=0, fin=9;
main(void)
{
//buscar
printf("Dame el dato a buscar: ");
scanf("%d",&buscar);
while (inicio <= fin)
{
medio=(inicio + fin) / 2 ;
if (Numero[medio] == buscar)
{ posicion = medio;
inicio=inicio+1;
}
else
{
if(buscar<Numero[medio]) fin = medio-1;
else inicio = medio + 1;
posicion=-1;
}
}
//Imprimir posicin
printf("\n Posicion: %d", posicion);
getch();
}
Algoritmo
Vector[10] : vector de 10 posiciones,
A : Variable para leer nmeros.
Algoritmo
//Busca la cantidad de veces que se repite un nmero en una lista
Entero Vector[10]{10,20,10,18,19,19,20,20,10,20}
Entero i, j, c, A
Inicio
//buscar
Desde i=0 hasta 9 hacer
AVector[i]
c0
Desde j=0 hasta 9 hacer
Si Vector[j]=A Entonces
cc+1
Vector[j]0 //Poniendo a 0 los vectores contados
Fin Si
Fin Desde
//Imprimir repetidos
Si A!=0 entonces
Imprimir A
Imprimir c
Fin Si
Fin Desde
Fin
Programa
//Busca la cantidad de veces que se repite un nmero en una lista
#include<conio.h>
#include<stdio.h>
int Vector[10]={10,20,10,18,19,19,20,20,10,20};
int i, j, c, A;
main(void)
{
//buscar
printf("Contando las repeticiones");
for(i=0;i<10;i++)
{
A=Vector[i];
c=0;
for(j=0;j<10;j++)
{
if(Vector[j]==A)
{
c=c+1;
Vector[j]=0;
}
}
//Imprimir repetidos
if(A!=0)
{
printf("\n Numero: %d Repeticiones: %d", A, c);
}
}
getch();
}
grado
3 Juan Enmanuel Aurelio Nina
A B C D
seccin
Para guardar los nombres de cada profesor tendramos que usar las variables: profeso1,
profesor2, profesor3, profesor4, profesor20 de tipo alfanumrico o cadena. Sin embargo si
seran 10 secciones necesitaramos 50 variables diferentes de tipo cadena cada una. Tambin
sera complicado usar estructuras repetitivas para asignar el nombre de cada profesor a cada
variable.
Usando un arreglo bidimensional o matriz se requiere una sola variable cuya estructura se
muestra a continuacion.
0 1 2 3
seccin
La variable para referirnos al arreglo bidimensional, nuevamente puede ser profesor. En este
sentido para asignar el nombre del profesor del segundo grado y la seccin tres a la variable
profesor se hara as:
profesor[1][2]Sergio
Los ndices [1][2] de la variable profesor apunta al segundo grado y a la seccin tres. Por el
contrario, si el nombre de la profesora de la seccin D de quinto grado la queremos asignar a
una variable maestra se hara as:
maestraprofesor[4][3]
Como se ve, los ndices [0][0] apuntan a la primera posicin. Un aspecto importante para no
complicarse al momento de programar es entender que en la variable profesor[f][c], f refiere
a las filas y c a las columnas, aspecto importante para saber como acceder a los valores de la
matriz o asignar valores a los campos de la matriz. Luego podramos crear un programa para
registrar los nombres de los profesores de cada seccin y cada grado usando una estructura
secuencial con muchas lneas de cdigo o escribir pocas lneas de cdigo usando una estructura
de datos de tipo matriz y dos estructuras repetitivas para o mientras para dar solucin a este
problema.
En lenguaje C la declaracin de un arreglo bidimensional o matriz numrica se hace as:
Entero matrizNumero[5][4]
En la matriz matrizNumero se pueden guardar hasta 20 nmeros enteros en cinco filas y cuatro
columnas. Sin embargo para el tratamiento de cadenas o variables alfanumricas difiere un poco:
char profe[20], nos permite guardar un nombre de un profesor a lo ms de 20 caracteres.
char matrizProfesor[5][4][25], nos permite guardar 20 nombres de a lo ms 25
caracteres cada uno.
Variables
matrizNumero[5][3]: variable para guardar nmeros,
Entero i, j : contador,
Num : nmero,
Suma : para sumar la columna del centro.
Algoritmo
Entero matrizNumero[5][3]
Entero i, j, num, Suma
Inicio
Desde i=0 hasta 4 hacer
Desde j=0 hasta 2 hacer
Leer num
matrizNumero[i][j]num
Fin Desde
Fin Desde
//Imprimir
Desde i=0 hasta 5 hacer
Desde j=0 hasta 2 hacer
Imprimir matrizNumero[i][j]
Fin Desde
Fin Desde
//Sumar la columna del centro
Desde i=0 hasta 4 hacer
Suma=Suma+matrizNumero[i][1]
Fin Desde
Imprimir Suma
Fin
Programa
#include<conio.h>
#include<stdio.h>
int matrizNumero[5][3];
int i, j, num, Suma;
main(void)
{
for(i=0;i<5; i++)
{
for(j=0;j<3; j++)
{
printf("Escriba un numero: ");
scanf("%d",&num);
matrizNumero[i][j]=num;
}
}
//Imprimir
for(i=0;i<5; i++)
{ printf("\n");
for(j=0;j<3; j++)
{
printf("[%d][%d]=%d ",i,j,matrizNumero[i][j]);
}
}
//Sumar la columna del centro
for(i=0;i<5; i++)
{
Suma=Suma+matrizNumero[i][1];
}
printf("\nSuma de la columna central: %d",Suma);
getch();
}
profesor
0 1 2 3
seccin
Variables
matrizProfesor[5][4] : variable 5 filas y 4 columnas para guardar los nombres de los
profesores,
profe : nombre del profesor de seccion,
i, j : contador.
Algoritmo
Alfanumerico matrizProfesor[5][4], profe
Entero i, j, num
Inicio
Desde i=0 hasta 4 hacer
Desde j=0 hasta 3 hacer
Leer profe
matrizProfesor[i][j]profe
Fin Desde
Fin Desde
//Imprimir
Desde i=0 hasta 4 hacer
Desde j=0 hasta 3 hacer
Imprimir matrizProfesor[i][j]
Fin Desde
Fin Desde
//Buscar
Leer i
Leer j
Imprimir matrizProfesor[i-1][j-1]
Fin
Programa
#include<conio.h>
#include<stdio.h>
#include<string.h>
char matrizProfesor[5][4][20], profe[20];
int i, j;
main(void)
{
for(i=0;i<5; i++)
{
for(j=0;j<4; j++)
{
printf("Profesor del grado: %d seccion: %d: ", i+1, j+1);
scanf("%s",&profe);
strcpy(matrizProfesor[i][j],profe);
}
}
//Imprimir
for(i=0;i<5; i++)
{ printf("\n");
for(j=0;j<4; j++)
{
printf("[%d][%d]=%s ",i+1,j+1,matrizProfesor[i][j]);
}
}
//Buscar
printf("\nBuscar profesor de");
printf("\nGrado: ");
scanf("%d",&i);
printf("\nSeccion: ");
scanf("%d",&j);
printf("\n Grado: %d Seccion: %d = %s",i,j,matrizProfesor[i-1][j-
1]);
getch();
}
+ 0 1 2 3
0 0 1 2 3
1 1 2 3 4
2 2 3 4 5
3 3 4 5 6
EJERCICIO PROPUESTO
Desarrollar un algoritmo para un programa que imprima 40 nmeros generados aleatoriamente distintos
entre 1 y 40. Sugerencia use un arreglo.
Ejemplo de resultados:
29, 26, 17, 33, 25, 18, 37, 23, 13, 3, 24, 1, 11, 22, 7, 21, 10, 31, 6, 2, 4, 15, 27, 19, 38, 40,
14, 34, 32, 36, 8, 30, 35, 28, 5, 9, 20, 39, 16, 12.
16, 13, 4, 20, 12, 5, 24, 11, 10, 40, 30, 28, 38, 9, 34, 8, 37, 18, 29, 31, 2, 14, 39, 6, 25, 27,
21, 19, 23, 35, 17, 22, 7, 1, 15, 32, 36, 3, 33, 26
Con el mismo procedimiento usted puede generar una cantidad mayor de nmeros para tener una idea
de la capacidad de microprocesamiento de su computadora.
Apendice B
Primer examen 2014-1
1. Desarrolle un algoritmo que permita calcular la nota de unidad del curso de introduccin a la
programacin.
2. Hacer un algoritmo para calcular el total a pagar por tres chompas si la tienda ofrece un
descuento de 15%.
3. A un trabajador le pagan segn sus horas trabajadas y una tarifa de pago por hora. si la
cantidad de horas trabajadas es mayor a 40 horas. La tarifa se incrementa en un 50% para
las horas extras. calcular el salario del trabajador dadas las horas trabajadas y la tarifa.
4. La empresa Milagrito S.A. tiene la siguiente tabla de valores para pagar las comisiones de sus
ejecutivos de ventas:
Parmetro de venta
% de comisin
Desde hasta
2000 10000 7%
10000.01 20000 10%
20000.01 En adelante 15%
4. Sumar los nmeros enteros de 50 al 100 mediante: estructura repetir y estructura mientras.
5. Mostrar tabla de multiplicar de dos nmeros por sumas sucesivas.
1. Escribir un programa que permita jugar a doble o nada: El jugador apuesta una cantidad y
tira una moneda. Si sale cara obtiene el doble de la cantidad apostada. Si sale cruz la pierde
todo.
2. El Depto. de Seguridad Publica y Transito del D.F. desea saber, de los n autos que entran a
la ciudad de Mxico, cuantos entran con calcomana de cada color. Conociendo el ltimo
dgito de la placa de cada automvil se puede determinar el color de la calcomana utilizando
la siguiente relacin:
DGITO COLOR
1o2 amarilla
3o4 rosa
5o6 roja
7o8 verde
9o0 azul
3. Escribir un programa que pida la nota de un examen (un nmero real entre 0 y 20) e imprima
por pantalla la calificacin en formato Suspenso, si la nota es menor que 10.5, Aprobado
si est entre 10.5 inclusive y 12 sin incluir, Notable si est entre 12 inclusive y 15 sin incluir,
Sobresaliente si est entre 15 inclusive y 20 sin incluir y Matrcula de honor si la nota es
igual a 20. Use funciones.
4. Mostrar tabla de multiplicar de dos nmeros por sumas sucesivas.
5. Escribir una funcin que convierta un nmero entero en otro nmero entero que ser el
primero pero con las cifras que lo forman escritas al revs. Ejemplo: convertir el nmero
entero 1842 en el 2481.
5. Escribir una funcin que calcule el cuadrado de un nmero haciendo slo sumas. Ayuda: el
cuadrado de un nmero n es la suma de los n primeros nmeros impares. Ejemplo:
32=1+3+5=9.
Glosario de trminos
B L
BUCLE for, 55 LA FUNCIN main(), 21
C O
Centinela, 74 OPERADORES, 23, 24
D P
do-while, 31 Procedimientos, 33
PSEUDOCDIGO, 7
F
S
Fibonacii, 36
for ANIDADO, 67 SENTENCIA switch, 28
Funciones, 33
V
I VARIABLES Y CONSTANTES, 19
if else, 43
La caracterstica principal del libro es la sencillez con la que explicamos la solucin de los
problemas que planteamos; usando estructuras secuenciales, selectivas, bucles, funciones,
procedimientos y arreglos, que corresponde a los temas de los cursos de algoritmos, tcnicas de
programacin, sistemas operativos para principiantes; escribiendo los programas en el Lenguaje
C de la forma mas sucinta, e indicando las variables, el pseudocdigo y el programa respectivo;
situaciones que no se contemplan en otras obras. Me atrevo a decir que si se logra entender los
ejercicios desarrollados en este libro, entonces se puede esperar el xito como futuro
programador en cualquier otro lenguaje de programacin similar a lenguaje C.