Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Separata Programacion en Lenguaje de Alto Nivel I
Separata Programacion en Lenguaje de Alto Nivel I
ENCABEZADO
/
|
<
|
\
void main(void)
{
printf("El lenguaje C++ es poderoso\n");
}
Listado 1.1.- Primer programa en C++
La segunda forma solo sirve para comentarios que abarcan una lnea o
parte de ella, y utiliza los caracteres // al principio del comentario. El fin del
comentario queda marcado por el fin de la lnea, como se muestra a
continuacin:
// Este es un comentario de una lnea,
// y este es otro.
void main(void)
#include <nombre_archivo>
/* nombre_archivo se buscar solamente en el directorio INCLUDE */
#include "nombre_archivo"
/* nombre_archivo se buscar en el directorio de trabajo actual */
#include "d:\trayectoria\nombre_archivo"
/* En este caso, nombre_archivo ser buscado en el directorio especificado en
trayectoria */
Ejemplo:
#include "C:\DATOSCPP\PANTALLA.C"
1.4.2.- Reemplazamiento de cadenas y procesamiento de macros
El reemplazamiento de cadenas consiste en sustituir (antes de efectuar la
compilacin) cada una de las ocurrencias de cierta cadena (llamada
constante simblica) por otra cadena equivalente. Esto de logra por medio
de la directiva #define, como se muestra en los siguientes ejemplos:
#include <stdio.h>
#define CADENA "El Lenguaje C++ es poderoso\n"
void main(void)
{
printf(CADENA);
}
return 0 ;
@
@
+
@
+
_asm
asm
auto
break
case
_cdecl
cdecl
char
class
const
continue
_cs
default
delete
do
double
@
@
@
@
@
@
+
@
+
_ds
else
enum
_es
_export
extern
_far
far
_fastcall
float
for
friend
goto
_huge
huge
if
inline
@
@
@
@
+
+
@
@
+
+
+
@
int
_interrupt
interrupt
_loadds
long
_near
near
new
operator
_pascal
pascal
private
protected
public
register
return
_saveregs
+
+
_seg
short
signed
sizeof
_ss
static
struct
switch
template
this
typedef
union
unsigned
virtual
void
volatile
while
donde:
cadena_formato es una cadena de caracteres encerrada entre comillas
dobles. Esta cadena es enviada a la pantalla ( la
salida estndar ) despus de haber sustituidos los
elementos listados despus de la cadena.
Comando
Sirve para:
%d
Entero
%u
%ld
entero largo
%p
valor de apuntador
%f
%e
%c
Carcter
%s
cadena de caracteres
%x
%o
Tipo
Tamao (bits)
char
-128 a 127
unsigned char
0 a 255
enum
16
-32,768 a 32,767
int
16
-32,768 a 32,767
short int
16
-32,768 a 32,767
unsigned int
16
0 a 65,535
long
32
-2,147'483,648 a 2,147'483,647
unsigned long
32
0 a 4,294'967,295
float
32
7 dgitos
3.4E-38 a 3.4E+38
double
64
15 digitos
1.7E-308 a 1.7E+308
long double
80
19 digitos
3.4E-4932 a 3.4E+3932
void
Precisin
Rango de valores:
near pointer
16
Direcciones de memoria
far pointer
16
Direcciones de memoria
Las funciones scanf() y printf() sirven para varios formatos, por lo cual son muy
voluminosas. Es por esto que se han desarrollado las funciones gets() y puts(),
especficas para la entrada/salida de cadenas de caracteres.
La funcin gets() toma una cadena de caracteres desde el teclado y la almacena en la
variable cuyo identificador aparece como argumento en la invocacin a gets(), como en:
gets(nombre);
#include<stdio.h>
#include<conio.h>
int main()
{
int y=12345;
printf("%13d\n",y);
getch();
return 0;
}
Listado 1.2
// IMPRIME ENTEROS EN OCTAL
#include<stdio.h>
#include<conio.h>
int main()
{
int y=12345;
printf("y = %13d EN DECIMAL\n",y);
printf("y = %13o EN OCTAL\n",y);
getch();
return 0;
}
Listado 1.3
// IMPRIME ENTEROS EN HEXADECIMAL
#include<stdio.h>
#include<conio.h>
int main()
{
int y=12345;
printf("y = %13d EN DECIMAL\n",y);
printf("y = %13x EN HEXADECIMAL\n",y);
getch();
return 0;
}
Listado 1.4
// IMPRIME ENTEROS SIN SIGNO
#include<stdio.h>
#include<conio.h>
int main()
{
int y= -12345;
printf("y = %13d ENTERO CON SIGNO\n",y);
printf("y = %13u ENTERO SIN SIGNO\n",y);
getch();
return 0;
}
Listado 1.5
// IMPRIME NUMEROS CON PUNTO FLOTANTE
#include <stdio.h>
#include<conio.h>
int main()
{
float
x=123.45;
double y=678.90;
printf("x = %12.2f\ny = %12.1f\n",x,y);
getch();
return 0;
}
Listado 1.6
// IMPRIME CARACTERES
#include <stdio.h>
#include<conio.h>
int main()
{
char a='X', b='Y', c='Z' ;
printf("%c%c%c\n",a,b,c);
getch();
return 0;
}
Listado 1.7
// IMPRIME CADENAS DE CARACTERES
#include <stdio.h>
#include<conio.h>
int main()
{
/*
Formato: %[-a.b]s
donde: - JUSTIFICA A LA IZQUIERDA
a NUMERO DE ESPACIOS DISPONIBLES PARA DESPLEGAR
b NUMERO MAXIMO DE CARACTERES QUE PUEDEN DESPLEGARSE
*/
printf("\n%10s","DESPLEGADO DE CADENAS EN LENGUAJE C++");
printf("\n%-10s","DESPLEGADO DE CADENAS EN LENGUAJE C++");
printf("\n%25.10s","DESPLEGADO DE CADENAS EN LENGUAJE C++");
printf("\n%-25.10s","DESPLEGADO DE CADENAS EN LENGUAJE C++");
printf("\n%.10s","DESPLEGADO DE CADENAS EN LENGUAJE C++");
getch();
return 0;
}
Listado 1.8
Para desplegar el smbolo de porciento puede escribirse en
cadena_formato : % . Por ejemplo:
..........
..........
int utilidad;
utilidad = 30;
printf("La utilidad es del %2d %\n", utilidad);
..........
10
desplegar :
La utilidad es del 30 %
C++ provee una nueva forma para manejar la entrada/salida, proporcionando una
sintaxis ms sencilla, elegante e intuitiva que la de stdio.h , adems de un mecanismo
ms eficiente y flexible. La palabra iostream tiene su origen en las palabras: input
output stream , por lo que puede traducirse como flujo de entrada/salida. El flujo de
entrada/salida es utilizado para enviar datos desde una fuente ( productor ) a un destino (
consumidor ) . En esta forma se tiene una vasta jerarqua de clases para el manejo de
entrada/salida para archivos y dispositivos. En el archivo iostream.h se encuentran
definidos los objetos cin y cout.
El objeto cin utiliza al operador sobrecargado >> para tomar datos desde la entrada
estndar (habitualmente el teclado). El objeto cout utiliza al operador sobrecargado <<
para enviar datos hacia la salida estndar (normalmente la pantalla). Veamos como se
utilizan estos elementos en un pequeo ejemplo:
#include <iostream.h>
int main()
{
char nombre[30];
cout << "CUAL ES TU NOMBRE ? " ; cin>> nombre ;
cout << "\n" ; cout << "!! HOLA , " << nombre << " !! \n" ;
system("PAUSE");
return 0 ;
}
11
ventana2.window(10,07,40,07);
ventana0.clrscr();
ventana1.clrscr();
cout << "NUMERO: " << setw(3) << numero;
cout << " NOMBRE : " ; cin.getline(nombre,10);
ventana2.clrscr();
cout << "\nSUELDO : $ " ; cin>> sueldo ;
return 0;
// verificar http://faculty.salisbury.edu/~dxdefino/constrea.htm
Podemos definir a una constante como una localidad de memoria (objeto), la cual tiene
un nombre y un tipo de dato asociados, adems de un valor que permanece fijo durante
el tiempo de ejecucin.
En la unidad 1 se estudi la manera de definir constantes por medio de la directiva
#define . Aqu definiremos a las constantes utilizando el modificador const, usando del
formato mostrado a continuacin:
const <tipo> <identificador> = <valor>
12
Para manejar los caracteres de control se utilizan las secuencias de escape que
empiezan con el carcter de diagonal hacia atrs (\) seguida de un carcter. Si el
carcter que sigue a la diagonal es alguno de los caracteres mostrados en la tabla 2.1,
se obtendr el efecto explicado en ella; pero si es cualquiera de los dems caracteres
del Cdigo ASCII, se visualizar el carcter tal cual.
Secuencia
Caracter
Efecto
\a
BEL
\b
BS
Retroceso
\f
FF
Alimentacin de forma
\n
LF
Nueva lnea
\r
CR
Retorno de carro
\t
HT
Tabulacin horizontal
\v
VT
Tabulacin vertical
\\
\'
'
Comilla sencilla
\"
"
Comilla doble
\?
Interrogacin
Sonido de la bocina
\O
\x
Borland C++ permite el uso de dos caracteres juntos como valores de caracteres.
Por ejemplo: 'AB' , '\n\t' , '\007\007'
III).- Punto flotante, cualquiera con punto decimal con formato exponencial.
Ejemplos:
3.135 , 0. , .0
, 34e3 , -3.4 ,
.075E12
donde: pera, uva, manzana y fresa son constantes de enumeracin y tienen los
siguientes valores:
pera
uva
manzana
fresa
=
=
=
=
0
1
2
3
13
y entonces :
pera
uva
manzana
fresa
= 0
= 1
= 10
= 6
2.2.- Variables
2.3.- Ambito
El mbito es una zona de programa donde puede utilizarse un identificador para accesar
su objeto . El mbito va a depender, bsicamente, del lugar del programa en que aparece
la declaracin.
Bajo este enfoque, se tienen las siguientes clases de mbito:
Ambito de BLOQUE.
En el Lenguaje C++, se generaliza el concepto de mbito local, a travs de la
introduccin del concepto de bloque.
Un bloque est formado por las instrucciones delimitadas por un par de llaves { }.
Es posible anidar una serie de bloques, y pueden declararse variables dentro de cada
bloque. Si, en diferentes bloques, existen variables con el mismo identificador, todas
sern consideradas como variables diferentes. As que puede tenerse:
..............
14
..............
int x=5;
{
int x=10;
{
int x=20;
{
int x=30;
printf("x=%d",x);
}
printf("%d",x);
}
printf("%d",x);
}
printf("%d",x);
.............
.............
// x del bloque 1
// x del bloque 2
// x del bloque 3
// x del bloque 4
// x=30
// x=20
// x=10
// x=5
15
Los objetos con duracin esttica estn localizados en memoria durante todo el tiempo
de ejecucin del programa. Las funciones, las variables con mbito de archivo y las
variables con especificadores de clase de almacenamiento static extern, tienen
duracin esttica. Los objetos con duracin esttica son inicializados a cero , en
ausencia de un valor inicial explcito.
2.4.2.- Duracin local
Los objetos de duracin local, conocidos tambin como objetos automticos, son
creados en la pila de la memoria RAM en los registros del microprocesador. La
memoria asignada a stos objetos es liberada cuando finaliza la ejecucin del bloque
donde fueron creados. Los objetos de duracin local deben utilizarse siempre en un
mbito local de funcin. Cuando se utiliza el especificador de clase de
almacenamiento register, se implica el uso del especificador de clase de
almacenamiento auto.
2.4.3.- Duracin dinmica
16
Listado 2.1.- EXTERN2.CPP, que declara y utiliza variables globales definidas en otro
archivo.
17
Los objetos que se manejan en C++ van a tener un tipo de dato asociado, el cual
determina la cantidad de espacio de almacenamiento que se le asigna a cada uno de los
objetos de tal tipo, as como el conjunto de operaciones que podrn realizarse con los
valores almacenados. Las operaciones sern representadas a travs de identificadores
especficos llamados operadores.
En esta seccin estudiaremos los operadores, agrupndolos en:
2.6.1.- Operadores arimticos
Los operadores aritmticos se aplican sobre objetos con valores numricos, como se
muestra en la tabla 2.2 .
Sean: X = 20 , Y = 30 , A = 100.0 , B = 200.0
Operador
Operacin
Ejemplo
Resultado
Adicin
Z=X+Y
Z=50
Sustraccin
Z=Y-X
Z=10
Multiplicacin
Z=X*Y
Z=600
Divisin
Z=Y/X
Z=1.5
Mdulo
Z=Y%X
Z=10
++
Incremento
X++
X=21
--
Decremento
X-
X=19
Los operadores relacionales se usan para comparar los valores que resultan de reducir
expresiones. Los resultados coincidirn con los valores de verdad:
FALSO igual a CERO, VERDADERO diferente de CERO. Los operadores relacionales
en C++ son :
>
Mayor que
18
>=
<
<=
==
!=
Los operadores lgicos se aplican sobre los enunciados que resultan de las operaciones
relacionales, y el resultado siempre ser un valor de verdad. Los operadores lgicos son:
&&
( Conjuncin )
||
( Disyuncin )
NO
( Negacin )
( Conjuncin )
( Disyuncin )
( Disyuncin Exclusiva
XOR )
>>
( Desplazamiento a la DERECHA )
19
En este caso se utiliz el nmero 127 porque es el nico nmero entero que puede
escribirse en un octeto ( byte ) y que tiene los siete primeros bits con valor 1 .
Ejemplo 2.6.2
Se requiere que en el nmero 112 tengan valor 1 los bits que correspondan con los del
nmero 7 que tengan valor 1. En este caso, la operacin a utilizar es la disyuncin entre
bits, quedando las instrucciones en la siguiente forma:
char masc ;
masc = 112 | 7 ;
Ejemplo 2.6.3
La disyuncin exclusiva sirve para poner a uno los bits del primer operando cuyos
correspondientes bits en el segundo operando sean distintos, como se ve a continuacin:
x = 125 ^ 120 ;
char x ;
Manualmente se tendra:
01111101 <------- 125 en binario
operador> ^
01111000 <------- 120 en binario
00000101 <------- resultado
Los operadores de desplazamiento mueven todos los bits, de una variable entera de
carcter, hacia la izquierda hacia la derecha. A medida que los bits son desplazados
hacia un extremo, los lugares desocupados del estremo contrario van siendo ocupados
por ceros. Los unos que salen por los extremos no se pueden recuperar(no hay rotacin).
2.6.5.- Operadores de asignacin
20
Significado
Ejemplo:
Equivale a:
Asignacin mltiple
+=
Suma asigna
X+=Y
X=X+Y
-=
Resta asigna
X-=Y
X=X-Y
*=
Multiplicacin asigna
X*=Y
X=X*Y
/=
Divide asigna
X/=Y
X=X/Y
%=
Residuo asigna
X%=Y
X=X%Y
<<=
X<<Y
X=X<<Y
>>=
X>>Y
X=X>>Y
&=
X&=Y
X=X&Y
^=
X^=Y
X=X^Y
|=
Disyuncin asigna
X|=Y
X=X|Y
21
A este grupo pertenecen las instrucciones que estn formadas por una o varias
expresiones simples colocadas una a continuacin de la otra. La sintaxis para las
instrucciones estructuradas en secuencia es la siguiente:
instruccion_1 ;
instruccion_2 ;
.........
instruccion_N ;
Ejercicios
1. Elabore un programa que permita determinar la distancia (m) que recorre un mvil
que se desplaza con una velocidad (m/s) constante, despus de transcurrir un
determinado tiempo (s)
#include <stdio.h>
#include <conio.h>
int main()
{
int V;
int T;
int D;
printf("\n INGRESE ");
printf("\n ");
printf("\n Velocidad (m/s) : "); scanf("%i",&V);;
printf("\n Tiempo (s) : "); scanf("%i",&T);;
D= V*T;
printf("\n RESULTADO ");
printf("\n ");
printf("\n Distancia recorrida en metros es: %2.i ", D);
getch();
return 0;
}
22
A este grupo pertenecen aquellas instrucciones que sirven para que la ejecucin del
programa tome una de varias opciones existentes en una ramificacin.
En C++ se tienen las siguientes instruccins de seleccin:
3.2.1.- La instruccin if - else
donde:
if( condicin )
[bloque_1]
[else]
[bloque_2]
bloque_1 y bloque_2 pueden estar formados por uno
ms instrucciones.
else es opcional, y en caso de no existir, bloque_2
tampoco existir.
Esta estructura puede anidarse para elgir entre un grupo de ms de dos opciones,
tomando la siguiente forma:
if(condicin_1)
bloque_1;
else if(condicin_2)
bloque_2;
else if(condicin_3)
bloque_3;
............
else
bloque_N;
24
25
return 0;
}
2. Elabore un programa que permita determinar el tiempo (s) que
transcurrir hasta que dos autos se encuentren, considerando que estos
autos separados una distancia (m) van uno al encuentro del otro con
velocidad constante (m/s)
Datos de prueba: distancia = 130 m
T= D / (V1 +
auto1: velocidad = 5 m/s
V2)
auto2: velocidad = 8 m/s
3. Elabore un programa que permita determinar el tiempo (s) que
transcurrir hasta que un auto alcanza al otro, se sabe que estos autos
separados una distancia (m) van en igual direccin con velocidad
constante (m/s). Considere la velocidad del primero auto mayor.
Datos de prueba: distancia = 120 m
T= D / (V1 auto1: velocidad = 9 m/s
V2)
auto2: velocidad = 6 m/s
4. Elabore un programa que permita determinar la aceleracin (m/s) de un
bloque que se encuentra en reposo, conociendo su masa (kg) y la fuerza
(Newton) horizontal que se le aplica. Se debe considerar que el valor de
la masa sea mayor de cero
Datos de prueba: Fuerza = 54 N;
Masa = 6 kg
5. Elabore un programa que permita determinar la potencia (watt o vatios)
que realiza un motor, conociendo el trabajo (joule) que realiza en un
determinado tiempo (segundo). El valor del tiempo debe ser positivo y
diferente de cero
Datos de prueba: trabajo = 1000 j ; tiempo = 5 s
6. Elabore un programa que permita determinar si un nmero ingresado es
un nmero entero.
Dato de prueba: nmero = 57
7. Elabore un programa que permita determinar si un nmero entero
positivo es nmero par.
Dato de prueba: numero = 38
8. Elabore un programa que permita expresar una cantidad dada en
segundos a horas, minutos y segundos. La cantidad debe ser entera y
mayor a cero
Dato de prueba: Cantidad = 8000 s
26
B B2 4AC B B2 4AC
2A
2A
Esta instruccin es til cuando se tiene que elegir entre ms de dos opciones, como es el
caso de manejo de mens. Esta instruccin es preferible que el uso de anidamientos de
varios if-else.
Su sintaxis es:
switch(expresin_entera)
{
case Const_1 : Bloque_1 ; break ;
case Const_2 : Bloque_2 ; break ;
.............................
.............................
.............................
case Const_N : Bloque_N ; break ;
default : Bloque_X ;
}
28
#include <iostream.h>
#include <conio.h>
void main()
{
char opcion;
clrscr();
gotoxy(30,5);
cout << "MENU DE OPCIONES"; gotoxy(30,8);
cout << "1.- CREACION"; gotoxy(30,10);
cout << "2.- MODIFICACION"; gotoxy(30,12);
cout << "3.- ELIMINACION"; gotoxy(30,14);
cout << "0.- SALIDA"; gotoxy(30,18);
cout << "SU OPCION ? "; opcion= getche();
cout << "\n\n";
switch(opcion)
{
case '1': clrscr(); cout << "RUTINA DE CREACION \n"; break;
case '2': clrscr(); cout << "RUTINA DE MODIFICACION \n"; break;
case '3': clrscr(); cout << "RUTINA DE ELIMINACION \n"; break;
case '0': clrscr(); cout << "SALIDA DE LA APLICACIN \n";break;
default: clrscr(); cout << "OPCION INVALIDA.....\n";
}
Ejercicios
29
#include<stdio.h>
#include<conio.h>
int main()
{
int N;
printf("\n INGRESE ");
printf("\n ");
printf("\n Numero desde 1 hasta 7 : ");scanf("%i",&N);
switch (N)
{
case 1:
printf("\n Lunes ");
break;
case 2:
printf("\n Martes ");
break;
case 3:
printf("\n Miercoles ");
break;
case 4:
printf("\n Jueves ");
break;
case 5:
printf("\n Viernes ");
break;
case 6:
printf("\n Sabado ");
break;
case 7:
printf("\n Domingo ");
break;
default:
printf("\n No existe el dia ");
}
getch();
return 0;
}
2. Elabore un programa que acepte un nmero entero desde 1 hasta 12
(representa un mes del ao) y permita determinar a que estacin del
ao pertenecen
Dato de prueba:
Nmero = 6
3. Elabore un programa que permita ingresar dos nmeros enteros y un
operador aritmtico (+, -, /, *), seguidamente se debe determinar el
resultado de la operacin que indica el operador.
Datos de prueba: A = 10 ; B = 5 ; OP = *
30
3.3.- Iteracin
Con esta instruccin se maneja una estructura en la que, de entrada, se evala una
condicin. En caso de que el resultado de tal evaluacin sea un valor diferente de cero ,
se ejecuta un bloque de instrucciones, en el cual debe existir una instruccin que
modifique la condicin, ya que de lo contrario ejecutar un ciclo infinito ( loop ). Si el
resultado de la evaluacin es un valor igual a cero, el bloque de instrucciones no se
ejecuta y finaliza la ejecucin de la instruccin.
La sintaxis de la instruccin while es la siguiente:
while(condicin)
bloque;
31
La instruccin do-while tiene un comportamiento similar a while, slo que en este caso
primero se ejecuta el bloque de instrucciones y despus se evala la condicin. Con esto
se asegura que el bloque se ejecutar al menos una vez.
Esta es la sintaxis de la instruccin do-while :
do
bloque;
while(condicin);
33
{
S = S + I;
I = I + 1;
}
while ( I <= N);
cout<<"\n La Suma es: "<<S;
cout<<"\n ";
system("PAUSE");
return 0;
}
2. Elabore un algoritmo/programa que permita elegir que desea determinar
el usuario con respecto a la formula
V=D/T
V : Velocidad
D : Distancia T: Tiempo
#include <iostream.h>
int main()
{
float V, D, T;
int OP;
int Resp;
do
{
cout<<"\n Que desea determinar en V = D / T ";
cout<<"\n 1. Velocidad ";
cout<<"\n 2. Distancia ";
cout<<"\n 3. Tiempo ";
cout<<"\n Opcion "; cin>>OP;
switch (OP)
{
case 1:
cout<<"\n Ingrese ";
cout<<"\n Distancia (m) "; cin>>D;
cout<<"\n Tiempo (s) < > de cero "; cin>>T;
V = D / T;
cout<<"\n La velocidad en (m/s) es: "<<V;
break;
case 2:
cout<<"\n Ingrese ";
cout<<"\n Velocidad (m/s) "; cin>>V;
cout<<"\n Tiempo en segundos "; cin>>T;
D = V* T;
cout<<"\n La distancia en metros es: "<<D;
break;
case 3:
cout<<"\n Ingrese ";
cout<<"\n Velocidad (m/s) < > de cero ";cin>>V;
cout<<"\n Distancia en metros "; cin>>D;
T = D / V;
cout<<"\n El Tiempo en segundos es: "<<T;
break;
default:
cout<<"\n Opcion Incorrecto ";
}
cout<<"\n Desea Continuar SI = 9 / NO = 0? ";cin>>Resp;
} while ( Resp == 9);
cout<<"\n ";
system("PAUSE");
35
return 0;
}
3. Elabore un programa que permita sumar y contar todos los nmeros
naturales hasta un nmero ingresado. Los nmeros considerados deben
ser mltiplos de cinco
Dato de prueba: Nmero ingresado = 80
4. Elabore un programa que permita determinar, utilizando un men de
opciones, el rea de un cuadrado, un triangulo, un crculo y un trapecio.
5. Elabore un algoritmo/programa que permita elegir que desea determinar
el usuario con respecto a la formula
T= D / (V1 - V2)
6. Elaborar un programa que acepte un nmero entero, seguidamente se
debe determinar el factorial de la mayor cifra (valor absoluto) que tiene
el nmero ingresado.
7. Elaborar un programa que acepte un nmero entero, seguidamente se
debe determinar si el numero ingresado es numero perfecto
8. Elaborar un programa que determine y muestre todos los nmeros
perfecto menores a 100.
inicializacin
condicin
control
36
Los bloques de inicializacin, condicin y control no son obligatorios, pero s lo son los
tres punto y coma que los separan; de tal suerte que la forma mnima de una instruccin
for quedara as:
for(;;)
;
// ciclo infinito
// no realiza tarea alguna
return 0;
{
int N;
int I, S;
cout<<"\n INGRESE ";
cout<<"\n ";
cout<<"\n Numero limite para la suma : ";cin>>N;
S = 0;
for ( I = 1; I <= N; I++)
S = S + I; // hacemos uso de un acumulador
cout<<"\n La Suma es: "<<S;
cout<<"\n ";
system("PAUSE");
return 0;
}
2. Elabore un algoritmo/programa que permita sumar todos los nmeros
naturales hasta un nmero ingresado. Los nmeros sumados deben ser
pares
Dato de prueba: Nmero = 36
3. Elabore un algoritmo/programa que permita contar todos los nmeros
naturales que se encuentran en un rango de nmeros, incluyendo el
rango. Los nmeros contados deben ser mltiplos de cinco.
Dato de prueba: Rango de Nmeros = 13 a 45, es decir debe ingresar
dos nmeros (13 y 45)
4. Elabore un algoritmo/programa que permita aceptar un nmero entero
mayor a la unidad y determinar si es primo absoluto o no.
5. Elabore un algoritmo/programa que permita generar la serie de
Fibonacci, con una cantidad de trminos igual a un nmero entero
ingresado
BREAK Y CONTINUE
Los enunciados break y continue son utilizados para modificar el flujo de
control dentro de un programa.
El break utilizado dentro de las estructuras de controlcausa la inmediata
salida de dicha estructura (por lo tanto no sigue repitindose el bloque y
contina la ejecucin de las instrucciones que le siguen a la estructura de
control).
Veamos un ejemplo del uso de break:
#include <iostream.h>
int main()
{
int num;
num = 1;
while (num <= 10)
{
if (num == 5)
{
break;
}
cout<<num <<"; ";
38
num = num + 1;
}
cout<<"\n ";
system("PAUSE");
return 0;
}
El cdigo anterior imprime:
1234
Lo que sucede es que cuando la variable num toma el valor 5, la condicin
del while se cumple, al ingresar al bloque se evala en la estructura if si
num es igual a 5 y se ejecuta el break saliendo del bloque while. Num
termina valiendo 5 pues jams se ejecuta la suma num = num + 1.
Por otra parte, el enunciado continue, dentro de las estructuras de
repeticin, al ser ejecutado salta las instrucciones que siguen en el bloque y
ejecuta la siguiente repeticin en el ciclo. Veamos un ejemplo para aclarar el
funcionamiento de continue:
#include <iostream.h>
int main()
{
int num;
num = 0;
while (num <= 7)
{
num = num + 1;
if (num == 5)
{
continue;
}
cout<<num<<"; ";
}
cout<<"\n ";
system("PAUSE");
return 0;
}
1 2 3 4 6 7- 8
Como vemos, en una de las repeticiones se saltea la impresin del nmero 5.
Algunos programadores dicen que el uso del break y del continue dentro de las
estructuras de control (excepto el break en la estructura switch) viola las normas de la
programacin estructurada. Lo cierto es que no es necesario el uso de break y continue
si se utilizan las estructuras correctas
39
identificador( argumentos )
bloque;
donde:
tipo es el tipo de dato que va a retornar la funcin, e identificador es el nombre de la
funcin.
La existencia de argumentos depender de la tarea que va a realizar la funcin, pero el
par de parntesis es requisito indispensable.
En el ejemplo 4.1. se presenta una aplicacin de la definicin, la declaracin y la
invocacion de funciones.
4.2.- Declaracin de funciones
40
definicin.
En el ejemplo 4.1, las lneas:
void saludo();
float calcula(float);
En este caso, el identificador arg no tiene uso alguno; por lo que es innecesaria su
inclusin.
Si el nmero de argumentos, o los tipos correspondientes no coinciden entre la
declaracin y la lnea de encabezado de la definicin de la funcin el compilador
marcar un error.
4.3.- Invocacin a funciones
Una invocacin llamada a una funcin implica pasarle el control de la ejecucin del
programa, as como los argumentos parmetros que requiere para realizar su tarea. En
el listado 4.1 se tienen las lneas:
saludo();
//INVOCACION A LA FUNCION saludo()
precio = calcula(costo); //INVOCACION A LA FUNCION calcula()
41
// ENCABEZADOS
#include <iostream.h>
// DECLARACION DE FUNCIONES
void saludo();
float calcula(float);
// DEFINICION DE LA FUNCION PRINCIPAL
int main()
{
float costo, precio;
system("CLS");
cout << "\n COSTO : $ "; cin>> costo;
saludo();
//INVOCACION A LA FUNCION saludo()
precio = calcula(costo); //INVOCACION A LA FUNCION calcula()
cout << "\n PRECIO : $ " << precio;
cout << "\n ";
system("PAUSE");
return 0;
}
// DEFINICION DE LA FUNCION saludo()
void saludo()
{
system("CLS");
cout << "\n !! BIENVENIDO A LA VENTA ESPECIAL !!";
}
// DEFINICION DE LA FUNCION calcula()
float calcula(float x)
{
return( x * 1.6);
}
42
int main()
{ float costo, precio;
system("CLS");
cout << "\n COSTO : $ ";
saludo();
precio = calcula(costo);
cout << "\n PRECIO : $ "
cout << "\n ";
system("PAUSE");
return 0;
}
cin>> costo;
//INVOCACION A LA FUNCION saludo()
//INVOCACION A LA FUNCION calcula()
<< precio;
En la mayora de los casos, los identificadores nombres de los objetos deben ser
nicos, esto es, que dos objetos dentro del mismo mbito no deben tener el mismo
nombre. Una de las excepciones la constituyen las funciones, que pueden compartir el
mismo nombre entre varias de ellas, dando la impresin de que a una sola funcin se le
ha "sobrecargado de tareas", razn por la cual se les llama funciones sobrecargadas.
Por ejemplo, supongamos que deseamos una funcin que sirva para sumar nmeros. Lo
ideal sera contar con una sola funcin que realizara la suma de nmeros de diferentes
tipos y que retornara un valor de acuerdo al tipo de resultado. El Lenguaje C++ permite
resolver este problema por medio de la sobrecarga de funciones.
A continuacin se muestran los prototipos para cada una de las funciones que comparten
el nombre suma :
int
suma(int,int);
float
suma(float,float);
double suma(double,double);
Aqu surge la pregunta: cmo distingue el compilador entre cada una de las funciones
suma()?.
Debido a que varias funciones sobrecargadas pueden usar el mismo identificador, C++
utiliza el concepto de nombres ampliados para controlar cada funcin individualmente.
El nombre ampliado de una funcin se construye tomando como base el nombre de la
43
44
#include <iostream.h>
int mcd(int a , int b)
{
int r; //usaremos el r como residuo
a = (a < 0) ? -a:a; //le damos el intervalo a
b = (b < 0) ? -b:b; //le damos el intervalo b
r = (a < b) ? a:b; //le damos el intervalo desde a hasta b
while ( (a % r) || (b % r)) //Usamos el "o"
--r; //Decremento "--"
return r;
}
int main()
{
int A, B;
float D;
cout<<"\n INGRESE ";
cout<<"\n ";
cout<<"\n Primer numero : ";cin>>A;
cout<<"\n Segundo numero : ";cin>>B;
D= mcd(A, B); //Se invoca a la funcion
cout<<"\n RESULTADO ";
cout<<"\n ";
cout<<"\n El maximo comun divisor (MCD) es: "<<D;
cout<<"\n ";
system("PAUSE");
return 0;
}
Segunda forma
#include <iostream.h>
int mcd(int a , int b)
{
int r; //usaremos el r como residuo
do
{
r=a%b;
a=b;
b=r;
}while (b!=0);
return a;
}
int main()
{
int A, B, X;
float D;
cout<<"\n
cout<<"\n
cout<<"\n
cout<<"\n
if (A<B)
{
X=A;
INGRESE ";
";
Primer numero : ";cin>>A;
Segundo numero : ";cin>>B;
45
A=B;
B=X;
}
D= mcd(A, B); //Se invoca a la funcion
cout<<"\n RESULTADO ";
cout<<"\n ";
cout<<"\n El maximo comun divisor (MCD) es: "<<D;
cout<<"\n ";
system("PAUSE");
return 0;
}
5. Elabore un programa que permita utilizar una sola funcin para
determinar la suma, resta y multiplicacin de dos nmeros enteros.
Dato de prueba:
Primer numero = 20 Segundo numero = 40
5.- Arreglos.
Los arreglos consisten de un conjunto de elementos del mismo tipo almacenados en
localidades contguas de memoria. Los elementos de un arreglo comparten el mismo
nombre, pudindo distinguirse un elemento de otro a travs de un subndice.
En esta unidad, describiremos la declaracin de los arreglos, el manejo de los elementos
de un arreglo dado, as como lo relacionado con los arreglos que se utilizan para formar
las cadenas de caracteres.
5.1.- Declaracin de arreglos
Los elementos de los arreglos son variables de algn tipo dado, que al compartir el
mismo nombre pueden ser tratadas como una sola entidad.
La sintaxis para la declaracin de un arreglo es la siguiente:
tipo
identificador
[ <expresin_constante> ] ;
tipo
donde:
46
double matriz[5][7];
int trid[3][5][8];
RESULTADO
Declara un arreglo unidimensional llamado
nombre compuesto de 31 elementos de tipo
carcter.
Declara un arreglo unidimensional llamado
valor, compuesto por 20 elementos de tipo
entero con signo.
Declara un arreglo unidimensional llamado
abc, compuesto por x elementos de tipo
entero largo sin signo. En este caso x
debe ser una constante entera.
Declara un arreglo bidimensional llamado
matriz, compuesto por 35 elementos de
tipo entero.
Declara un arreglo tridimensional llamado
trid, compuesto por 120 elementos de tipo
entero.
47
Al declarar un arreglo dentro de una funcin, los valores almacenados en cada uno de
los elementos son desconocidos (se dice que el arreglo "tiene basura"), lo cual causa que
el programa correspondiente arroje resultados inesperados. Para evitar los valores
desconocidos, se recomienda asignar valores iniciales a cada uno de los elementos de
los arreglos, como se muestra a continuacin:
Por ejemplo, supongamos la siguiente declaracin:
int vector[5];
=
=
=
=
=
100
101
102
103
104
;
;
;
;
;
48
Ejercicios
1. Elabore un programa que permita aceptar 10 nmeros enteros y
seguidamente se deben mostrar estos nmeros ingresados.
Dato de prueba:
34, 56, 32, 54, 67, 21, 89, 47, 91, 13
#include <iostream.h>
int main()
{
int NUM[10];
int I;
cout<<"\n INGRESE 10 NUMEROS ENTEROS ";
cout<<"\n ";
for ( I=1; I<=10;I++)
cin>>NUM[I];
cout<<"\n LOS NUMEROS INGRESADOS SON: ";
cout<<"\n ";
for ( I=1; I<=10;I++)
cout<<NUM[I]<<" ";
cout<<"\n ";
system("PAUSE");
return 0;
}
2. Elabore un programa que permita aceptar 10 nmeros enteros y
seguidamente se deben mostrar estos nmeros ingresados ordenados en
forma ascendente.
Datos de prueba:
34, 56, 32, 54, 67, 21, 89, 47, 91, 13
#include <iostream.h>
int main()
{
int NUM[10];
int I, J, AUX;
cout<<"\n INGRESE 10 NUMEROS ENTEROS ";
cout<<"\n ";
for ( I=1; I<=10;I++)
cin>>NUM[I];
cout<<"\n ";
// haciendo uso del metodo de la burbuja
for ( I=1; I<=9;I++)
for ( J=I + 1; J<=10;J++)
if (NUM[J] < NUM[I])
49
AUX = NUM[I];
NUM[I]= NUM[J];
NUM[J]= AUX;
50
51
=
=
=
=
=
=
=
=
=
=
0
1
2
3
4
5
6
7
8
9
;
;
;
;
;
;
;
;
;
;
Como puede verse, la primera forma es mucho ms compacta, aunque, como en muchas
de las instrucciones de C++, la brevedad del cdigo sacrifica la claridad.
Ejercicios
1. Elabore un programa que permita aceptar 6 nmeros enteros y
seguidamente se deben mostrar estos nmeros ingresados.
Dato de prueba:
columna1
columna2 columna3
Fila 1
14
35
46
Fila 2
25
18
49
#include <iostream.h>
int main()
{
int NUM[2][3];
int I, J;
for ( I=1; I<=2; I++)
{
cout<<"\n INGRESE 3 NUM. ENTEROS DE LA FILA "<<I<<"\n ";
for ( J=1; J<=3;J++)
cin>>NUM[I][J];
}
cout<<"\n LOS NUMEROS INGRESADOS SON: ";
cout<<"\n ";
for ( I=1; I<=2; I++)
{
for ( J=1; J<=3;J++)
cout<<NUM[I][J] <<" ";
cout<<"\n ";
52
}
cout<<"\n ";
system("PAUSE");
return 0;
}
2. Elabore un programa que permita aceptar 6 nmeros enteros y
seguidamente se deben mostrar la suma y promedio de estos nmeros
ingresados.
Dato de prueba:
columna1
columna2 columna3
Fila 1
14
35
46
Fila 2
25
18
49
3. Elabore un programa que permita aceptar 12 nmeros enteros y
seguidamente se debe mostrar la suma de los valores de cada una de
sus filas (por separado).
Dato de prueba:
columna1
columna2 columna3 columna 4
Fila 1
14
35
46
32
Fila 2
25
18
49
43
Fila 3
51
34
12
65
=
=
=
=
=
=
=
=
'A' ;
'R' ;
'R' ;
'E' ;
'G' ;
'L' ;
'O' ;
'\0';
Al contener el carcter nulo, el arreglo cadena ser reconocido por las funciones y
objetos diseados para manipular cadenas de caracteres. Para manejar un arreglo de
cadenas de caracteres se debe declarar como un arreglo bidimensional de elementos de
tipo char, como puede observarse en el listado 5.2.
53
#include <iostream.h>
#include <conio.h>
int main()
{
unsigned short int calif[10];
char nombre[10][21]; // Se declara un arreglo bidimensional
// para 10 nombres de 20 caracteres por
// nombre mas un caracter para el nulo.
clrscr();
for( int x=1 ; x <= 10 ; x++)
{
gotoxy(10,x+1);
cout << "NOMBRE [" << x << "] = " ;
cin >> nombre[x];
gotoxy(45,x+1);
cout << "CALIFICACION [" << x << "] = " ;
cin >> calif[x];
}
return 0;
}
o as:
54
char nombres[3][5];
nombres[0][0]
nombres[0][1]
nombres[0][2]
nombres[0][3]
nombres[0][4]
nombres[1][0]
nombres[1][1]
nombres[1][2]
nombres[1][3]
nombres[1][4]
=
=
=
=
=
=
=
=
=
=
'H' ;
'U' ;
'G' ;
'O' ;
'\0' ;
'P' ;
'A' ;
'C' ;
'O' ;
'\0' ;
nombres[2][0]
nombres[2][1]
nombres[2][2]
nombres[2][3]
nombres[2][4]
=
=
=
=
=
'L' ;
'U' ;
'I' ;
'S' ;
'\0' ;
En los listados 5.3 y 5.4 se muestran las dos primeras formas, observndose que se
obtiene el mismo resultado.
#include <iostream.h>
#include <conio.h>
void main()
{
char nombres[][5] = { "HUGO","PACO","LUIS" };
int calif[] = { 100, 90, 100 };
clrscr();
for( int x=0 ; x < 3;x++)
{
gotoxy(35,x+10);
cout<< nombres[x];
gotoxy(40,x+10);
cout << calif[x];
}
}
55
Como se estableci al principio de esta unidad, el lenguaje C++ no cuenta con algn
tipo de dato especfico para el manejo de cadenas de caracteres, pero s cuenta con un
grupo de funciones que se han acumulado durante la evolucin del Lenguaje C.
Para leer una cadena de caracteres desde el teclado existe la funcin gets(), y para
desplegar una cadena en pantalla se usa la funcin puts(). Los prototipos de ambas
funciones se encuentran declarados en el archivo STDIO.H.
Por ejemplo, el listado 5.5 muestra un programa que sirve para leer y desplegar cadenas
de caracteres utilizando las funciones gets() y puts().
#include <stdio.h>
#include <conio.h>
#include <string.h>
void main()
{
char nombre[31];
// Declara un arreglo de 31 caracteres
char saludo1[] = "?? HOLA,"; //Constante de caracteres
char saludo2[] = " !!";
clrscr();
gotoxy(20,10);
puts(" Cul es tu nombre ? "); //Despliega cadena de car.
gotoxy(45,10);
gets(nombre);
// Lee cadena de caracteres
strupr(nombre); // Convierte a maysculas
gotoxy(20,12);
puts(saludo1);
gotoxy(30,12);
puts(nombre);
gotoxy(30+strlen(nombre),12); // Longitud de la cadena
puts(saludo2);
}
56
DESCRIPCION
stpcpy
strcat
strchr
strcmp
strcmpi
strcpy
strcspn
strdup
stricmp
strlen
strlwr
strncat
Compara parte de una cadena con parte de otra, sin distinguir entre
maysculas y minsculas.
strncpy
strnicmp
Compara parte de una cadena con parte de otra, sin distinguir entre
maysculas y minsculas.
strnset
strpbrk
strrchr
strrev
strset
strspn
strstr
strtol
strtoul
57
strupr
Ejercicio 6 de IF
#include <iostream.h>
int main()
{
float N;
int NE;
cout<< "\n INGRESE UN NUMERO : " ; cin>>N;
NE = int(N);
if (N-NE==0)
cout<< "\n NUMERO INGRESADO ES ENTERO ";
cout<< "\n";
system("PAUSE");
return 0 ;
}
Ejercicio 7 de IF
#include <iostream.h>
int main()
{
int N;
cout<< "\n INGRESE UN NUMERO : " ; cin>>N;
if (N>0 && N%2==0)
cout<< "\n NUMERO INGRESADO ES PAR ";
cout<< "\n";
system("PAUSE");
return 0 ;
}
Ejercicio 8 de IF
#include <iostream.h>
int main()
{
float N;
int NE, H, M, S;
cout<< "\n INGRESE UN NUMERO : " ; cin>>N;
NE = int(N);
if (N-NE==0 && N>0)
{
H=NE/3600;
M=(NE%3600)/60;
58
S=(NE%3600)%60;
cout<<H<<" HORA(S) "<<M<<" MINUTO(S) "<<S<<"
SEGUNDO(S)";
}
cout<< "\n";
system("PAUSE");
return 0 ;
}
Ejercicio 2 de IF- ELSE
#include <iostream.h>
int main()
{
int N, M;
cout<< "\n INGRESE " ;
cout<< "\n PRIMER NUMERO " ; cin>>N;
cout<< "\n SEGUNDO NUMERO DIFERENTE AL PRIMERO " ; cin>>M;
if (N!=M)
if (N>M)
cout<<"\n MAYOR NUMERO ES : "<<N;
else
cout<<"\n MAYOR NUMERO ES : "<<M;
else
cout<<"\n INGRESE NUMEROS DIFERENTES";
cout<< "\n";
system("PAUSE");
return 0 ;
}
Ejercicio 3 de IF- ELSE
#include <iostream.h>
int main()
{
int N;
int a, b, S, M;
cout<< "\n INGRESE " ;
cout<< "\n NUMERO ENTERO DE DOS CIFRAS " ; cin>>N;
if (N>=10 && N<=99)
{
a=N/10;
b=N%10;
if (a%2==0 && b%2==0)
{
S= a+b;
cout<<"\n LA SUMA DE LAS CIFRAS ES : "<<S;
}
if (a%2!=0 && b%2!=0)
{
M= a*b;
cout<<"\n EL PRODUCTO DE LAS CIFRAS ES : "<<M;
}
59
}
else
cout<<"\n INGRESE UN NUMERO DE DOS CIFRAS";
cout<< "\n";
system("PAUSE");
return 0 ;
}
Ejercicio 5 de IF- ELSE
#include <iostream.h>
int main()
{
int N;
cout<< "\n INGRESE " ;
cout<< "\n NUMERO ENTERO MENOR A 31524 : " ; cin>>N;
if (N>=0 && N<10)
cout<<"\n EL NUMERO TIENE UNA CIFRA ";
else if (N<100)
cout<<"\n EL NUMERO TIENE DOS CIFRAS ";
else if (N<1000)
cout<<"\n EL NUMERO TIENE TRES CIFRAS ";
else if (N<10000)
cout<<"\n EL NUMERO TIENE CUATRO CIFRAS ";
else if (N<31524)
cout<<"\n EL NUMERO TIENE CINCO CIFRAS ";
cout<< "\n";
system("PAUSE");
return 0 ;
}
Ejercicio 6 de IF- ELSE
#include <iostream.h>
int main()
{
int N;
int a, b, NC;
cout<< "\n INGRESE " ;
cout<< "\n NUMERO ENTERO DE DOS CIFRAS " ; cin>>N;
if (N>=10 && N<=99)
{
a=N/10;
b=N%10;
NC= a+b*10;
cout<<"\n EL NUMERO CON LAS CIFRAS CAMBIADAS ES : "<<NC;
}
else
cout<<"\n INGRESE UN NUMERO DE DOS CIFRAS";
cout<< "\n";
system("PAUSE");
return 0 ;
}
60
61
if (N<0 )
cout<<"\n EL NUMERO ES NEGATIVO ";
else if (N==0)
cout<<"\n EL NUMERO ES IGUAL A CERO ";
else
cout<<"\n EL NUMERO ES POSITIVO ";
cout<< "\n";
system("PAUSE");
return 0 ;
}
62
return 0 ;
}
Ejercicio 9A de IF- ELSE
#include <iostream.h>
int main()
{
int A, B, C;
int M, N;
cout<< "\n INGRESE TRES NUMEROS DIFERENTES" ;
cout<< "\n PRIMER NUMERO : " ; cin>>A;
cout<< "\n SEGUNDO NUMERO : " ; cin>>B;
cout<< "\n TERCER NUMERO : " ; cin>>C;
if (A>B && A>C )
M=A;
else if (B>A && B>C )
M=B;
else
M=C;
if (A<B && A<C )
N=A;
else if (B<A && B<C )
N=B;
else
N=C;
cout<<"\n EL MAYOR NUMERO INGRESADO ES : "<<M;
cout<<"\n EL MENOR NUMERO INGRESADO ES : "<<N;
cout<< "\n";
system("PAUSE");
return 0 ;
}
Ejercicio switch01
#include<iostream.h>
int main()
{
int N;
cout<<"\n INGRESE ";
cout<<"\n ";
cout<<"\n Numero desde 1 hasta 7 : "; cin>>N;
switch (N)
{
case 1:
cout<<"\n Lunes ";
break;
case 2:
cout<<"\n Martes ";
break;
case 3:
cout<<"\n Miercoles ";
break;
case 4:
63
64
}
cout<<"\n \n \n ";
system("PAUSE");
return 0;
}
Ejercicio switch03
#include<iostream.h>
int main()
{
int A, B;
char OP;
float RESULTADO;
cout<<"\n INGRESE ";
cout<<"\n ";
cout<<"\n PRIMER NUMERO : "; cin>>A;
cout<<"\n SEGUNDO NUMERO : "; cin>>B;
cout<<"\n OPERADOR (+ , - , * , / ) : "; cin>>OP;
switch (OP)
{
case '+':
RESULTADO= A+B;
cout<<"\n LA SUMA ES: "<<RESULTADO;
break;
case '-':
RESULTADO= A-B;
cout<<"\n LA RESTA ES: "<<RESULTADO;
break;
case '*':
RESULTADO= A*B;
cout<<"\n LA MULTIPLICACION ES: "<<RESULTADO;
break;
case '/':
if (A!=0 && B!=0)
{
RESULTADO= static_cast<float>(A)/static_cast<float>(B);
cout<<"\n EL COCIENTE ES: "<<RESULTADO;
}
else cout<<"\n no se puede dividir entre cero ";
break;
default:
cout<<"\n No existe el MES para el numero ingresado ";
}
cout<<"\n \n \n ";
system("PAUSE");
return 0;
}
Ejercicio switch04
65
#include<iostream.h>
int main()
{
int SW=1;
int SB;
char CAT;
float DES, BON, PAGO;
cout<<"\n INGRESE ";
cout<<"\n ";
cout<<"\n SUELDO BASICO : "; cin>>SB;
cout<<"\n CATEGORIA (A , B , C ) : "; cin>>CAT;
switch (CAT)
{
case 'A':
DES= SB*0.03;
PAGO= SB-DES;
break;
case 'B':
BON= SB*0.01;
PAGO= SB+BON;
break;
case 'C':
BON= SB*0.02;
PAGO= SB+BON;
break;
default:
cout<<"\n No existe la categoria ";
SW=0;
}
if (SW==1)
cout<<"\n PAGO : "<<PAGO;
cout<<"\n \n \n ";
system("PAUSE");
return 0;
}
Ejercicio switch05
#include<iostream.h>
int main()
{
int SWU,SWD,SWC=1;
int N;
int U, D, C;
cout<<"\n INGRESE ";
cout<<"\n ";
cout<<"\n NUMERO ENTERO DE TRES CIFRAS : "; cin>>N;
66
67
Ejercicio WHILE02
#include <iostream.h>
int main()
{
int N;
int I, S;
cout<<"\n INGRESE ";
cout<<"\n ";
cout<<"\n Numero limite para la suma: "; cin>>N;
I = 2;
S = 0;
while ( I < N)
{
S = S + I; // hacemos uso de un acumulador
I = I +2;
}
cout<<"\n La Suma es: "<<S;
cout<<"\n ";
system("PAUSE");
return 0;
}
Ejercicio WHILE03
#include <iostream.h>
int main()
{
int N;
int I, C;
cout<<"\n INGRESE ";
cout<<"\n ";
cout<<"\n Numero limite para contar los valores: "; cin>>N;
I = 2;
C = 0;
while ( I < N)
{
C = C + 1; // hacemos uso de un CONTADOR
I = I +2;
}
cout<<"\n EL TOTAL DE NUMERO ES : "<<C;
cout<<"\n ";
system("PAUSE");
return 0;
}
Ejercicio WHILE04
#include <iostream.h>
int main()
{
int N1, N2;
int I, C;
cout<<"\n INGRESE ";
68
cout<<"\n ";
cout<<"\n Numero limite inferior para contar los valores: "; cin>>N1;
cout<<"\n Numero limite superior para contar los valores: "; cin>>N2;
if (N1%2==0)
I=N1;
else
I=N1+1;
C = 0;
while ( I <= N2)
{
C = C + 1; // hacemos uso de un CONTADOR
I = I +2;
}
cout<<"\n EL TOTAL DE NUMERO ES : "<<C;
cout<<"\n ";
system("PAUSE");
return 0;
}
Ejercicio WHILE05
#include <iostream.h>
int main()
{
int N;
int I, S, M;
cout<<"\n INGRESE ";
cout<<"\n ";
cout<<"\n Numero limite para contar los valores: "; cin>>N;
I = 3;
S = 0;
M = 1;
while ( I < N)
{
S = S + I; // hacemos uso de un Acumulador
M = M*I; // hacemos uso de una multiplicacion
I = I +3;
}
cout<<"\n LA SUMA ES : "<<S;
cout<<"\n EL PRODUCTO ES : "<<M;
cout<<"\n ";
system("PAUSE");
return 0;
}
Ejercicio WHILE06
#include <iostream.h>
int main()
{
69
int N;
int C, S, M;
cout<<"\n INGRESE ";
cout<<"\n ";
cout<<"\n NUMERO ENTERO: "; cin>>N;
S=0;
M=1;
while (N!=0)
{
C=N%10;
S=S+C;
M=M*C;
N=N/10;
}
cout<<"\n LA SUMA ES : "<<S;
cout<<"\n EL PRODUCTO ES : "<<M;
cout<<"\n ";
system("PAUSE");
return 0;
}
Ejercicio WHILE07
#include <iostream.h>
int main()
{
int N;
int C, S;
cout<<"\n INGRESE ";
cout<<"\n ";
cout<<"\n NUMERO ENTERO: "; cin>>N;
S=0;
while (N!=0)
{
C=N%10;
if(C%2!=0)
S=S+C;
N=N/10;
}
cout<<"\n LA SUMA ES : "<<S;
cout<<"\n ";
system("PAUSE");
return 0;
}
Ejercicio WHILE08
#include <iostream.h>
int main()
{
int N;
70
Ejercicio WHILE09
#include <iostream.h>
#include <math.h>
int main()
{
int N, B;
int R, I;
double NC;
cout<<"\n INGRESE ";
cout<<"\n ";
cout<<"\n NUMERO ENTERO EN EL SISTEMA DECIMAL: "; cin>>N;
cout<<"\n LA BASE DEL NUEVO SISTEMA DE NUMERACION: "; cin>>B;
NC=0;
I=0;
while (N!=0)
{
R=N%B;
NC=NC + R*pow(10,I);
I=I+1;
N=N/B;
}
cout<<"\n EL NUMERO EN LA BASE "<<B<<" ES : "<<NC;
71
cout<<"\n ";
system("PAUSE");
return 0;
}
Ejercicio DO_WHILE03
#include <iostream.h>
int main()
{
int N;
int I, S, C;
cout<<"\n INGRESE ";
cout<<"\n ";
cout<<"\n Numero limite: ";cin>>N;
S = 0;
C = 0;
I = 5;
do
{
S = S + I;
C = C +1;
I = I + 5;
}
while ( I <= N);
cout<<"\n La Suma es: "<<S;
cout<<"\n La Cantidad de numeros sumados es: "<<C;
cout<<"\n ";
system("PAUSE");
return 0;
}
Ejercicio DO_WHILE04
#include <iostream.h>
int main()
{
float A, L, B, H, R, b;
int OP;
int Resp;
do
{
cout<<"\n Que Area desea determinar ";
cout<<"\n 1. Cuadrado ";
cout<<"\n 2. Tiangulo ";
cout<<"\n 3. Circulo ";
cout<<"\n 4. Trapecio ";
cout<<"\n Opcion "; cin>>OP;
switch (OP)
{
case 1:
cout<<"\n Ingrese ";
72
73
do
{
F=F*I;
I=I+1;
}while (I<=MAYOR);
cout<<"\n El factorial de la mayor cifra es : "<<F;
cout<<"\n ";
system("PAUSE");
return 0;
}
Ejercicio FOR02
#include <iostream.h>
int main()
{
int N;
int I, S;
cout<<"\n INGRESE ";
cout<<"\n ";
cout<<"\n Numero limite para la suma : ";cin>>N;
S = 0;
for ( I = 2; I <= N; I=I+2)
S = S + I; // hacemos uso de un acumulador
cout<<"\n La Suma es: "<<S;
cout<<"\n ";
system("PAUSE");
return 0;
}
Ejercicio FOR03
#include <iostream.h>
int main()
{
int N1, N2;
int I, C;
cout<<"\n INGRESE ";
cout<<"\n ";
cout<<"\n Numero limite inferior del rango : ";cin>>N1;
cout<<"\n Numero limite superior del rango : ";cin>>N2;
C = 0;
for ( I = N1; I <= N2; I++)
if(I%5==0)
C = C + 1; // hacemos uso de un CONTADOR
cout<<"\n El total de numeros multiplos de 5 es: "<<C;
cout<<"\n ";
system("PAUSE");
return 0;
}
74
Ejercicio FOR04
#include <iostream.h>
int main()
{
int N;
int C, I;
cout<<"\n INGRESE ";
cout<<"\n ";
cout<<"\n NUMERO ENTERO : "; cin>>N;
C=0;
for(I=1; I<=N; I++)
if (N%I==0)
C=C+1;
if(C==2)
cout<<"\n El numero "<<N<<" es un numero primo absoluto";
else
cout<<"\n El numero "<<N<<" NO es un numero primo absoluto";
cout<<"\n ";
system("PAUSE");
return 0;
}
Ejercicio FOR05
#include <iostream.h>
int main()
{
int N;
int A, S, T, I;
cout<<"\n INGRESE ";
cout<<"\n ";
cout<<"\n NUMERO ENTERO QUE LIMITA LA SERIE DE FIBONACCI : ";
cin>>N;
A=0;
S=1;
cout<<"\n "<<A<<";"<<S;
for(I=3; I<=N; I++)
{
T= A+ S;
cout<<";"<<T;
A=S;
S=T;
}
cout<<"\n ";
system("PAUSE");
return 0;
}
Ejercicio FUNCION02
75
#include <iostream.h>
//funcin que permite sumar, restar, multiplicar y dividir dos nmeros
enteros
float operacion(int A, int B, char OP)
{
float RESULTADO;
switch (OP)
{
case '+':
RESULTADO= A+B;
break;
case '-':
RESULTADO= A-B;
break;
case '*':
RESULTADO= A*B;
break;
case '/':
if (A!=0 && B!=0)
{
RESULTADO= static_cast<float>(A)/static_cast<float>(B);
}
break;
}
return RESULTADO;
}
// fin de la funcin
int main()
{
int X, Y;
char O;
float RESUL;
cout<<"\n INGRESE ";
cout<<"\n ";
cout<<"\n Primer numero : ";cin>>X;
cout<<"\n Segundo numero : ";cin>>Y;
O='+';
RESUL= operacion(X, Y, O); //Se invoca a la funcion
cout<<"\n La suma es : "<<RESUL;
O='-';
RESUL= operacion(X, Y, O); //Se invoca a la funcion
cout<<"\n La resta es : "<<RESUL;
O='*';
RESUL= operacion(X, Y, O); //Se invoca a la funcion
cout<<"\n La multiplicacion es : "<<RESUL;
O='/';
RESUL= operacion(X, Y, O); //Se invoca a la funcion
cout<<"\n La division es : "<<RESUL;
cout<<"\n ";
system("PAUSE");
return 0;
}
76
Ejercicio ARREGLO03
#include <iostream.h>
int main()
{
int NUM[10];
int I, S;
float PROM;
cout<<"\n INGRESE 10 NUMEROS ENTEROS ";
cout<<"\n ";
for ( I=1; I<=10;I++)
cin>>NUM[I];
cout<<"\n ";
//SUMANDO LOS ELEMENTOS
S=0;
for ( I=1; I<=10;I++)
S = S + NUM[I];
// PROMEDIO
PROM = static_cast<float>(S)/10;
cout<<"\n LA SUMA ES: "<<S;
cout<<"\n EL PROMEDIO ES: "<<PROM;
cout<<"\n ";
system("PAUSE");
return 0;
}
Ejercicio ARREGLO06
#include <iostream.h>
int main()
{
int NUM[10];
int I, J, AUX, MENOR;
float RESULTADO;
cout<<"\n INGRESE 10 NUMEROS ENTEROS ";
cout<<"\n ";
for ( I=1; I<=10;I++)
cin>>NUM[I];
cout<<"\n ";
// haciendo uso del metodo de la burbuja
for ( I=1; I<=9;I++)
for ( J=I + 1; J<=10;J++)
if (NUM[J] < NUM[I])
{
AUX = NUM[I];
NUM[I]= NUM[J];
NUM[J]= AUX;
}
cout<<"\n ";
//DETERMINAR EL NUMERO MENOR DIFERENTE DE CERO
for ( I=1; I<=10;I++)
77
if (NUM[I]!=0)
{
MENOR=NUM[I];
break;
}
RESULTADO= static_cast<float>(NUM[10])/static_cast<float>(MENOR);
cout<<"\n EL RESULTADO DE LA DIVISION ES: "<<RESULTADO;
cout<<"\n ";
system("PAUSE");
return 0;
}
Ejercicio ARREGLO08
#include <iostream.h>
int main()
{
int NUM[10], PRI[10], NPRI[10];
int I, J, C;
int K=1, N=1;
cout<<"\n INGRESE 10 NUMEROS ENTEROS ";
cout<<"\n ";
for ( I=1; I<=10;I++)
cin>>NUM[I];
cout<<"\n ";
for ( I=1; I<=10;I++)
{
PRI[I]=0;
NPRI[I]=0;
}
// DETERMINANDO LOS PRIMOS ABSOLUTOS
for ( I=1; I<=10;I++)
{
C=0;
for ( J=1; J<=NUM[I];J++)
if(NUM[I]%J==0)
C=C+1;
if (C==2)
{
PRI[K]=NUM[I];
K=K+1;
}
else
{
NPRI[N]=NUM[I];
N=N+1;
}
}
// PRESENTAR LOS VECTORES
for ( I=1; I<=10;I++)
cout<<PRI[I]<<" ";
cout<<"\n ";
for ( I=1; I<=10;I++)
78
cout<<NPRI[I]<<" ";
cout<<"\n ";
system("PAUSE");
return 0;
}
Ejercicio ARREGLOBI03A
#include <iostream.h>
int main()
{
int NUM[3][4];
int I, J, S;
for ( I=1; I<=3; I++)
{
cout<<"\n INGRESE 4 NUM. ENTEROS DE LA FILA "<<I<<"\n ";
for ( J=1; J<=4;J++)
cin>>NUM[I][J];
}
// sumado los numerous por fila
for ( I=1; I<=3; I++)
{
S=0;
for ( J=1; J<=4;J++)
S= S + NUM[I][J];
cout<<"\n suma de la fila "<<I<<" es :"<<S;
}
cout<<"\n ";
system("PAUSE");
return 0;
}
Ejercicio ARREGLOBI03B
#include <iostream.h>
int main()
{
int NUM[3][4];
int S[3];
int I, J;
for ( I=1; I<=3; I++)
{
cout<<"\n INGRESE 4 NUM. ENTEROS DE LA FILA "<<I<<"\n ";
for ( J=1; J<=4;J++)
cin>>NUM[I][J];
}
// sumado los numeros por fila
for ( I=1; I<=3; I++)
{
79
S[I]=0;
for ( J=1; J<=4;J++)
S[I]= S[I] + NUM[I][J];
}
//mostrar la matriz con los resultados por fila
for ( I=1; I<=3; I++)
{
for ( J=1; J<=4;J++)
cout<<NUM[I][J]<<" ";
cout<<S[I]<<"\n ";
}
cout<<"\n ";
system("PAUSE");
return 0;
}
80