Documentos de Académico
Documentos de Profesional
Documentos de Cultura
C - ALGORITMOS - C - 2010 v3 PDF
C - ALGORITMOS - C - 2010 v3 PDF
Lima - 2017
La presentación y disposición de:
Introducion a la programación y lenguaje C
Son propiedad del autor, Abraham Sopla Maslucán
Ingeniero de Sistemas por la Universidad Nacional de Cajamarca
Maestro en Ciencias de la computación – Tecnológico de Monterrey, México.
Doctorando en Ingeniería de Sistemas e Informática, Universidad Nacional Mayor de San
Marcos, Perú.
Profesor nombrado en la EAP de Ingeniería de Sistemas, Facultad de Ingeniería de Sistemas y
Mecánica Eléctrica, Universidad Nacional Toribio Rodríguez de Mendoza. Fundador del Instituto
de ingeniería de software y del Instituto de estudios estadísticos 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
CAPÍTULO 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
CAPÍTULO V ......................................................................................................................................... 82
ARREGLOS............................................................................................................................................ 82
6.1 INTRODUCCIÓN 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
BIBLIOGRAFÍA.............................................................................................................................. 102
APÉNDICE A ................................................................................................................................... 103
APENDICE B ................................................................................................................................... 104
GLOSARIO DE TÉRMINOS .......................................................................................................... 108
ii
Algoritmos y Lenguaje C
Introducción
Los estudiantes de las materias de lenguajes de programación, técnicas de programación,
algoritmos, estructuras de datos y de la información, sistemas operativos, entre otros, darán fe de
lo complicado que a veces resultan estas materias cuando no entendemos cómo es que la
computadora interpreta internamente las líneas de código escritas en algún lenguaje de
programación para realizar una actividad. ¿Quién tiene una noción de cómo se
an los datos en una hoja de cálculo Excel?, de manera que, luego de seleccionar una lista de datos,
pulsamos en el botón ordenar de la barra de herramientas y ya. ¿Quién sabe cómo la computadora
calcula el término n de una sucesión de números?, así podríamos mencionar muchos casos más.
Muchos operaramos las computadoras para resolver problemas sin antes hacer por lo menos
un pequeño plan acerca de la solución o tantear el camino a seguir para llegar a la solución de una
situación problemática 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; más cierto, es que primero sepamos resolver los
problemas usando algoritmos en pseudocódigo 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 están representados usando pseudocódigo e
implementados en lenguaje C, evitando complicaciones en el uso del lenguaje. La claridad con que
están escritos hace que estos se puedan implementar fácilmente en otros lenguajes de programación
como java. Es así como se cumple nuestro propósito de ayudar al lector a dar el paso seguro del
algoritmo en pseudocódigo al programa, situación difícil para muchos principiantes. El objetivo es
que tengan un buen comienzo en este largo camino de la programación y que este sea el más corto
posible.
En los primeros capítulos 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 más bien en el uso del mismo en la resolución de
problemas comunes. Según 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 método simple y efectivo para
solucionarlos, explicando desde el algoritmo que soluciona un problema hasta la construcción del
programa.
Este trabajo está orientado a estudiantes que se inician en educación superior, en carreras
de ingeniería mecánica, eléctrica, de sistemas, de computación e informática, electrónica, 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 guía para poder solucionar otros problemas. No más queda decir que, disfruten de este
material didáctico para fortalecer su formación académica y profesional.
Capítulo I
Indicaciones para
principiantes
1.1 Pseudocódigo
El pseudocódigo es un lenguaje general, de especificación de la solución del problema
mediante un algoritmo. Se considera como el paso anterior a la codificación. La ventaja es que, este
lenguaje puede ser traducido indistintamente y sin problemas a cualquier lenguaje de programación
de computadora. Un algoritmo es una secuencia de pasos lógicos que nos conducen hacia la solución
de un determinado problema.
Nosotros implementaremos los algoritmos usando un lenguaje común, el más sencillo para
todos. Adelantamos, si es necesaria la palabrería, será solamente para aclarar situaciones puntuales
orientados a la solución de dificultades. La idea en fin, es solucionar los problemas y así lo haremos,
sabiendo que lo más importante antes de empezar a escribir un programa, es necesario hacer el
algoritmo.
Lógicamente, 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 programación,
definitivamente todos empezamos haciendo algoritmos; pero si de situaciones académicas se trata,
hacer el algoritmo teniendo el programa no necesita de ningún esfuerzo, solamente adherirse a
algunas reglas y términos de pseudocódigo, 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.
Generalmente, los problemas con estructuras secuénciales y selectivas son más complicados
de comprender y fáciles de identificar las entradas, procesos y salidas, ya que las soluciones tratan
de al menos de operaciones matemáticas u procesos sencillos. Por otro lado los problemas donde se
usan bucles o repeticiones, son sencillos de comprender y difíciles de identificar sus entradas,
procesos y salidas.
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 están declaradas.
Algoritmo
Entero suma, a
Inicio
Suma0
Desde a=10 hasta a<=50 hacer
Sumasuma+(1/a)
Fin Desde
Imprimir Suma
Fin
Capítulo II
Apuntes de lenguaje C
Para escribir el programa en lenguaje C podemos usar el editor de código llamado Sc1, obteniéndolo
de la dirección http://www.scintilla.org. Asimismo debe instalar el compilador Borland C++ 5.5
después de bajarlo de la dirección http://www.programacionenc.net/modules.php u otra que crea
conveniente1.
1. Una vez terminada la instalación, crea con el bloc de notas un archivo, y pega en el las líneas
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 líneas
siguientes, guárdalo 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 configuración adicional, esto se hace para que puedas compilar
tus programas sin importar en donde se encuentre el archivo fuente. La configuración 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 añade la siguiente
línea 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 continuación en la ficha “Opciones avanzadas”.
6. Haz clic en el botón Variables de entorno y fíjate en el cuadro Variables del sistema.
7. Selecciona la variable Path y pulsa el botón Modificar, ve al final del cuadro Valor de la
variable y pega lo siguiente ahí:
;C:\Borland\BCC55\Bin
Nota que se añade un punto y coma antes de todo, esto es para separar las variables del
sistema que ya están creadas, producto de la instalación 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, verás
que tanto la compilación como la ejecución del programa aparecen en la parte inferior de la
pantalla, aunque también puede ejecutar el programa hello.exe, recién generado desde el
Explorador de Windows.
Por ejemplo puede copiar el código de la solución del Ejercicio 21 de capítulo V. Los pasos para la
escritura, compilación y ejecución, en el editor Sc1, de éste código sería:
Paso 3: Compilamos el programa apretando la tecla Ctrl+F7 y lo ejecutamos apretando la tecla F5.
2.4 Librerías
C
es un lenguaje pequeño. La funcionalidad de C se obtiene a través de un rico conjunto de
bibliotecas de funciones, llamados también librerías.
Por ejemplo la función sqrt pertenece a la librería math.
NOTA: Si usted intenta usar la función sqrt sin declarar la librería math, tendrá errores
justamente en la línea donde este escrita esta función. Otras funciones de la librería math
serían sin, cos, tan, etc.
Otras librerías son stdio, stdlib, etc. Las librerías y sus funciones están escritas en la ayuda
del lenguaje C.
¡Cada librería contiene sus propias funciones!
La función sqrt devuelve la raíz cuadrada de un número, ejm sqrt(25) regresa 5. La librería
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 función que se declaren después 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 función estándar de C, que se usa para escribir o imprimir datos.
c) \n significa salto de línea.
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 máximo. 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 estudiarán al final de este libro.
Los tipos de datos básicos 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 carácter, i entero
decimal, x de coma flotante.
scanf() es la función 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 paréntesis
Los paréntesis 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 paréntesis bien usado.
Tenga en cuenta los tres resultados anteriores, y vea la importancia del paréntesis, dependiendo
de la operación 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.
Capítulo 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 evaluación se hace línea por línea, 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 número cuando el valor es
VERDADERO. Cuando se declaran variables no se tiene en cuenta la ortografía o la gramática.
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 línea un número, de la siguiente manera, de
antemano ya nos habremos fijado que el valor de salida es el de la variable c, el problema sería
saber el valor de esta variable c que se mostrará al final o en la línea 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 expresión luego de ser evaluada.
x : guarda un valor numérico ingresado.
w : guarda un valor numérico 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 , también de w \n");
//se leen o capturan dos valores escritos en las variables x y
w.
scanf("%f %f",&x,&w);
//Se evalúa la expresión 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 través de un printf.
//Evita la ejecución de esta línea, se usa para escribir comentarios, como aclaraciones,
recomendaciones, explicaciones, etc.
/* */ Si necesita escribir un comentario extenso, es decir de varias líneas, puede usarlo de la
siguiente manera.
/*...
...Comentario...
... */
\n Permite escribir datos en la línea siguiente (salta una línea). Si se escribe \n\n\n
saltaremos 3 líneas, \n\n\n\n saltaremos hasta la cuarta línea siguiente para imprimir o escribir
el siguiente dato.
Explicación:
Estas dos líneas de código:
Pueden ser escritas en cuatro líneas 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 numérico ingresado,
y : guarda un valor numérico ingresado,
resultado : guarda el valor resultado de la expresión.
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, también 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, también 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 (condición)
{Sentencias1}; If doble: Si condición es verdadera se
entonces se ejecutan las sentencias1, en
else caso contrario se ejecutan las sentencias2.
{Sentencias2};
if (condición1)
{Sentencias1};
else if (condición2)
{Sentencias2}; If anidado: La sentencia que está asociada
a la palabra reservada else se ejecuta si
else if (condición3)
todas las condiciones de la estructura if
{Sentencias3}; fueron falsas.
...
else
{SentenciasN};
Si condición entonces
Sentencias1; Condicional doble: Si la condición es
Sino verdadera se ejecutan las sentencias1, en
Sentencias2; caso contrario se ejecutan las sentencias2.
Fin Si
Si condición1
Sentencias1;
Sino Si condición2
Condicional anidado: La sentencia que
Sentencias2; está asociada a la palabra reservada sino se
Sino Si condición3 ejecuta si todas las condiciones de la
estructura if fueron falsas.
Sentencias3;
...
Sino
SentenciasN;
Fin Si
Variables
Nu2m: Número 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 número.... ");
scanf("%d",&num);
if(num>0)
printf("el número es positivo");
getch();
}
EJERCICIO 06 Hacer un algoritmo para un programa que calcule el pago que hacen un
grupo de personas para ver una película 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 más el pago es 0.5 soles por persona.
Variables
num: Número 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 número 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 numérico 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 número 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 : Número 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 número 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 : Número de cursos.
pago : Pago por el total de cursos matriculados
Algoritmo
Alfanumerico categoria
Entero nc, pago
Leer categoría
Leer nc
Inicio
Si categoría “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 categoría: 1) Ex soldado Otro)
Regular\n");
scanf("%d",&x);
printf("ingrese el número de cursos\n");
scanf("%d",&nc);
if(x==1)
printf("categoría: ex soldado, %d cursos, pago: %d soles
",nc,nc*30);
else
printf("categoría: regular, %d cursos, pago: %d soles
",nc,nc*50);
getch();
}
mujeres de 21 años o más 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 sexo”masculino” 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 años, sexo: masculino, pago: %d soles
",edad,1000);
else
printf("edad: %d años, sexo: masculino, pago: %d soles
",edad,700);
else
if(edad<21)
printf("edad: %d años, sexo: femenino, pago: %d soles
",edad,800);
else
Variables
numero : Número ingresado por el teclado
Algoritmo
Entero numero
Inicio
Leer numero
Si número >=0 entonces
Si número>0 entonces
Imprimir número, “POSITIVO”
Sino
Imprimir número, “CERO”
Fin si
Sino
Imprimir número, “NEGATIVO”
Fin Si
Fin
Programa
#include<conio.h>
#include<stdio.h>
main(void)
{int num;
printf("ingrese un número\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 número 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
Número : Número correspondiente al día de la semana.
Algoritmo
Entero numero
Inicio
Leer número
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 NÚMEROS ENTRE 1 Y 7........ "
Fin Segun
Fin
Programa
#include<conio.h>
#include<stdio.h>
main(void)
{int dia;
printf("ingrese un número entre 1 y 7........ ");
scanf("%d",&dia);
switch(dia)
{
case 1:
printf(" LUNES \n");
break;
case 2:
printf(" MARTES \n");
break;
case 3:
printf(" MIÉRCOLES\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 NÚMEROS 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 opción 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 Según
Fin
Programa
#include<conio.h>
#include<stdio.h>
main(void)
{int operacion;
printf("EJERCICIOS DE LOS TRIÁNGULOS ........ \n");
printf("============================ \n\n\n");
printf("1 para calcular el área de un triángulo \n");
printf("2 para calcular la base \n");
printf("3 para calcular la altura \n\n");
printf("ingrese una opción ........ ");
scanf("%d",&operacion);
switch(operacion)
{
float area, altura, base;
case 1:
printf("AREA DEL TRIÁNGULO \n");
printf("ingrese la base ........ ");
scanf("%f",&base);
printf("ingrese la altura ........ ");
scanf("%f",&altura);
printf("el area del triángulo es %f ",base*altura/2);
break;
case 2:
printf("BASE DE UN TRIÁNGULO \n");
printf("ingrese el area ........ ");
scanf("%f",&area);
printf("ingrese la altura ........ ");
scanf("%f",&altura);
printf("la base de area del triángulo es %f ",2*area/altura);
break;
case 3:
printf("ALTURA DE UN TRIÁNGULO \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 matemático
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 triángulo \n");
printf("2 para calcular el área de un trapecio \n");
printf("3 para calcular el área de un rectángulo \n");
printf("4 para calcular el área de un triángulo en función de sus
lados\n\n\n");
printf("ingrese el número que le corresponde al área que desea
calcular ........ ");
scanf("%d",&operacion);
switch(operacion)
{
case 1:
int bt,ht;
printf("AREA DEL TRIÁNGULO \n");
printf("ingrese la base ........ ");
scanf("%d",&bt);
printf("ingrese la altura ........ ");
scanf("%d",&ht);
printf("el area del triángulo 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 TRIÁNGULO EN FUNCIÓN 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 triángulo 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 número ingresado,
mayor : Para asignarle el valor del mayor de los números leídos,
menor : Para asignarle el valor del menor de los números leídos,
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 NÚMERO %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 máxima.
Variables
area : Valor del area
x : valor de x.
maxarea : valor de la máxima área.
maxx : valor delmáximo 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
*Número de horas trabajadas
Variables
x : asume valores de 1 hasta 6,
pht : pago por hora trabajada,
nht : número de horas trabajadas,
sexo : sexo,
ptt : pago total,
sumasm : suma de pagos de las hombres,
sumasf : suma de pagos de las mujeres,
sm : número de hombres cuyos datos se ingresaron,
sf : número 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 número de repeticiones,
num : el número 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 número 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 años. El nombre y el pago total para el empleado de menos de 55 años con máximo
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 solución sería: Empleado menor de 55 años con máximo sueldo es Sergio con 460 soles.El
promedio del sueldo para los empleados mayor de 55 años es: 342.667 soles
Variables
me : la máxima edad,
mp : máximo promedio,
promedio : promedio que se calcula,
nombre : nombre que se ingresa por el teclado,
nme : nombre del que tiene la máxima edad,
nht : número 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 número 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 años
\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 años\n",nme,mp,me);
getch();
}
Variables
i : contador,
n1, n2, n3 : notas,
Promedio : promedio de notas,
naa : número de alumnos desaprobados,
na18 : número de alumnos mayores de 18 años,
nombre : nombre del alumno,
condición : asume valores 1 (aprobados), 2 desaprobados.
Algoritmo
Entero i, n1, n2, n3, naa, na18, condición.
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 términos 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 número= %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 número.. ");
scanf("%d",&num);
while(num>1)
{
if(num%2==0)num=num/2;
else num=num*3+1;
printf(" \n número= %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 número.. ");
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 numérico de los grados farengheit ingresado,
cel : valor numérico 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 expresión 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 través del ejercicio 32
Variables
pht : valor del pago por hora trabajada,
nht : cantidad de horas trabajadas,
sexo : valor numérico 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 numérico 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 número 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 número 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 números entre 1 y 5 \n");
while(suma<=21)
{
printf("Ingrese un número ");
scanf("%d",&num);
if(num>=1 && num<=5)
{suma=suma+num;}
}
printf("\ n Suma: %d, Número: %d",suma,num);
getch();
}
Variables
c : contador,
num : número 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 número= %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 término 0, x como el primer término, como el segundo término,
2!
x3
como el tercer término, etc.; entonces el término n es igual al término n-1 multiplicado por
3!
x
. Haga el algoritmo para un programa basado en esta serie para encontrar una aproximación
n
a e 2.5 . El programa debe parar cuando el último término sumando sea menor de 0.0001.
Compruebe el programa para e 1 y compare con el valor de la función que devuelve este valor (
e ) en cualquier lenguaje de programación.
Variables
t : valor del término,
n : posición del término,
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 número: ");
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 números 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 NÚMEROS IMPARES \n");
while(c<10)
{printf("ingrese un número ");
scanf("%d",&x);
if(x%2!=0)
{suma=suma+x;
c=c+1;}
}
printf("la suma es %d ",suma);
getch();
}
Variables
i : contador, número primo,
j : contador,
n1 : primer número del rango,
n2 : segundo número 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 número ");
scanf("%d",&n1);
printf("ingrese el segundo número ");
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 números 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();
}
Capítulo IV
Funciones y
procedimientos
5.1 Funciones
Sea la función f ( x) x 2 2
Nuevamente la función 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 programación se tratan teniendo en
cuenta el criterio anterior.
Función: Una función es un grupo de instrucciones cuya ejecución se lleva a cabo cada
vez que se invoca el nombre de la función con valores de entrada y luego de realizar
un cálculo regresa un valor hasta la línea donde se hizo la llamada a la función.
Toda función regresa un único valor
5.1.3 Recursividad
Normalmente una función f puede llamar a una función g y esta a una función h y así
sucesivamente. Cuando una función se llama a si misma se dice que sigue un proceso recursivo.
En este caso una función f se llama así misma, o la función f llama a la función f; estos conceptos
pueden ser utilizados para calcular el factorial de un número 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 función no regresa valores se le puede llamar procedimiento como es el caso de
la función cubo de algoritmo2.
Programa
#include<conio.h>
#include<stdio.h>
float num;
float res, cubo(int x);
main()
{
printf("ingrese un número ");
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
//Función 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 números menores de 10.. ");
scanf("%d %d",&b,&e);
printf("%f",potencia(b,e));
getch();
}
return y;
}
Variables
r : valor ingresado,
Circulo : función,
m : toma el valor de r,
pi : guarda el valor 3,1416.
Algoritmo
Entero r;
Nada circulo(m)
Inicio
Leer r
circulo(r)
Fin
//Función círculo
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: función.
Algoritmo
Entero n
Entero factorial(a)
Inicio
Leer n
Imprimir factorial(n) //llamada a la función.
Fin
//Función 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 función
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 función
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 función
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 : enésimo elemento de la serie fibonacii,
x : toma valores de n,
fibonacii : función.
Algoritmo
Entero n
Entero fibonacii(x)
Inicio
Leer n
Imprimir n, fibonacii(n)
}
//Función 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
función 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 función 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 : enésimo elemento de la serie,
x : toma valores de n,
elemento : función.
Algoritmo
Entero n
Entero elemento(x)
Inicio
Leer n
Imprimir n, elemento(n)
Fin
//Función 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 posición 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 : enésimo elemento de la serie fibonacii,
x : toma valores de n,
elemento : función.
Algoritmo
Entero n
Entero elemento(x)
Inicio
Leer n
Imprimir n, elemento(n)
Fin
//Función 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 posición 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 término n,
potenciadedos : función,
exponente : función.
Algoritmo
Entero n, potencia
Entero potenciadedos(x), exponente(valor)
Inicio
Leer n
Potenciapotenciadedos(n)
Imprimir n, potencia
Imprimir potencia, exponente(potencia)
Fin
//Función potenciadedos
Entero potenciadedos(x)
Inicio
Si x=0 entonces potenciadedos1
Sino potenciadedos 2*potenciadedos(x-1)
Fin si
Fin
//Función 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 posición 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 función exponente, ya que la posición que se ingresa
representa el exponente, para comprenderlo mejor vea la solución del ejercicio 49.
Variables
n : valor ingresado,
exponente : función,
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,
fíjese por que.
default:
printf(" nada mas ........ ");
}
getch();
}
{return 2*a/b;
}
Variables
opcion : para saber cual es la operación a realizar,
base : valor de la base, también es procedimiento,
altura : valor de la altura, también es procedimiento,
area : valor del área, también 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 TRIÁNGULO \n");
printf("ingrese la base ........ ");
scanf("%f",&base);
printf("ingrese la altura ........ ");
scanf("%f",&altura);
printf("el area del triángulo es %f ",base*altura/2);
}
void base()
{
float area,altura;
printf("BASE DE UN TRIÁNGULO \n");
printf("ingrese el area ........ ");
scanf("%f",&area);
printf("ingrese la altura ........ ");
scanf("%f",&altura);
printf("la base de area del triángulo es %f ",2*area/altura);
}
void altura()
{
float area,base;
Capítulo V
Arreglos
sección A B C D
Para guardar los nombres de cada profesor tendríamos que usar las variables: profeso1,
profesor2, profesor3 y profesor4 de tipo alfanumérico o cadena. Sin embargo si serían 60
secciones necesitaríamos 60 variables diferentes de tipo cadena cada una. También sería
complicado usar una estructura repetitiva para asignar el nombre de cada profesor a cada
variable.
Usando un vector es fácil, se requiere una sola variable cuya estructura se muestra a
continuacion.
índice 0 1 2 3
La variable para referirnos al vector sería profesor. En este sentido para asignar el nombre del
profesor de la sección C a la variable se haría así:
profesor[2]”Manuel”
Entero vectorNumero[5],
En el vector vectorNumero se pueden guardar hasta cinco números enteros. Sin embargo para
el tratamiento de cadenas o variables alfanuméricas esto difiere un poco:
Variables
profe1, profe2, profe3, profe4 : nombre de los profesores,
n : sección.
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
Según n sea
caso 1
Imprimir profe1
caso 2
Imprimir profe2
caso 3
Imprimir profe3
caso 4
Imprimir profe4
Fin Según
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 : sección,
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 seccíon %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 números,
i : contador,
num : para leer números,
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 números,
n : cantidad de números,
i : contador,
num : para leer números,
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
//Búsqueda
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 números,
i : contador,
num : para leer números.
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 números,
i : contador,
num : para leer números,
Suma : acumulador para sumar números múltiplos 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 números,
i : contador,
num : número a leer,
posición : posición del elemento,
buscar : Elemento a buscar.
Algoritmo
//Buscar un número 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
Posicióni
Fin Si
Fin desde
Imprimir posición
Fin
Programa
//Buscar un número 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 número 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 más pequeño 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 más 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 método 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();
}
Búsqueda binaria
EJERCICIO 58
Algoritmo
//Búsqueda 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
posición -1
Fin Si
Fin Mientras
Imprimir posicion
Fin
Programa
//Búsqueda 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 posición
printf("\n Posicion: %d", posicion);
getch();
}
Algoritmo
Vector[10] : vector de 10 posiciones,
A : Variable para leer números.
Algoritmo
//Busca la cantidad de veces que se repite un número 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 número 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
sección
Para guardar los nombres de cada profesor tendríamos que usar las variables: profeso1,
profesor2, profesor3, profesor4,… profesor20 de tipo alfanumérico o cadena. Sin embargo si
serían 10 secciones necesitaríamos 50 variables diferentes de tipo cadena cada una. También
sería 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
sección
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 sección tres a la variable
profesor se haría así:
profesor[1][2]”Sergio”
Los índices [1][2] de la variable profesor apunta al segundo grado y a la sección tres. Por el
contrario, si el nombre de la profesora de la sección D de quinto grado la queremos asignar a
una variable maestra se haría así:
maestraprofesor[4][3]
Como se ve, los índices [0][0] apuntan a la primera posición. 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 podríamos crear un programa para
registrar los nombres de los profesores de cada sección y cada grado usando una estructura
secuencial con muchas líneas de código o escribir pocas líneas de código usando una estructura
de datos de tipo matriz y dos estructuras repetitivas para o mientras para dar solución a este
problema.
En lenguaje C la declaración de un arreglo bidimensional o matriz numérica se hace así:
Entero matrizNumero[5][4]
En la matriz matrizNumero se pueden guardar hasta 20 números enteros en cinco filas y cuatro
columnas. Sin embargo para el tratamiento de cadenas o variables alfanuméricas difiere un poco:
char profe[20], nos permite guardar un nombre de un profesor a lo más de 20 caracteres.
char matrizProfesor[5][4][25], nos permite guardar 20 nombres de a lo más 25
caracteres cada uno.
Variables
matrizNumero[5][3]: variable para guardar números,
Entero i, j : contador,
Num : número,
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
sección
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 números 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 números 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 introducción a la
programación.
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 según 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:
Parámetro de venta
% de comisión
Desde hasta
2000 10000 7%
10000.01 20000 10%
20000.01 En adelante 15%
4. Sumar los números enteros de 50 al 100 mediante: estructura repetir y estructura mientras.
5. Mostrar tabla de multiplicar de dos números 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 México, cuantos entran con calcomanía de cada color. Conociendo el último
dígito de la placa de cada automóvil se puede determinar el color de la calcomanía utilizando
la siguiente relación:
DÍGITO COLOR
1o2 amarilla
3o4 rosa
5o6 roja
7o8 verde
9o0 azul
3. Escribir un programa que pida la nota de un examen (un número real entre 0 y 20) e imprima
por pantalla la calificación 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 “Matrícula de honor” si la nota es
igual a 20. Use funciones.
4. Mostrar tabla de multiplicar de dos números por sumas sucesivas.
5. Escribir una función que convierta un número entero en otro número entero que será el
primero pero con las cifras que lo forman escritas al revés. Ejemplo: convertirá el número
entero 1842 en el 2481.
5. Escribir una función que calcule el cuadrado de un número haciendo sólo sumas. Ayuda: el
cuadrado de un número n es la suma de los n primeros números impares. Ejemplo:
32=1+3+5=9.
Glosario de términos
B L
BUCLE for, 55 LA FUNCIÓN main(), 21
C O
Centinela, 74 OPERADORES, 23, 24
D P
do-while, 31 Procedimientos, 33
PSEUDOCÓDIGO, 7
F
S
Fibonacii, 36
for ANIDADO, 67 SENTENCIA switch, 28
Funciones, 33
V
I VARIABLES Y CONSTANTES, 19
if else, 43
La característica principal del libro es la sencillez con la que explicamos la solución de los
problemas que planteamos; usando estructuras secuenciales, selectivas, bucles, funciones,
procedimientos y arreglos, que corresponde a los temas de los cursos de algoritmos, técnicas de
programación, sistemas operativos para principiantes; escribiendo los programas en el Lenguaje
C de la forma mas sucinta, e indicando las variables, el pseudocódigo 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 programación similar a lenguaje C.