Вы находитесь на странице: 1из 35

2017

Autor
Ing. Mximo Obregn Ramos
Profesor UNI

EL ARTE DE
PROGRAMAR
Con el lenguaje de programacin C++
1
GUIA DEL PROGRAMADOR
TIPO DE DATO # bits y rango para 32 bits Para 16 bits
unsigned char 8 (0 ... 255)
char 8 (-128 ... 127)
short int 16 (-32,768 ... 32,767)
unsigned int 32 (0 ... 4,294,967,295) 16
int 32 (-2,147,483,648 ... 2,147,483,647) 16
unsigned long 32 (0 ... 4,294,967,295)
enum 32 (-2,147,483,648 ... 2,147,483,647) 16
long 32 (-2,147,483,648 ... 2,147,483,647)
float 32 (3.4 * 10E-38 ... 1.7* 10E38 (7-digit) precisin))
double 64 (1.7* 10E-308 ... 3.4* 10E308 (15-digit precisin))
long double 80
) (3.4* 10E-4932 ... 1.1* 10E4932 (18-digit precision))

MODIFICADOR DE ESCAPE Descripcin


%c Un nico carcter
%hd Un entero corto
%hu Un entero corto sin signo
%d Un entero con signo, en base decimal
%8d Se reserva 8 digitos y se completa con espacios en blanco
%08d Se reserva 8 digitos y se completa con 0
%ld Un entero largo
%e Un nmero real en coma flotante, con exponente e(10)
%E Un nmero real en coma flotante, con exponente E(10)
%f Para float sin exponente
%.2f Con 2 decimales
%6.2f Con 2 decimales, en 6 caracteres, se completa con espacios,
se incluye el punto, se puede colocar 0 despus de %.
%lf Para doubl sin exponente
%o Un entero en base octal
%p Un puntero o direccin de memoria
%s Una cadena de caracteres
%u Un entero sin signo, en base decimal
%x Un entero en base hexadecimal minuscula
%X Un entero en base hexadecimal en maysculas

CDIGO Valor en decimal Significado


'\n' 10 nueva lnea
'\r' 13 retorno de carro
'\f' 2 nueva pgina (form feed)
'\t' 9 tabulador horizontal
'\b' 8 retroceso (backspace)
'\'' 39 comilla simple
'\"' 4 comillas
'\\ ' 92 barra invertida
'\? ' 63 interrogacin
'\nnn' cualquier carcter (donde nnn es el cdigo ASCII expresado en octal)
'\xnn' cualquier carcter (donde nn es el cdigo ASCII expresado en hexadecimal)

Autor: Ing. Mximo Obregn R. (+51) 951629294 (movistar RPM y WhatsApp)


2
FUNCIONES DE LA LIBRERA math.h
Nombre Descripcin
acos Arcocoseno
asin Arcoseno
atan Arcotangente
atan2 Arcotangente de dos parmetros
ceil Menor entero no menor que el parmetro
cos Coseno
cosh Coseno hiperblico
exp(double x) Funcin exponencial, computa ex
abs Valor absoluto de entero
fabs Valor absoluto de float
floor Mayor entero no mayor que el parmetro
fmod Residuo de la divisin de flotantes
frexp Fracciona y eleva al cuadrado.
ldexp Tamao del exponente de un valor en punto flotante
log Logaritmo natural
log10 Logaritmo en base 10
modf Obtiene un valor en punto flotante ntegro y en partes
pow(x,y) Eleva un valor dado a un exponente, xy
sin Seno
sinh Seno hiperblico
sqrt Raz cuadrada
tan Tangente
tanh Tangente hiperblica
M_PI El numero pi
Nota: Los argumentos de las funciones trigonomtricas estn en radianes.

Frmulas de referencia:

Autor: Ing. Mximo Obregn R. (+51) 951629294 (movistar RPM y WhatsApp)


3

PROGRAMACION EN C++

El lenguaje de programacin a usar ser el C++ y el IDE ser Visual Studio de


Microsoft versin 2010, la cual tiene como logo inicial:

Este software comparado a otras versiones o a otros IDEs, puede variar ligeramente
la sintaxis, es por ello que se debe tener cuidado con la versin y el IDE a usar.

Para iniciar un programa en este IDE en modo consola, se puede hacer de varias
maneras, de las cuales se sugiere la siguiente:
Paso 1: Abrir el software Visual Studio 2010.
Paso 2: Abrir un nuevo proyecto

Solo si en tu PC, no te aparece esta Ruta, es porque alguien lo desconfigur, entonces


tienes 2 caminos:

Autor: Ing. Mximo Obregn R. (+51) 951629294 (movistar RPM y WhatsApp)


4
Camino 1: Reseteas la configuracin con (importar y exportar configuraciones) en
la siguiente ruta:

Camino 2: Te vas a (Pgina principal) con la siguiente ruta y luego seleccionas Nuevo
proyecto:

Autor: Ing. Mximo Obregn R. (+51) 951629294 (movistar RPM y WhatsApp)


5

Paso 3: Luego de cualquiera de las formas del paso 2, debera aparecer esta ventana,
la cual debe ser llenada en el orden indicado. Cuando seleccione examinar, deber
indicar la carpeta donde se alojarn sus programas.

1 2

4
3

Autor: Ing. Mximo Obregn R. (+51) 951629294 (movistar RPM y WhatsApp)


6
Paso 4: Siguiente.

Paso 5: Quitar el check en Encabezado precompilado y dar Finalizar.

Paso 6: Saldr la siguiente ventana, el cdigo que aparece, puede borrarlo


totalmente y empezar a escribir su propio programa.

Autor: Ing. Mximo Obregn R. (+51) 951629294 (movistar RPM y WhatsApp)


7
Paso 7: Cargue este programa, reemplazando lo anterior.

Paso 8: Compile y ejecute, pulsando el botn verde .


Si hubiese algn error al momento de digitar el programa, este no se ejecutar y
deber corregir, hasta que funcione. Si lo has cargado correctamente debera
aparecer la siguiente pantalla.

Llenas los valores indicados, y se debe mostrar los siguientes resultados.

Autor: Ing. Mximo Obregn R. (+51) 951629294 (movistar RPM y WhatsApp)


8
Considerar lo siguiente:
Divisin entera 7/2 => 3
Divisin de coma flotante 7/2.0 => 3.5
Residuo 7%2 => 1
Para enteros usar: int
Para nmeros con decimales usar: float
Las variables flotantes, se muestra por defecto con 4 decimales, si
usted desea otra cantidad, observe el problema 3.

PROBLEMAS DE SOLUCION DIRECTA

Problema 1: Leer 2 nmeros y Problema 2: Calcular el tercer lado de un tringulo a


mostrar la suma partir de sus 2 lados y el ngulo sexagesimal entre ellas.
#include<iostream> //cout,cin #include<iostream>
using namespace std; #include<conio.h>
int main() #define M_PI (atan(1.0)*4)
{int a,b,c; using namespace std;
cout<<"Ingrese a:"; int main()
cin>>a; {float a,b,c,ang;
cout<<"Ingrese b:"; cout<<"Ingrese primer lado:";
cin>>b; cin>>a;
c=a+b; cout<<"Ingrese segundo lado:";
cout<<a<<" mas "; cin>>b;
cout <<b<<" es "<<c<<endl; cout<<"Ingrese ngulo(sexagesimal):";
system("pause"); cin>>ang;
return 0; //c=sqrt(a*a+b*b-2*a*b*cos(ang*M_PI/180));
} c=pow(pow(a,2)+b*b-2*a*b*cos(ang*M_PI/180),0.5);
cout<<"El tercer lado es "<<c<<endl;
getche();
return 0;
}

Autor: Ing. Mximo Obregn R. (+51) 951629294 (movistar RPM y WhatsApp)


9
Problema 3: Muestre el nmero pi con diferentes formatos.
#include<iostream>
#include<conio.h>
#define M_PI (atan(1.0)*4)
using namespace std;
int main()
{cout<<"PI="<<M_PI<<endl; //3.14159
cout.precision(3);
cout<<"PI="<<M_PI<<endl; //3.14

cout.setf(ios::fixed);
cout.precision(3);
cout<<"PI="<<M_PI<<endl; //3.142
cout.precision(20);
cout<<"PI="<<M_PI<<endl;//3.14159265358979310000
cout.width(10); cout.fill('0');
cout<<12<<endl; //0000000012
cout.width(10); cout.fill('0');
cout<<2312<<endl;//0000002312

cout.setf(0,ios::floatfield);
cout.precision(2);
cout<<"PI="<<M_PI*10<<endl;//31

getche();
return 0;
}

EJERCICIOS PROPUESTOS

Problema 1: Leer los tres lados de un tringulo y mostrar los 3 ngulos en sexagesimal.
Problema 2: Leer las coordenadas cartesianas de un punto y mostrar la coordenada polar de
dicho punto, donde el ngulo sea expresada en sexagesimal.
Problema 3: Leer el valor de un monto en soles y calcular cuantas monedas de 5 soles y
cuantas de 1 sol forman dicho monto, considerando la mnima cantidad de 1 sol.
Problema 4: Leer un nmero de 4 cifras e invertir el nmero.
Problema 5: Leer las coordenadas polares de un punto en el plano cartesiano y mostrar la
coordenada cartesiana de dicho punto, considerar los puntos solo en el primer cuadrante.
Problema 6: Leer las coordenadas cartesianas de un punto en el espacio tridimensional y
determinar las coordenadas esfricas y cilndricas del mismo punto.
Problema 7: Leer las coordenadas cartesianas de 3 puntos en el espacio tridimensional para
formar un tringulo y calcular su permetro y rea.

Autor: Ing. Mximo Obregn R. (+51) 951629294 (movistar RPM y WhatsApp)


10
Problema 8: Leer las coordenadas de los centros de 2 circunferencias y el radio de uno de
ellos, luego calcular el radio del segundo, de tal manera que estas sean tangentes, as mismo
calcule tambin el punto de tangencia.
Problema 9: Leer la velocidad inicial y el ngulo inicial de un movimiento parablico y
determinar la altura mxima, la distancia mxima, el tiempo total que se toma en llegar a la
distancia mxima.

Problema 10: Leer la distancia XB, YB, el ngulo grados sexagesimales y determine la
velocidad inicial del objeto, de tal manera que impacte el punto B.

Autor: Ing. Mximo Obregn R. (+51) 951629294 (movistar RPM y WhatsApp)


11
SENTENCIAS SELECTIVAS (If , switch)
Recuerde que:
&& ==>y
|| ==>o
if (3<x<8) //sentencia invalida
if( (3<x)&&(x<8)) // sentencia valida
>,<,>=,<=
diferente !=
iguales ==

Problema 1: Leer 2 nmeros y mostrar el Problema 2: Leer 2 nmeros y mostrar el


mayor. mayor y el menor.
#include<iostream> #include<iostream>
#include<conio.h> #include<conio.h>
using namespace std; using namespace std;
int main() int main()
{int a,b,M; {int a,b,M,m;
//Entrada de datos //Entrada de datos
cout<<"Ingrese a:";cin>>a; cout<<"Ingrese a:"; cin>>a;
cout<<"Ingrese b:";cin>>b; cout<<"Ingrese b:"; cin>>b;
//Encontrando el mayor //Encontrando el mayor y menor
if (a>b) if (a>b)
M=a; {M=a;
else m=b;
M=b; }
//Mostrando el mayor else
cout<<"El mayor es "<<M<<endl; {M=b;
getche(); m=a;
return 0; }
} //Mostrando el mayor
cout<<"El mayor es "<<M<<endl;
cout<<"El menor es "<<m<<endl;
getche();
return 0;
}

Autor: Ing. Mximo Obregn R. (+51) 951629294 (movistar RPM y WhatsApp)


12
Problema 3: Leer los datos de una Problema 4: Leer el valor de 2 dados y
circunferencia (centro y radio), y las mostrar el puntaje obtenido, si la suma es 7
coordenadas cartesianas de un punto o 6 pero alguno de los dados no sea 1
cualquiera del plano, luego indique si el entonces el puntaje es 20 caso contrario el
punto est dentro del crculo o si esta fuera. puntaje ser la mitad de la suma obtenida.
#include<iostream> #include<iostream>
#include<conio.h> #include<conio.h>
using namespace std; using namespace std;
int main() int main()
{float xc,yc,r,x,y,d; {int a,b,s,p;
//Entrada de datos //Entrada de datos
cout<<"Ingrese xc:";cin>>xc; cout<<"Ingrese a:";cin>>a;
cout<<"Ingrese yc:";cin>>yc; cout<<"Ingrese b:";cin>>b;
cout<<"Ingrese r:";cin>>r; s=a+b;
cout<<"Ingrese x:";cin>>x; if (((s==6)||(s==7))&&((a!=1)&&(b!=1)))
cout<<"Ingrese y:";cin>>y; p=20;
//hallando la distancia else
//del centro hasta el punto p=s/2;
d=sqrt(pow(xc-x,2)+pow(yc-y,2)); cout<<"puntaje es "<<p;
//Mostrando la condicin del punto getche();
if (d<=r) return 0;
cout<<"El punto est dentro del circulo"; }
else
cout<<"El punto est fuera del circulo";
getche();
return 0;
}

Autor: Ing. Mximo Obregn R. (+51) 951629294 (movistar RPM y WhatsApp)


13
Problema 5: Leer un nmero entero de hasta 3 cifras, formar otro nmero ordenando sus
cifras de menor a mayor, luego duplicarlo. Si el nmero tiene ms de 3 cifras enviar un
mensaje de error. Por ejemplo, si se lee: 412 entonces la salida ser 248.
#include<iostream> //Ordenando m<i<M
#include<conio.h> m=M=a; //M=a; m=M;
using namespace std; if (M<b) M=b;
int main() if (M<c) M=c;
{int n,a,b,c,m,M,i,N; if (m>b) m=b;
cout<<"Ingrese Numero:"; if (m>c) m=c;
cin>>n; i=a+b+c-M-m;
if (n<=999) //Formando el nuevo numero
{//Partiendo el numero n N=(m*100+i*10+M)*2;
c=n%10; cout<<"El nmero procesado es:" ;
a=n/100; cout<<N<<endl;
b=(n/10)%10; }
else
cout<<"El nmero es mayor a 3 cifras \n";
getche();
return 0;
}

Problema 6: Convertir un nmero arbigo en Problema 7: Convertir un nmero arbigo


letras menor a 5 usando if en letras menor a 5 usando switch
#include<iostream> #include<iostream>
#include<conio.h> #include<conio.h>
using namespace std; using namespace std;
int main() int main()
{int n; {int n;
cout<<"Ingrese Nmero:"; cout<<"Ingrese Nmero:";
cin>>n; cin>>n;
if (n==1) cout<<"UNO"; switch (n)
else if (n==2) cout<<"DOS"; {case 1: cout<<"UNO";break;
else if (n==3) cout<<"TRES"; case 2: cout<<"DOS";break;
else if (n==4) cout<<"CUATRO"; case 3: cout<<"TRES";break;
else if (n==5) cout<<"CINCO"; case 4: cout<<"CUATRO";break;
else cout<<"El nmero es mayor a 5"; case 5: cout<<"CINCO";break;
getche(); default: cout<<"El nmero es mayor a 5";
return 0; }
} getche();
return 0;
}

Autor: Ing. Mximo Obregn R. (+51) 951629294 (movistar RPM y WhatsApp)


14
Problema 8: Convertir un nmero arbigo en romano hasta el nmero 100. Recuerda que
las equivalencias son: I=1 V=5 X=10 L=50 C=100. Por ejemplo: 49 => XLIX
#include<iostream> switch (u)
#include<conio.h> {case 1: cout<<"I";break;
using namespace std; case 2: cout<<"II";break;
int main() case 3: cout<<"III";break;
{int n,d,u; case 4: cout<<"IV";break;
cout<<"Ingrese Numero:"; cin>>n; case 5: cout<<"V";break;
d=n/10; u=n%10; case 6: cout<<"VI";break;
switch (d) case 7: cout<<"VII";break;
{case 1: cout<<"X";break; case 8: cout<<"VIII";break;
case 2: cout<<"XX";break; case 9: cout<<"IX";break;
case 3: cout<<"XXX";break; }
case 4: cout<<"XL";break; getche();
case 5: cout<<"L";break; return 0;
case 6: cout<<"LX";break; }
case 7: cout<<"LXX";break;
case 8: cout<<"LXXX";break;
case 9: cout<<"XC";break;
case 10: cout<<"C";break;
}

Problema 9: Dada una fecha como 3 nmeros (d/m/a), calcular el valor de la fecha
siguiente. Para ello considere que los meses de Ene, Mar, May, Jul, Ago, Oct y Dic tienen 31
das; y el resto, excepto febrero tienen 30 das, para el mes de febrero trae 29 das cuando
el ao es bisiesto y 28 cuando no lo es. Tenga en cuenta que un ao es bisiesto cuando es
divisible por 400 o si es divisible por 4 pero no por 100. Por ejemplo, si la fecha que ingresa
es 31/5/2011 entonces la fecha de salida ser 1/6/2011 y si fuera 31/12/2011 de entrada,
entonces la salida es 1/1/2012. Asuma que la fecha ingresada es vlida.
#include<iostream> else if (d==31)
#include<conio.h> switch (m)
using namespace std; { case 4:
int main() case 6:
{int a,d,m; case 9:
cout<<"Ingrese dia:";cin>>d; case 11: d=1;m++;
cout<<"Ingrese mes:";cin>>m; }
cout<<"Ingrese ao:";cin>>a; else if ((d==30) && (m==2))
d++;//d=d+1; {d=1; m++; }
if (d==32) else if ( (d==29) && (m==2) &&
{d=1; !((a%400==0)||
m++; ((a%4==0)&&
if (m==13) (a%100!=0)
{m=1; )
a++; )
} )

Autor: Ing. Mximo Obregn R. (+51) 951629294 (movistar RPM y WhatsApp)


15
} {d=1;m++; }
cout<<"La fecha del da siguiente es:";
cout<<d<<"/"<<m<<"/"<<a<<endl;
getche();
return 0;
}

PROBLEMA PROPUESTOS
Problema 1: Leer 7 nmeros y encontrar el mayor, desarrolle 3 formas distintas de
codificacin para encontrar la misma respuesta.
Problema 2: Leer un nmero de 4 cifras y mostrar el mayor dgito.
Problema 3: Leer 7 nmeros y encontrar el segundo mayor.
Problema 4: Leer 3 nmeros y ordenarlos de menor a mayor
Problema 5: Leer los 3 lados de un tringulo e indicar si: no existe, es rectangular, es issceles,
es equiltero, es acutngulo, escaleno, etc.
Problema 6: Leer los datos de 2 circunferencias e indicar la posicin relativa entre ellas, y
verificar si: se intersectan, son tangentes internas, son tangentes externas, de tamaos iguales,
la primera circunferencia est dentro de la segunda, etc...
Problema 7: Leer un numero entero de hasta 3 cifras, formar otro nmero ordenando sus
cifras de menor a mayor, luego duplicarlo. Si el nmero tiene ms de 3 cifras enviar un
mensaje de error. Ejemplo si se lee: 412 entonces la salida ser 248
Problema 8: Leer las coordenadas de un punto e indicar en que cuadrante se encuentra o
algn eje y el origen de coordenadas.
Problema 9: Leer las coordenadas de los vrtices de un tringulo y las coordenadas de un
punto cualquiera. Si el tringulo existe, verificar la posicin relativa del punto con respecto al
triangulo, si esta fuera, dentro o en el permetro.
Problema 10: Leer el valor de 2 dados y mostrar el puntaje obtenido, de acuerdo a las
siguientes reglas:
2 parejas de 2 o 3 o 6, ser 1 puntos
nmeros correlativos entre (2,3) o (4,5) o (5,6) tendr 2 puntos
los dos 1 obtendr 3 puntos,
el resto ser 0 puntos
Nota: Deber usar switch.
Ejemplo:
Dado1:5
Dado2:4
Puntaje obtenido: 5 puntos

Autor: Ing. Mximo Obregn R. (+51) 951629294 (movistar RPM y WhatsApp)


16
Problema 11: Leer la coordenadas inicial x,y de un objeto y luego ingresar la distancia y la
direccin dos veces, donde direccin puede ser : 1(Derecha), 2(Izquierda), 3(Arriba), 4(Abajo).
Luego deber imprimir la nueva posicin, en este ejemplo se pide que use switch
obligatoriamente.
Ejemplo:
Ingrese posicin Inicial
x:10
y:5
Ingrese Desplazamiento 1:
Distancia:8
Direccion:2
Ingrese Desplazamiento 2:
Distancia:5
Direccion:3
Posicin final:
(2,10)
Problema 12: Calcular el precio de un automovil, considerando las siguientes tablas:
Tipo de Auto:
1) nuevo
2) usado
Precio en miles de dolares por marca si es nuevo
1)Toyota 27
2)Hyundai 20
3)Chino 14
Descuento por antiguedad si es usado
<5 aos es 15%
[5,10> aos es 30%
>10 aos es 50%
Descuento por color:
1) Negro 10%
2) Rojo 2%
3) Azul 20%
4) Resto, no tiene descuento
Nota: Usar if y switch dentro de otro switch.
Ejemplo1:
Ingrese Tipo de auto: 2
Ingrese marca: 2
Ingrese antiguedad: 15
Ingrese color:1
El precio es 8 mil dolares

Autor: Ing. Mximo Obregn R. (+51) 951629294 (movistar RPM y WhatsApp)


17
Problema 13: El juego de Billar.
Los datos de entrada ser la dimensin del tablero de nfil filas x ncol columnas, la posicin de
la bolilla (fil,col), la direccin de lanzamiento (dv,dh), considerando el sistema de coordenadas
segn la figura.
Direcciones de
X (col) Lanzamientos posibles:
(0,1)
Y
(-1,1)
(fil)
(-1,0)
(-1,-1)
(0,-1)
(-1,1)
(1,0)
(1,1)
El programa deber calcular la nueva posicin de la bolilla cuando esta avance una casilla, si
est en el borde deber considerar el rebote.

Autor: Ing. Mximo Obregn R. (+51) 951629294 (movistar RPM y WhatsApp)


18
SENTENCIAS ITERATIVAS (while, do..while, for)
Problema 1: Ejemplo bsico de iterativas sentencia while mostrar los n primeros nmeros y
sus cuadrados.
#include<iostream.h> while (i<=n)
#include<conio.h> {c=i*i;
int main() cout<<i<<" ==> "<<c<<endl;
{int i,c,n; i++;
cout<<"Ingrese n:";cin>>n; }
i=1; getche();
return 0;
}

Problema 2: Ejemplo bsico de iterativas sentencia while mostrar los n primeros nmeros
impares y sus cubos.
#include<iostream.h> while (con<n)
#include<conio.h> {c=i*i*i;
int main() if (i%2==1)
{int i,c,n,con; {cout<<i<<" ==> "<<c<<endl;
cout<<"Ingrese n:";cin>>n; con++;
i=1; con=0; }
i++;
}
getche();
return 0;
}

Problema 3: Ejemplo semi - bsico de iterativas sentencia while mostrar todos los factores de
un nmero n.
#include<iostream.h> while (i<=n)
#include<conio.h> {if (n%i==0)
int main() {cout<<"Factor "<<c<<"=>"<<i<<endl;
{int i,c,n; c++;
cout<<"Ingrese n:";cin>>n; }
i=1;c=1; i++;
}
getche();
return 0;
}

Autor: Ing. Mximo Obregn R. (+51) 951629294 (movistar RPM y WhatsApp)


19
Problema 4: Ejemplo semi - bsico de iterativas sentencia while mostrar si un numero n es
primo o no.
#include<iostream.h> while (i<n)
#include<conio.h> {if (n%i==0)
int main() esprimo=0;
{int i,c,n,esprimo; i++;
cout<<"Ingrese n:";cin>>n; }
esprimo=1;
i=2; if (esprimo==1)
cout<<"El nmero es primo"<<endl;
else
cout<<"El nmero no es primo"<<endl;
getche();
return 0;
}

Problema 5: Ejemplo semi - bsico de iterativas sentencia for, para mostrar si un numero n es
primo o no.
#include<iostream.h> if (esprimo==1)
#include<conio.h> cout<<"El nmero es primo"<<endl;
int main() else
{int i,c,n,esprimo; cout<<"El nmero no es primo"<<endl;
cout<<"Ingrese n:";cin>>n; getche();
return 0;
esprimo=1; }
for (i=2;i<n;i++)
if (n%i==0)
esprimo=0;

Problema 6: Ejemplo semi-bsico de iterativas sentencia for, para mostrar los n primeros
primos.
#include<iostream.h> //Imprime el nmero si es primo
#include<conio.h> if (esprimo==1)
int main() {cout<<"primo "<<c<<"=>"<<n<<endl;
{int i,c,n,esprimo,can; c++;
cout<<"Ingrese n:";cin>>can; }
for(n=2,c=1;c<=can;n++) }
{ //averigua si n es primo getche();
esprimo=1; return 0;
for (i=2;i<n;i++) }
if (n%i==0)
esprimo=0;

Autor: Ing. Mximo Obregn R. (+51) 951629294 (movistar RPM y WhatsApp)


20
Problema 7: Ejemplo semi - bsico de iterativas sentencia for, mostrar los n primeros trminos
de fibonacci: 0, 1, 1, 2, 3, 5, 8, 13, 21,...
#include<iostream.h> for(a=0,b=1,i=3;i<=n;i++)
#include<conio.h> {c=a+b;
int main() cout<<","<<c;
{int a,b,c,i,n; a=b;
cout<<"Ingrese n:";cin>>n; b=c;
cout<<"0,1"; }
getche();
return 0;
}

PROBLEMA PROPUESTOS
Problema 1: Calcular la suma de n primeros nmeros naturales
Problema 2: Mostrar los primos comprendidos entre a y b.
Problema 3: Calcular la suma de n primeros primos
Problema 4: Calcule el factorial de n
Problema 5: Mostrar la coordenada cartesiana de los vrtices de un polgono regular de n
lados cuyo centro se encuentra en el origen de coordenadas.
Problema 6: Calcule el nmero e= 2.718281828, a partir de la siguiente serie, usando los n
primeros trminos.
1 1 1 1 1 1 1
= + + + + + + +
0! 1! 2! 3! 4! 5! 6!
Problema 7: Calcule el nmero = 3.1415926, a partir de la siguiente serie, usando los n
primeros trminos.
4 4 4 4 4 4
= + + +
1 3 5 7 9 11

Problema 8: Calcule el seno(x) considerando los n primeros trminos de la siguiente expresin:


3 5 7 9 11
() = + + +
3! 5! 7! 9! 11!
Problema 9: Calcule el coseno(x) tomando los n primeros trminos de la siguiente expresin:
2 4 6 8 10
() = 1 + + +
2! 4! 6! 8! 10!
Problema 10: Dentro de las maravillosas expresiones que se pueden construir en las
1
matemticas, se tiene la siguiente frmula de recurrencia: = () = + , que nos permite
2
calcular la 2 usando solamente sumas y divisiones. Lo interesante de esta expresin es que
empieza con un valor de x0 cualquiera, con la cual obtenemos f(x0), la cual viene a ser x1,
luego evalas f(x1) para obtener x2, luego f(x2) para obtener x3 y as sucesivamente.
Por ejemplo:
X0=5 =>f(x0)=2.7 (el valor de x0=5 es un valor cualquiera diferente de 0)
x1=2.7 =>f(x1)=1.72
x2=1.72 =>f(x2)=1.44

Observa que el nmero se va aproximando a 2 = 1.4142

Autor: Ing. Mximo Obregn R. (+51) 951629294 (movistar RPM y WhatsApp)


21
Desarrolle un programa que lea como dato de entrada x0 y n, y muestre la 2 despus de n
iteraciones y compare este resultado con el valor exacto.
Problema 11: Usando el procedimiento anterior, considerando n iteraciones y partiendo de un
x0 cualquiera:
2 1
Calcule 3, sabiendo que la frmula de recurrencia es () = +
3 2

3 1
Calcule 4, sabiendo que la frmula de recurrencia es () = + 3
4

4 1
Calcule 5, sabiendo que la frmula de recurrencia es () = + 4
5
Calcule por deduccin de las frmulas anteriores.

Problema 12: En todos los problemas anteriores que usan una serie o una frmula de
recurrencia, se ha usado como criterio de parada la cantidad de iteraciones. Intente ahora usar
el error aparente como criterio de parada, la cual est definido por:
= | |
Entonces las iteraciones se debe realizar hasta que este error sea menor que un error mximo,
que previamente se ha tenido que leer como dato de entrada.

SOLUCIONARIO:
Problema 1:
#include<iostream.h> for (i=1,s=0;ii<n;i++)
#include<conio.h> s+=i;//s=s+i;
int main() cou<<"La suma es "<<s;
{int i,s; getch();
cout<<"Ingrese n:";cin>>n; }

Problema 4:
#include<iostream.h> for (i=1,f=1;i<=n;i++)
#include<conio.h> f*=i;//f=f*i;
int main() cout<<n<<"!="<<f;
{int i,f,n; getch();
cout<<"Ingrese n:";cin>>n; }

Problema 6:
#include<iostream.h> for (j=0,s=0;j<n;j++)
#include<conio.h> {for (i=1,f=1;i<=j;i++)
int main() f*=i;//f=f*i;
{int i,f,n; s+=1.0/f;//s=s+f;
float s; }
cout<<"Ingrese cantidad de trminos:"; cout<<"e="<<s;
cin>>n; getch();
}

Autor: Ing. Mximo Obregn R. (+51) 951629294 (movistar RPM y WhatsApp)


22
Problema 7:
#include<iostream.h> for (sig=1,i=1,s=0;i<=n;i++,sig=-sig)
#include<conio.h> s+=sig*4/(i*2-1);//s=s+4.0/(i*2-1);
int main()
{int i,j,f,n; cout<<"pi="<<s;
float s,sig; getch();
cout<<"Ingrese cantidad de trminos:"; }
cin>>n;

Problema 10:
#include<iostream.h> for (i=1;i<=n;i++)
#include<conio.h> x=x/2+1/x;
int main() cout<<"raiz de 2="<<x;
{int i,j,f,n; getch();
float x; }
cout<<"Ingrese cantidad de veces a
iterar:";
cin>>n;
cout<<"Ingrese aproximacion inicial:";
cin>>x;

Problema 12:
#include<iostream.h> for(i=1;error>errormax;i++)
#include<math.h> {x=x/2+1/x;
#include<conio.h> error=fabs(x-xa);
#define errormax 0.0001 xa=x;
int main() cout<<"raiz de 2="<<x<<endl;
{int i,n; }
float x,error=1,xa; cout<<"Esta respuesta se obtuvo con ";
cout<<"Ingrese aproximacion inicial:"; cout<<i<<" iteraciones";
cin>>x; getch();
xa=x; }

Autor: Ing. Mximo Obregn R. (+51) 951629294 (movistar RPM y WhatsApp)


23
FUNCIONES
Esta herramienta es fundamental en la programacin para poder realizar la modulacin del
problema a resolver, es decir dividir el gran problema en pequeos problemas.

Ejemplo 1: Calcular la hipotenusa a partir de los 2 los catetos de un tringulo rectangular.


Sin funciones Con funciones
#include<iostream.h> #include<iostream.h>
#include<conio.h> #include<conio.h>
#include<math.h> #include<math.h>
//prototipo de la funcion
//programa principal float calhip(float a,float b);
int main()
{float a,b,h; //programa principal
cout<<"Lado a:";cin>>a; int main()
cout<<"Lado b:";cin>>b; {float a,b,h,c,ang;
h=sqrt(a*a+b*b); cout<<"Lado a:";cin>>a;
cout<<"la hipotenusa es "<<h<<endl; cout<<"Lado b:";cin>>b;
getch(); h=calhip(a,b);
} cout<<"La hipotenusa es "<<h<<endl;
getch();
}

//desarrollo de las funciones


float calhip(float a,float b)
{return sqrt(a*a+b*b);
}

Ejemplo 2: Calcular los ngulos de un tringulo a partir de sus tres lados, usando funciones.
#include<iostream.h> cout<<"El ngulo opuesto a A es "<<angA<<endl;
#include<conio.h> cout<<"El ngulo opuesto a B es "<<angB<<endl;
#include<math.h> cout<<"El ngulo opuesto a C es "<<angC<<endl;
getch();
//prototipo de las funciones }
float calang(float a,float b,float c);
float calsex(float ang); //desarrollo de las funciones
float calang(float a,float b,float c)
//programa principal {return acos((a*a+b*b-c*c)/(2*a*b))*180/M_PI;
int main() }
{float a,b,c,angA,angB,angC; float calsex(float ang)
cout<<"Lado a:";cin>>a; {return ang*180/M_PI
cout<<"Lado b:";cin>>b; }
cout<<"Lado c:";cin>>c;
angC= calsex(calang(a,b,c));
angB= calsex(calang(a,c,b));
angA= calsex(calang(b,c,a));

Autor: Ing. Mximo Obregn R. (+51) 951629294 (movistar RPM y WhatsApp)


24
PROBLEMAS PROPUESTOS
Problema 1: Desarrolle una funcin que devuelva la suma de los n primeros nmeros
naturales.
Problema 2: Desarrolle una funcin que devuelva verdadero si un nmero n es primo y falso si
no lo es.
Problema 3: Desarrolle una funcin que devuelva la cantidad de primos que existen en un
intervalo de a y b.
Problema 4: Desarrolle una funcin que permita calcular el ensimo trmino de la serie de
Fibonacci.
Problema 5: Desarrolle una funcin que invierta un nmero n, por ejemplo si ingresa 357 debe
entregar 753.
Problema 6: Desarrolle una funcin que cuente la cantidad de dgitos que tiene un nmero n.
Problema 7: Desarrolle una funcin que devuelva el mcm de 2 nmeros
Problema 8: Desarrolle una funcin que devuelva el MCD de 2 nmeros
Problema 9: Elaborar un programa que permita calcular el combinatorio de dos nmeros.
Recordar que el combinatorio de 2 nmeros se calcula de la siguiente manera:
n!
C rn
r! ( n r )!
Problema 10: Desarrolle una funcin que devuelva la longitud de curva de la funcin
f(x)=cos(x+sin(x)*x)*x, en el intervalo x=[a,b], para ello deber dividir el intervalo en n tramos,
luego deber tomar cada tramo y aproximar que la curva en cada tramo es una recta. Por lo
tanto los datos de entrada de la funcin seria a,b y n, la funcin debe estar incorporada
dentro de la funcin. Por ejemplo en la figura se divide en 4 partes(n=4), entonces la longitud
de la curva es d1+d2+d3+d4.

d2 d4
d3
d1

a b
Parte 1 Parte 2 Parte 3 Parte 4

Problema 11: Haciendo uso de funciones convenientemente, escriba un programa en C++ que
permita elaborar un juego con dados, que sigue las siguientes reglas:
Se tiene 2 jugadores: Blanco (B) y una Negro (N).
Inicia el juego el blanco, tirando los dados
Por cada lance, el programa debe generar un nmero entre 1 y 6, de manera alterna (B-N-
B-N, etc.): es decir, primero genera un nmero para la ficha blanca y en la siguiente
jugada genera un nmero para la ficha negra.

Autor: Ing. Mximo Obregn R. (+51) 951629294 (movistar RPM y WhatsApp)


25
Si el nmero generado es igual a 6, entonces esa ficha repite otro turno (juega otra vez,
inmediatamente).
Gana la ficha que acumule ms de 100 puntos.
El programa deber mostrar por cada lance:
- El color de la ficha
- El puntaje que saca en el lance
- El puntaje acumulado del jugador
- Un mensaje que indique si hay o no cambio de turno (le toca al otro)
Se mostrarn los resultados finales.
Nota: Utilice las funciones rand() para generar nmeros al azar.

FUNCIONES RECURSIVAS
Si la funcin tiene la forma:
f(xi ) = g(f(xi1 ))
Entonces esta puede ser implementada con una funcin recursiva. Pero estas deben tener
algn criterio de parada.
Ejemplos de casos donde se podra implementar la funcin recursiva:
1. n!=n*(n-1)! 0!=1
2. = + ( 1) 0=0
3. Fibonacci(n)=Fibonacci(n-1)+Fibonacci(n-2) Fibonacci(1)=0,Fibonacci(2)=1
4. Mayor(n, V)= Al mayor entre V[n] y Mayor(n-1,V) Mayor(1,V) = V[1]
5. Tringulo de pascal

Implemente las funcione pascal(f,t) donde f es la fila del tringulo y t es el trmino a extraer
de esa fila. Por ejemplo pascal(5,3) debe devolver 6
6. Calcular la determinante de una matriz de n x n, considere el siguiente ejemplo para el
caso de 3x3.
1,1 1,2 1,3
2,2 2,3 2,1 2,3 2,1 2,2
|2,1 2,2 2,3 | = 1,1 | | -1,2 | |+1,3 | |
3,2 3,3 3,1 3,3 3,1 3,2
3,1 3,2 3,3
7. Calcular la derivada ensima de funcin determinada.
8. Implementar el Juego de Buscaminas en un tablero de mxn, trate usar recursividad.

Autor: Ing. Mximo Obregn R. (+51) 951629294 (movistar RPM y WhatsApp)


26
Ejemplo 1: Clculo del factorial y la sumatoria.
#include<iostream.h> int fib(int n) //recursivo
#include<conio.h> {if (n==1) return 0;
#include<stdlib.h> else if (n==2) return 1;
#include<math.h> else fib(n-1)+fib(n-2);
int facnor(int n); //factorial normal }
int facrec(int n); //factorial recursivo /* otra forma
int sum(int n); //sumatoria recursivo int fib(int n) //recursivo
int fib(int n);//ensimo trm. de fibonacci {if (n<=2) return n-1;
int main() else fib(n-1)+fib(n-2);
{int n=5; }*/
cout<<facnor(n)<<endl;
cout<<facrec(n)<<endl; int facnor(int n)
cout<<sum(n)<<endl; {int f=1,i;
cout<<fib(n)<<endl; for(i=1;i<=n;i++)
system("pause"); f=f*i;
return 0; return f;
} }
int sum(int n) //sumatoria recursivo
{if (n==0) int facrec(int n)
return 0; {if (n==0)
else return 1;
return n+sum(n-1); else
} return n*facrec(n-1);
}

Autor: Ing. Mximo Obregn R. (+51) 951629294 (movistar RPM y WhatsApp)


27
ARREGLOS
Los arreglos son tipos de datos que permiten almacenar varios valores en una sola variable,
estas pueden ser multidimensionales.
Ejemplo de una dimensin:

int x[5]; 7
x[3]=7; 0 1 2 3 4

Ejemplo de dos dimensiones:


int m[3][4]; 0 1 2 3
m[2][1]=5; 0 9
m[1][2]=7; 1 7
m[0][1]=m[2][1]+4; 2 5
Ejemplo 1: Leer y mostrar un vector de una dimensin.
#include<iostream.h> void leer(int *n,int v[])
#include<conio.h> {int i;
#include<stdlib.h> cout<<"Ingrese nmero de elementos:";
#include<math.h> cin>>*n;
#define N 1000 for(i=0;i<*n;i++)
void leer(int *n,int v[]); {cout<<"V["<<i<<"]=";
void generar(int n,int v[]); cin>>v[i];
void mostrar1(int n,int v[]); }
void mostrar2(int n,int v[]); }
void mostrar3(int n,int v[]); void mostrar1(int n,int v[])
int main() {int i;
{ int v[N],n; for(i=0;i<n;i++)
//leer(&n,v); cout<<"V["<<i<<"]="<<v[i]<<endl;
n=300; }
generar(n,v); void mostrar2(int n,int v[])
cout<<"Mostrando los valores\n"; {int i;
mostrar3(n,v); for(i=0;i<n;i++)
system("pause"); cout<<v[i]<<" ";
return 0; cout<<endl;
} }
//desarrollo de las funciones void mostrar3(int n,int v[])
void generar(int n,int v[]) {int i;
{int i; cout<<"(";
for (i=0;i<n;i++) for(i=0;i<n;i++)
v[i]=rand()%20; {cout<<v[i];
} if (i<n-1) cout<<",";
}
cout<<")"<<endl;
}

Autor: Ing. Mximo Obregn R. (+51) 951629294 (movistar RPM y WhatsApp)


28
Ejemplo 2: Hallar el mayor y menor valor de un arreglo aleatorio, usar recursividad para el
mayor.
#include<iostream.h> int mayorec(int n,int v[])
#include<conio.h> {if (n==1) return v[0];
#include<stdlib.h> else
#include<time.h> if (v[n-1]>mayorec(n-1,v))
#define N 1000 return v[n-1];
void generar(int n,int v[]); else
void mostrar(int n,int v[]); return mayorec(n-1,v);
int mayor(int n,int v[]); }
int mayorec(int n,int v[]); int menor(int n,int v[])
int menor(int n,int v[]); {int m=v[0],i;
//programa principal for(i=1;i<n;i++)
int main() if (m>v[i]) m=v[i];
{ int v[N],n; return m;
srand(time(NULL)); }
n=6;
generar(n,v); void generar(int n,int v[])
cout<<"Mostrando los valores\n"; {int i;
mostrar(n,v); for (i=0;i<n;i++)
cout<<"El mayor es "<<mayorec(n,v)<<endl; v[i]=rand()%101;
cout<<"El menor es "<<menor(n,v)<<endl; }
system("pause"); void mostrar(int n,int v[])
return 0; {int i;
} cout<<"(";
//desarrollo de las funciones for(i=0;i<n;i++)
int mayor(int n,int v[]) {cout<<v[i];
{int m=v[0],i; if (i<n-1) cout<<",";
for(i=1;i<n;i++) }
if (m<v[i]) m=v[i]; cout<<")"<<endl;
return m; }
}

Problemas:
1) Lea los datos de un polinomio, en un arreglo de una dimensin, luego muestre el
producto entre la derivada e integral de dicho polinomio
2) Lea 2 polinomios y muestre el producto entre ellas.
3) Considerando que un nmero gigante de 200 cifras se almacena en un vector (arreglo de
una dimensin), donde cada digito es almacenado en cada elemento del vector, entonces
desarrolle un programa que lea 2 nmeros grandes y calcule la suma, la resta, el producto
y el factorial.

Autor: Ing. Mximo Obregn R. (+51) 951629294 (movistar RPM y WhatsApp)


29
PROGRAMACION ORIENTADA A OBJETOS
En la POO, primero se identifica a los objetos que participan en el problema a resolver, luego
se definen las clases que determina sus caractersticas y su funcionalidad.
Una clase es la definicin de un grupo de objetos que tienen caractersticas similares, por
ejemplo la clase persona, mamferos, tornillo, auto, punto, vector2d, etc.
Un objeto es una entidad en particular que pertenece a una clase, como por ejemplo: el objeto
Marcos que pertenece a la clase persona.

Ejemplo definamos:
La clase vector:
class vector2d{
//datos miembro
private:
int x,y;
//funciones miembro(mtodos)
public:
void leer();
void mostrar();
void setear(int vx,int vy);
float modulo();
};

La clase persona:
class persona{
private:
char nombre[100];
char apellido[200];
int edad;
float peso;
public:
void correr();
void estudiar();
};
La clase matriz
class matriz{
private:
int nfil,ncol;
float m[50][50];
public:
void leer();
void mostrar();
float determinante();
matriz inversa();
matriz traspuesta();
};

Autor: Ing. Mximo Obregn R. (+51) 951629294 (movistar RPM y WhatsApp)


30
Ejemplo 1: Implemente la clase vector2d y use los componentes.
#include<iostream.h> //programa principal
#include<conio.h> int main(){
#include<stdlib.h> vector2d v1,v2,v3;
#include<math.h> v1.setear(3,4);
//definicin de la clase v2.leer();
class vector2d{ cout<<"El modulo del primer vector es "
//datos miembro <<v1.modulo()<<endl;
private: cout<<"El modulo del segundo vector es "
int x,y; <<v2.modulo()<<endl;
//funciones miembro(mtodos) v1.mostrar();
public: v2.mostrar();
void leer(); system("pause");
void setear(float vx,float vy); return 0;
void mostrar(); }
float modulo(); //desarrollo de las funciones miembros de la clase
}; void vector2d::leer(){
cout<<"Ingrese x:";cin>>x;
cout<<"Ingrese y:";cin>>y;
}
void vector2d::setear(float vx,float vy){
x=vx; y=vy;
}
void vector2d::mostrar(){
cout<<"("<<x<<","<<y<<")"<<endl;
}
float vector2d::modulo(){
return pow(x*x+y*y,0.5);
}

Autor: Ing. Mximo Obregn R. (+51) 951629294 (movistar RPM y WhatsApp)


31
Ejemplo 2: Implemente el juego del buscaminas usando POO
#include<iostream.h> void minas::mostrar(){
#include<conio.h> int i,j;char let='V',letbom=2;
#include<stdlib.h> for(i=0;i<f;i++)
#include<math.h> {for(j=0;j<c;j++)
#include<time.h> if (tab[i][j]==-5)
#define F 100 cout<<letbom;
#define C 100 else if (tab[i][j]==0)
class minas{ cout<<let;
private: else
int f,c; cout<<tab[i][j];
int tab[F][C]; cout<<endl;
public: }
void generar(int nf,int nc, int nb); }
void contar();
void mostrar(); void minas::contar(){
}; int i,j,conb,ii,jj;
for(i=0;i<f;i++)
int main() for(j=0;j<c;j++)
{srand(time(NULL)); if (tab[i][j]!=-5)
minas m; { conb=0;
m.generar(24,79,100); for(ii=i-1;ii<=i+1;ii++)
m.contar(); for(jj=j-1;jj<=j+1;jj++)
m.mostrar(); if (
getche(); !((ii==i)&&(jj==j))
return 0; && (ii>=0) && (jj>=0)
} && (ii<f) && (jj<c)
)
void minas::generar(int nf,int nc, int nb) if (tab[ii][jj]==-5)
{int i,j,conb,posf,posc; conb++;
f=nf; c=nc; tab[i][j]=conb;
for(i=0;i<f;i++) //rellenando de 0 el tablero }
for(j=0;j<c;j++) }
tab[i][j]=0;
conb=0;
//la bomba se registra con el valor de -5
while (conb<nb)
{posf=rand()%f; posc=rand()%c;
if (tab[posf][posc]==0)
{tab[posf][posc]=-5;
conb++;
}
}
}

Autor: Ing. Mximo Obregn R. (+51) 951629294 (movistar RPM y WhatsApp)


32
Ejemplo 3: Clase punto,vector y recta
#include<iostream.h>
#include<conio.h>
#include<math.h>
//DEFINICION DE LA CLASE
class Cpunto3d
{ protected:
float x,y,z;
public:
Cpunto3d();
Cpunto3d(float,float,float);
leer();
ver();
setear(float,float,float);
};

class Cvector3d: public Cpunto3d


{public:
Cvector3d unitario();
float modulo();
Cvector3d();
Cvector3d(float,float,float);
Cvector3d operator+(Cvector3d a);
Cvector3d operator-(Cvector3d a);
Cvector3d operator*(float k);
Cvector3d operator*(Cvector3d a);
float operator^(Cvector3d a);
operator++();
operator+=(float k);
};

class Crecta3d
{protected:
Cpunto3d P;
Cvector3d Q;
public:
void leer();
void ver();
void setear(Cpunto3d vP,Cvector3d vQ);
};

//PROGRAMA PRINCIPAL aplicacion de las clases


//Calcular N, que es la nueva posicin de M cuando rota sobre la recta
//En el sentido de la mano derecha siguiendo al vector Q de la recta
//R: R=P+kQ un determinado ngulo a(en sexagesimal)

Autor: Ing. Mximo Obregn R. (+51) 951629294 (movistar RPM y WhatsApp)


33
void main()
{clrscr();
float a;
Cvector3d P,Q,M,N,B,ux,uy;
cout<<"Ingresar el angulo a rotar en sexagesimal:";cin>>a;
a=a*M_PI/180;
cout<<"Ingrese punto fijo P de la recta:\n"; P.leer();
cout<<"Ingrese vector Q de la recta:\n"; Q.leer();
cout<<"Ingrese punto M a rotar alrededor de la recta:\n"; M.leer();
B=P+Q.unitario()*(((M-P)^Q)/Q.modulo());
ux=(M-B).unitario();
uy=Q.unitario()*ux;
N=B+ux*((M-B).modulo()*cos(a))+uy*((M-B).modulo()*sin(a));
cout<<"La nueva posicion es:"; N.ver();
getch();
}
//DESARROLLO DE LOS MIEMBROS DE LA CLASE
//CLASE CPUNTO3D
Cpunto3d::Cpunto3d()
{setear(0,0,0);}
Cpunto3d::Cpunto3d(float vx,float vy,float vz)
{setear(vx,vy,vz);}
Cpunto3d::leer()
{cout<<"X= ";cin>>x;
cout<<"Y= ";cin>>y;
cout<<"Z= ";cin>>z;
}
Cpunto3d::ver()
{cout<<"("<<x<<","<<y<<","<<z<<")"<<endl;
}
Cpunto3d::setear(float vx,float vy,float vz)
{x=vx;
y=vy;
z=vz;
}
//CLASE CVECTOR3D
Cvector3d::Cvector3d()
{Cpunto3d(0,0,0);}
Cvector3d::Cvector3d(float vx,float vy,float vz):Cpunto3d(vx,vy,vz)
{}
float Cvector3d::modulo()
{return sqrt(x*x+y*y+z*z);
}

Autor: Ing. Mximo Obregn R. (+51) 951629294 (movistar RPM y WhatsApp)


34
Cvector3d Cvector3d::unitario()
{Cvector3d temp;
temp.x=x/modulo();
temp.y=y/modulo();
temp.z=z/modulo();
return temp;
}
Cvector3d Cvector3d::operator+(Cvector3d a)
{Cvector3d temp;
temp.x=x+a.x;
temp.y=y+a.y;
temp.z=z+a.z;
return temp;
}
Cvector3d Cvector3d::operator-(Cvector3d a)
{Cvector3d temp;
temp.x=x-a.x;
temp.y=y-a.y;
temp.z=z-a.z;
return temp;
}
Cvector3d Cvector3d::operator*(Cvector3d a)
{Cvector3d temp;
temp.x=y*a.z-a.y*z;
temp.y=z*a.x-a.z*x;
temp.z=x*a.y-a.x*y;
return temp;
}
float Cvector3d::operator^(Cvector3d a)
{return (x*a.x+y*a.y+z*a.z);
}

Cvector3d Cvector3d::operator*(float k)
{Cvector3d temp;
temp.x=x*k;
temp.y=y*k;
temp.z=z*k;
return temp;
}
Cvector3d::operator++()
{x++;y++;z++;}
Cvector3d::operator+=(float k)
{x+=k;y+=k;z+=k;}

Autor: Ing. Mximo Obregn R. (+51) 951629294 (movistar RPM y WhatsApp)

Вам также может понравиться