Mostrando entradas con la etiqueta cpp. Mostrar todas las entradas
Mostrando entradas con la etiqueta cpp. Mostrar todas las entradas

domingo, 31 de agosto de 2014

Matriz de la relación predecesor inmediato en c++. – Email – Lawyers – Law Firm – Registros


matriz de la relacion predecesor inmediato

Cuando aprendemos sobre reticulados nos enseñan un algoritmo para conseguir lamatriz de la relación de predecesores inmediatos de un CPO (Conjunto Parcialmente Ordenado) a partir de la matriz de la relación de orden [A,] donde A tiene n elementos.

El algoritmo sería el siguiente:

-Se calcula la matriz de la relación de orden M.

-Determinamos la matriz M = M- In . M es igual a la matriz de relación de orden menos la matriz identidad.

-Calculamos M^2 (M al cuadrado = MxM) haciendo una multiplicación binaria. Es decir, la matriz resultante solo contendrá unos y ceros como entradas.

-Hallamos M = M - M^2 (matriz de la relación predecesor inmediato). La matriz de la relación predecesor inmediato es igual a la matriz M menos la matriz M^2.

Ejercicio de ejemplo:

Dado el CPO [A, /] en dondeA = {200,60,30,10,5,1} y"/" es la relación binaria dedivisibilidad enA, (a/b si y sólo si "a" divide a "b") entonces: Hallar lamatriz de predecesores inmediatos.

Siguiendo el algoritmo calculamos la matriz M:
M=


1 divide a todo número real, por ello todas las entradas de esta fila de la matriz son 1.
5 divide a 5, 10, 30,60,200.
10 divide a 10,30,60,200.
30 divide a 30 y 60.
60 divide a 60.
200 divide a 200.

Siguiente paso, calculamos la matriz M que esta dada por M = M- In.

M=


In =


M = M- In

M =



Luego, calculamos M^2:

M^2 = M x M

X

M^2 =



Finalmente, hallamos la matriz de la relación predecesor inmediato.

M = M - M^2

M =





Una buena opción es desarrollar este algoritmo en algún lenguaje de programación que conozcamos, con el fin de aprender un poco más y a su vez comprobar los ejercicios que realizamos en nuestras horas de estudio. Este algoritmo lo podemos desarrollar enc++ de la siguiente forma:

#include iostream

using namespace std;

int main(){
int filas, colum;
cout "Ingrese la cantidad de filas de la matriz de la relación de orden: " endl;
cin filas;
cout "Ingrese la cantidad de columnas de la matriz de la relación de orden: " endl;
cin colum;
int matrizRO[filas][colum]; //matriz de relación de orden
int matrizRO2[filas][colum];
int matrizm2[filas][colum];
int matrizPI[filas][colum];
// Ingresamos las entradas de la matriz de relación de orden
cout "Ingrese las entradas de la matriz de la relación de orden" endl;
for(int i = 0; i filas; i++){
for(int j = 0; j colum; j++){
cout "Ingrese la entrada a" i j endl;
cin matrizRO[i][j];
}
}
// Restamos la matriz identidad a nuestra matriz
for(int diagonal = 0; diagonal colum; diagonal++)
{
matrizRO[diagonal][diagonal] = 0;
}

//Imprimimos el valor de M

cout "Matriz M: " endl;
for(int i = 0; i filas; i++){
for(int j = 0; j colum; j++){
cout matrizRO[i][j] " ";
}
cout endl;
}

//segunda matriz

for(int i = 0; i filas; i++){
for(int j = 0; j colum; j++){
matrizRO2[i][j] = matrizRO[i][j];
}
}

//

//Calculamos M^2 (Binarizada)
for(int i=0;ifilas;i++){
for(int j=0;jcolum;j++){
matrizm2[i][j]=0;
for(int k=0;kcolum;k++){
if(matrizRO[i][k] == 1 and matrizRO2[k][j] == 1)
matrizm2[i][j] = 1;
}
}
}
// Imprimimos M^2
cout "Matriz M^2: " endl;
for(int i = 0; i filas; i++){
for(int j = 0; j colum; j++){
cout matrizm2[i][j] " ";
}
cout endl;
}

//Calculamos la matriz de la relación predecesor inmediato

for(int i = 0; i filas; i++){
for(int j = 0; j colum; j++){
matrizPI[i][j] = matrizRO[i][j] - matrizm2[i][j];
}
}

//Imprimimos la matriz de la relación predecesor inmediato

cout "Matriz de la relación predecesor inmediato: " endl;
for(int i = 0; i filas; i++){
for(int j = 0; j colum; j++){
cout matrizPI[i][j] " ";
}
cout endl;
}

return 0;
}

int matrizRO[filas][colum]; //matriz de relación de orden
int matrizRO2[filas][colum];
int matrizm2[filas][colum];
int matrizPI[filas][colum];

La matrizRO representa la matriz de relación de orden, la matrizRO2 contiene las mismas entradas que la anterior, esta se usará solo para realizar la multiplicación para obtener M^2.
La matrizm2 representa la matriz M^2.
La matrizPI representa la matriz de la relación de predecesores inmediatos.

int filas, colum;
cout "Ingrese la cantidad de filas de la matriz de la relación de orden: " endl;
cin filas;
cout "Ingrese la cantidad de columnas de la matriz de la relación de orden: " endl;
cin colum;

Inicialmente ingresamos la cantidad de filas y columnas que tiene nuestra matriz. Dicha matriz es una matriz cuadrada de orden nxn.

// Restamos la matriz identidad a nuestra matriz
for(int diagonal = 0; diagonal colum; diagonal++)
{
matrizRO[diagonal][diagonal] = 0;
}

Para encontrar el valor de M solo debemos anular la diagonal principal de nuestra matriz.

//Calculamos M^2 (Binarizada)
for(int i=0;ifilas;i++){
for(int j=0;jcolum;j++){
matrizm2[i][j]=0;
for(int k=0;kcolum;k++){
if(matrizRO[i][k] == 1 and matrizRO2[k][j] == 1)
matrizm2[i][j] = 1;
}
}
}

Calculamos M^2 con el anterior algoritmo, tomar en cuenta que como es una matriz binarizada solo tendrá ceros y unos. Al conseguir una coincidencia de dos 1 almacenamos 1 en la matriz M^2.

//Calculamos la matriz de la relación predecesor inmediato

for(int i = 0; i filas; i++){
for(int j = 0; j colum; j++){
matrizPI[i][j] = matrizRO[i][j] - matrizm2[i][j];
}
}

Calculamos la matriz de la relación de predecesor inmediato con la diferencia entre la matriz M y M^2.

Resolviendo el ejercicio anterior con nuestro programa de consola hecho en c++, ésta sería su ejecución:

Ingrese la cantidad de filas de la matriz de la relación de orden:
6
Ingrese la cantidad de columnas de la matriz de la relación de orden:
6
Ingrese las entradas de la matriz de la relación de orden
Ingrese la entrada a00
1
Ingrese la entrada a01
1
Ingrese la entrada a02
1
Ingrese la entrada a03
1
Ingrese la entrada a04
1
Ingrese la entrada a05
1
Ingrese la entrada a10
0
Ingrese la entrada a11
1
Ingrese la entrada a12
1
Ingrese la entrada a13
1
Ingrese la entrada a14
1
Ingrese la entrada a15
1
Ingrese la entrada a20
0
Ingrese la entrada a21
0
Ingrese la entrada a22
1
Ingrese la entrada a23
1
Ingrese la entrada a24
1
Ingrese la entrada a25
1
Ingrese la entrada a30
0
Ingrese la entrada a31
0
Ingrese la entrada a32
0
Ingrese la entrada a33
1
Ingrese la entrada a34
1
Ingrese la entrada a35
0
Ingrese la entrada a40
0
Ingrese la entrada a41
0
Ingrese la entrada a42
0
Ingrese la entrada a43
0
Ingrese la entrada a44
1
Ingrese la entrada a45
0
Ingrese la entrada a50
0
Ingrese la entrada a51
0
Ingrese la entrada a52
0
Ingrese la entrada a53
0
Ingrese la entrada a54
0
Ingrese la entrada a55
1
Matriz M:
0 1 1 1 1 1
0 0 1 1 1 1
0 0 0 1 1 1
0 0 0 0 1 0
0 0 0 0 0 0
0 0 0 0 0 0
Matriz M^2:
0 0 1 1 1 1
0 0 0 1 1 1
0 0 0 0 1 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
Matriz de la relación predecesor inmediato:
0 1 0 0 0 0
0 0 1 0 0 0
0 0 0 1 0 1
0 0 0 0 1 0
0 0 0 0 0 0
0 0 0 0 0 0

Optimizando el algoritmo en c++:

El código fuente del algoritmo hecho en c++ está escrito con el mayor detalle posible con el fin de que pueda ser entendido fácilmente. Sin embargo, este puede ser optimizado evitando la creación de algunas matrices no tan necesarias y algunos ciclos repetitivos for. Esto con el fin de minimizar el tiempo de ejecución y reducir el espacio utilizado en la memoria.

#include iostream

using namespace std;

int main(){
int n;
char respuesta;
do{
cout "Ingrese el valor de n para su matriz de orden nxn " endl;
cin n;
int matrizR[n][n]; //matriz de relación de orden y luego de la relación predecesor inmediato.
int matrizm2[n][n];
// Ingresamos las entradas de la matriz de relación de orden
cout "Ingrese las entradas de la matriz de la relación de orden" endl;
for(int i = 0; i n; i++){
for(int j = 0; j n; j++){
cout "Ingrese la entrada a" i j endl;
cin matrizR[i][j];
//Anulando diagonal principal al momento de ingresar la matriz
if(i == j)
matrizR[i][j] = 0;
}
}

//Calculamos M^2 (Binarizada)
for(int i=0;in;i++){
for(int j=0;jn;j++){
matrizm2[i][j]=0;
for(int k=0;kn;k++){
if(matrizR[i][k] == 1 and matrizR[k][j] == 1){
matrizm2[i][j] = 1;
            break;
            }
}
}
}

//Calculamos la matriz de la relación predecesor inmediato y la imprimimos al mismo tiempo
cout "Matriz de la relación predecesor inmediato:" endl;
for(int i = 0; i n; i++){
for(int j = 0; j n; j++){
matrizR[i][j] = matrizR[i][j] - matrizm2[i][j];
cout matrizR[i][j] " ";
}
cout endl;
}
cout "Desea obtener una nueva matriz de la relación predecesor inmediato a partir de otra matriz de relación de orden? si = s no = n" endl;
cin respuesta;
}while(respuesta == 's');
return 0;
}

Inicialmente ingresamos el valor de n, la matriz de la relación de orden es una matriz cuadrada de orden nxn.

Mientras ingresamos las entradas o componentes de la matriz podemos ir anulando automática la diagonal principal, esto lo hacemos cuando los índices i y j son iguales.

if(i == j)
matrizR[i][j] = 0;

Para obtener la matriz M^2 solo necesitaremos conseguir un 1, recordemos que esta matriz debe estar binarizada. Por ello le agregamos el break al ciclo de manera que cuando encuentre un 1 salga del ciclo y no ejecute instrucciones innecesarias.

if(matrizR[i][k] == 1 and matrizR[k][j] == 1){
matrizm2[i][j] = 1;
break;
}

Al momento de obtener la matriz de la relación predecesor inmediato podemos guardar el resultado en la misma matriz inicial, además podemos ir imprimiendo los resultados en paralelo se van obteniendo.

for(int i = 0; i n; i++){
for(int j = 0; j n; j++){
matrizR[i][j] = matrizR[i][j] - matrizm2[i][j];
cout matrizR[i][j] " ";
}
cout endl;
}

Descarga del código fuente del proyecto:
http://www.mediafire.com/download/urr...


También te podría interesar:
4 Ejercicios Básicos de Programación Orientada a Objetos en c++
De sistema decimal a sistema binario en c++ y Java
3 libros sobre programacion orientada a objetos
[Ejercicio resuelto c++ POO Herencia Vectores MVC] Una Asociación de Lancheros trasladan turistas

Matriz de accesibilidad de un Digrafo en c++ – Virginia – Platform – cancer


digrafos en c++

ParaDigrafos existe un procedimiento para encontrar lamatriz de accesibilidad, podemos determinar la matriz de accesibilidad a través de una serie de pasos. La matriz de accesibilidad nos brinda información sobre si el digrafo es F.C (fuertemente conexo) o no, es decir si para cada par de vértices u,v:u es accesible desdev yv es accesible desdeu.
Al observar la matriz sí notamos que hay al menos un elemento igual a cero diremos que el digrafo no es F.C conexo. De lo contrario, si es F.C.

La matriz de accesibilidad de un Digrafo es:

Acc(D) = bin[In+ M+ M^2+ M^3+ ...+ M^n-1]

M es la matriz de conexión del digrafo, determinaremos M^2, M^3 hasta M^n-1donde n es el número de vértices del digrafo.

Luego de determinar las matrices antes mencionadas las sumaremos junto a la matriz identidad y ese resultado procederemos a binarizarlo (Los elementos mayores que 1 los haremos igual a 1, los elementos que sean igual a 0 seguirán siendo igual a 0).

Ejercicio de ejemplo:

Dada la matriz de conexión del siguiente digrafo, determinar su matriz de accesibilidad.

matriz de Digrafo

M=

matriz de Digrafo

M^2 = MxM

matriz de Digrafo

M^3 = M^2 * M

matriz de Digrafo

M^4 = M^3 * M

matriz de Digrafo

I5 =

matriz identidad

Acc(D) = bin[In+ M+ M^2+ M^3+ ...+ M^n-1]

Acc(D) =

matriz de accesibilidad de un digrafo

De esta manera podemos obtener la matriz de accesibilidad del digrafo. Este digrafo no es fuertemente conexo, debido a que su matriz de accesibilidad posee componentes nulas.

EnC++ Estos pasos para determinar sí el digrafo es F.C o no, los podemos realizar de la siguiente manera:

#include iostream

using namespace std;

int main(){
int vertices;
cout "Ingrese la cantidad de vertices del digrafo:" endl;
cin vertices;
int matrizC[vertices][vertices];
int matrizaux[vertices][vertices];
int matrizM[vertices][vertices];
int matrizAcc[vertices][vertices];
//Cargamos la matriz de conexion
cout "Ingrese los elementos de la matriz de conexion: " endl;
for(int i = 0; i vertices; i++){
for(int j = 0; j vertices; j++){
cout "Ingrese la entrada a" i j endl;
cin matrizC[i][j];
}
}

for(int i = 0; i vertices; i++){
for(int j = 0; j vertices; j++){
matrizaux[i][j] = matrizC[i][j];
matrizAcc[i][j] = matrizC[i][j];
}
}
//ciclo
int cont = vertices-2;
while(cont){
// Producto para M...
for(int i=0;ivertices;i++){
for(int j=0;jvertices;j++){
matrizM[i][j]=0;
for(int k=0;kvertices;k++){
matrizM[i][j]=matrizM[i][j]+(matrizC[i][k]*matrizaux[k][j]);
}
}
}
//Sumamos para la matriz de accesibilidad
for(int i = 0; i vertices; i++){
for(int j = 0; j vertices; j++){
matrizAcc[i][j] += matrizM[i][j];
matrizaux[i][j] = matrizM[i][j];
}
}
cont--;
}//Fin del ciclo

//Sumar matriz de indentidad y binarizar
for(int i = 0; i vertices; i++){
for(int j = 0; j vertices; j++){
if(i == j)
matrizAcc[i][j] = 1;
if(matrizAcc[i][j] 1)
matrizAcc[i][j] = 1;
}
}

//Imprimimos la matriz de accesibilidad
cout "Matriz de accesibilidad:" endl;
for(int i = 0; i vertices; i++){
for(int j = 0; j vertices; j++){
cout matrizAcc[i][j] " ";
}
cout endl;
}


return 0;
}

Inicialmente ingresamos el numero de vértices del digrafo, las matrices con las que vamos a trabajar son de orden nxn donde n es el numero de vértices del digrafo.
El ciclo while se repetirá mientras la variable cont sea distinta de 0 (n - 2 veces debido a que M^2 se calcula fuera del ciclo while), esta variable irá decreciendo de uno en uno en cada repetición del ciclo.
Mientras vamos realizando la multiplicación de las matrices vamos sumando los resultados en la matriz de accesibilidad.
Al final, luego de salir del ciclo sumamos la matriz identidad y binarizamos la matriz de accesibilidad.

Ejecución:

Ingrese la cantidad de vertices del digrafo:
5
Ingrese los elementos de la matriz de conexion:
Ingrese la entrada a00
0
Ingrese la entrada a01
1
Ingrese la entrada a02
0
Ingrese la entrada a03
0
Ingrese la entrada a04
0
Ingrese la entrada a10
1
Ingrese la entrada a11
0
Ingrese la entrada a12
1
Ingrese la entrada a13
0
Ingrese la entrada a14
1
Ingrese la entrada a20
0
Ingrese la entrada a21
0
Ingrese la entrada a22
0
Ingrese la entrada a23
0
Ingrese la entrada a24
0
Ingrese la entrada a30
0
Ingrese la entrada a31
1
Ingrese la entrada a32
0
Ingrese la entrada a33
0
Ingrese la entrada a34
0
Ingrese la entrada a40
0
Ingrese la entrada a41
1
Ingrese la entrada a42
1
Ingrese la entrada a43
1
Ingrese la entrada a44
0
Matriz de accesibilidad:
1 1 1 1 1
1 1 1 1 1
0 0 1 0 0
1 1 1 1 1
1 1 1 1 1

Descarga del proyecto en C++:
https://mega.co.nz/#!ZBETVRqK!eVh_8o...


También te podría interesar:
Algoritmo para calcular la matriz de la relación predecesor inmediato a partir de la matriz de la relación de orden en c++.
4 Ejercicios Básicos de Programación Orientada a Objetos en c++
eBook - Como programar en c++ Deitel
De sistema decimal a sistema binario en c++ y Java
3 libros sobre programacion orientada a objetos


Elevar un número a una potencia en C++ – coche – Domains – Donate



Para elevar un número a unapotencian enC++ usaremos el métodopow de la libreríamath.h

pow(a, b) donde a es la base y b el exponente. Es decir, sí tenemospow(2, 3) el resultado sería 8 dado que 2^3 = 8 o lo que sería lo mismo 2*2*2.

Ejemplo Potencia:
#include iostream
#include math.h

using namespace std;

int main(){
int n, base;
cout "Ingrese la base: " endl;
cin base;
cout "Ingrese el exponente" endl;
cin n;
int resultado = pow(base,n);
cout base " elevado a la " n " es igual a " resultado endl;
return 0;
}

Declaramos 2 variables de tipo entero llamadas base y n. Pedimos al usuario que ingrese la base y el exponente y los almacenamos en las respectivas variables, luego realizamos la operación y finalmente imprimimos el resultado.

Lo que veríamos en la consola sería algo parecido a lo siguiente:
Ingrese la base:
2
Ingrese el exponente
3
2 elevado a la 3 es igual a 8

También te podría interesar:
Elevar un número a una potencia en java Math.pow
Procedimiento para encontrar la matriz de accesibilidad de un Digrafo en c++
4 Ejercicios Básicos de Programación Orientada a Objetos en c++
De sistema decimal a sistema binario en c++ y Java
Cuenta regresiva de minutos y segundos con c++


domingo, 3 de agosto de 2014

4 Ejercicios Básicos de Programación Orientada a Objetos en c++ – Virtual – Abogado



Sí te estas iniciando en la programación y enc++ utilizandoprogramación orientada a objetos seguro estos4 ejercicios te servirán. En la entrada he colocado el planteamiento de cada ejercicio junto al diagrama de clases de cada uno de ellos. Sí deseas realizar el ejercicio tu mismo, puedes hacerlo, a su vez puedes descargar la carpeta de cada uno de los proyectos y observar el código fuente para resolver tus dudas.

Ejercicio Número 1


Planteamiento:
Se conoce de unartículo su costo base y se sabe que se ofrecen 2 precios de venta: aldetal (30% de incremento del costo base) y almayor (15% de incremento del costo base). Se desea conocer los distintos PVP del artículo, al detal y al mayor.

Diagrama de clases:


Descarga código fuente del proyecto:
https://mega.co.nz/#!hQtkgT4D...

Ejercicio Número 2


Planteamiento:
Se conoce de unalumno:cédula,nombre y tres notas parciales (nota1, nota2, nota3). El programa debe imprimir: cédula, nombre, nota final e indique con un mensaje si el alumno aprobó (nota final = 48) o no aprobó (nota final 48) la asignatura.

Diagrama de clases:


Descarga código fuente del proyecto:
https://mega.co.nz/#!YIEVyASC...

Ejercicio Número 3


Planteamiento:
Dado laaltura y labase de unrectángulo, calcule su área (base * altura) y perímetro (2*base + 2*altura).

Diagrama de clases:


Descarga código fuente del proyecto:
https://mega.co.nz/#!tYVywYQS...

Ejercicio Número 4


Planteamiento:
Se conoce de unapersona elnombre, eldía,mes yaño de nacimiento, escriba un programa que lea la fecha de hoy, comodía,mes yaño e imprima el nombre de la persona y su edad.

Diagrama de clases:


Descarga código fuente del proyecto:

También te podría interesar:
  1. De sistema decimal a sistema binario en c++ y Java
  2. 3 libros sobre programacion orientada a objetos
  3. [Ejercicio resuelto c++ POO Herencia Vectores MVC] Una Asociación de Lancheros trasladan turistas
  4. [Ejercicio resuelto c++ POO Herencia MVC] Línea de autobuses “El Cardenalito”
  5. Cuenta regresiva de minutos y segundos con c++
  6. Escribir en bloc de notas con c++ [Archivo/Ficheros c++]
  7. Abrir una direccion web con c++



domingo, 20 de julio de 2014

eBook - Como programar en c++ Deitel – Motor – Motor – Forex


libro como programar en c++ deitel

“El principal mérito del lenguaje es la claridad…”
—Galen
¡Bienvenido aC++ y Cómo programar en C++, sexta edición! En Deitel & Associates escribimos libros de texto sobre lenguajes de programación y libros de nivel profesional para Prentice Hall, impartimos capacitación a empresas en todo el mundo y desarrollamos negocios en Internet con Web 2.0. Este libro refleja los cambios importantes en el lenguaje C++ y en las formas preferidas de impartir y aprender programación. Se han realizado ajustes considerables en todos los capítulos. La sección Recorrido a través del libro del prefacio proporciona a los instructores, estudiantes y profesionales una idea del tipo de cobertura que ofrece este texto sobre C++ y la programación orientada a objetos.

Contenido

  • 1 Introducción a las computadoras, Internet
  • 2 Introducción a la programación en C++
  • 3 Introducción a las clases y los objetos
  • 4 Instrucciones de control: parte 1
  • 5 Instrucciones de control: parte 2
  • 6 Funciones y una introducción a la recursividad
  • 7 Arreglos y vectores
  • 8 Apuntadores y cadenas basadas en apuntadores
  • 9 Clases: un análisis más detallado, parte1
  • 10 Clases: un análisis más detallado, parte 2
  • 11 Sobrecarga de operadores: objetos String y Array
  • 12 Programación orientada a objetos: herencia
  • 13 Programación orientada a objetos: polimorfi smo
  • 14 Plantillas
  • 15 Entrada y salida de fl ujos
  • 16 Manejo de excepciones
  • 17 Procesamiento de archivos
  • 18 La clase string y el procesamiento de fl ujos de cadena
  • 19 Búsqueda y ordenamiento
  • 20 Estructuras de datos
  • 21 Bits, caracteres, cadenas estilo C y estructuras
  • 22 Biblioteca de plantillas estándar (STL)
  • 23 Programación de juegos con Ogre
  • 24 Bibliotecas Boost, Reporte técnico 1 y C++0x
  • 25 Otros temas
  • A Tabla de precedencia de operadores y asociatividad
  • B Conjunto de caracteres ASCII
  • C Tipos fundamentales
  • D Sistemas numéricos
  • E Temas sobre código heredado de C
  • F Preprocesador
  • G Código del caso de estudio del ATM
  • H UML 2: tipos de diagramas adicionales
  • I Uso del depurador de Visual Studio
  • J Uso del depurador de GNU C++

Enlace de descarga:
https://mega.co.nz/#!BdsAHLgI...


También te podría interesar:
eBook - Aprenda Visual Basic 6.0 como si estuviera en primero
Manual de 9 lecciones de Visual Basic 6.0
2 Manuales sobre lenguaje ensamblador


sábado, 12 de julio de 2014

De sistema decimal a sistema binario en c++ y Java – Abogado – Dominios – Auto



Para convertir un número de sistema decimal a binario debemosdividir este número entre 2, hasta que el dividendo seamenor a 2, es decir 1.
Luego, se tomarán los restos de la división desde el último hasta el primero.

Ejemplo:

71 dividido entre 2 es igual a35 y el residuo igual a1.
35 dividido entre 2 es igual a17 y el residuo igual a1.
17 dividido entre 2 es igual a8 y el residuo igual a1.
8 dividido entre 2 es igual a4 y el residuo igual a0.
4 dividido entre 2 es igual a2 y el residuo igual a0.
2 dividido entre 2 es igual a1 y el residuo igual a0.
1 dividido entre 2 es igual a 0 y el residuo igual a1.

Entonces, en sistema binario71 se escribe 1000111.

Un ejemplo más gráfico


¿Como hacer esta operación en c++?

#include iostream

using namespace std;

int main(){
int numero, dividendo, resto, divisor = 2;
string binario = "";
cout "Ingrese el numero decimal a convertir a sistema binario" endl;
cin numero;
dividendo = numero;
while(dividendo = divisor){ //Mientras el dividendo sea mayor o igual que el divisor, es decir, mayor o igual que 2.
resto = dividendo % 2;
if(resto == 1)
binario = "1" + binario; //Si el resto es igual a 1 concatenamos 1 a la variable string llamada binario
else
binario = "0" + binario; // Sino concatemanos 0
//Es importante este orden de concatenación (primero el bit y luego el valor de la variable) esto para que nuestro número
//en sistema binario esté ordenado correctamente.
dividendo = dividendo/divisor; // Actualizamos el valor del dividendo dividiendolo entre 2.
}
if(dividendo == 1)
binario = "1" + binario; // Por último sí el valor final del dividendo es 1 concatenamos 1 sino concatenamos 0.
else
binario = "0" + binario;
cout "En sistema binario " numero " se escribe " binario endl;
return 0;
}

En este ejemplo lo que haremos será leer el número que queremos convertir a sistema binario, luego el programa se encargará de realizar operaciones con el operador módulo (%) de c++ para saber el resto de cada división y luego ir concatenando estos restos de divisiones y formar el número en sistema binario. Estas concatenaciones las hacemos usando estructuras selectivas, según se cumpla que el resto sea igual a 1 o 0.

Otra manera de realizar este algoritmo en c++ es haciendo uso de la clasestringstreampara convertir número enteros en cadenas (strings).

#include iostream
#include sstream // Para convertir el resto de la division de int a string.

using namespace std;

int main(){
int numero, dividendo, resto, divisor = 2;
string binario = "", ordenado = "";
stringstream stream; // De int a string
cout "Ingrese el numero decimal a convertir a sistema binario" endl;
cin numero;
dividendo = numero;
while(dividendo = divisor){
resto = dividendo % 2;
stream resto; // Almacena el resto de las divisiones concatenandolas en el objeto stream.
dividendo = dividendo/divisor;
}
stream dividendo;
binario = stream.str(); //Almacenamos en la variable llamada binario de tipo string los valores concatenados del objeto stream.
for(unsigned int i = 0; i binario.size(); i++)//Debemos ordenar los bits
ordenado = binario[i] + ordenado;
cout "En sistema binario " numero " se escribe " ordenado endl;
return 0;
}

Así como el ejemplo anterior leemos el número que queremos saber su representación en el sistema binario. El resto de la división lo vamos almacenando en elobjeto stream de tipo stringstream. A medida que vamos almacenando los restos estos se irán concatenando. Luego de concatenar todos los restos los guardamos en una variable de tipo stringbinario = stream.str();. Finalmente esta representación está al revés. Sí queremos la representación de 71 nos mostrará 1110001. Esto lo ordenaremos con el siguiente método.

for(unsigned int i = 0; i binario.size(); i++)
ordenado = binario[i] + ordenado;

Recordar que el tipo de dato string es una cadena de caracteres y es por esto que lo podemos manipular de esta manera.

Ejecución:

Ingrese el numero decimal a convertir a sistema binario
567
En sistema binario 567 se escribe 1000110111

¿Y en Java?

import java.util.Scanner;

public class DecimalABinario {
public static void main(String[] ar){
Scanner teclado = new Scanner(System.in);
int dividendo, resto, divisor = 2, numero;
String binario = "";
System.out.println("Ingrese el numero decimal a convertir a sistema binario");
numero = teclado.nextInt();
dividendo = numero;
while(dividendo = divisor){ //Mientras el dividendo sea mayor o igual que el divisor, es decir, mayor o igual que 2.
resto = dividendo % 2;
if(resto == 1)
binario = "1" + binario; //Si el resto es igual a 1 concatenamos 1 a la variable string llamada binario
else
binario = "0" + binario; // Sino concatemanos 0
//Es importante este orden de concatenación (primero el bit y luego el valor de la variable) esto para que nuestro número
//en sistema binario esté ordenado correctamente.
dividendo = dividendo/divisor; // Actualizamos el valor del dividendo dividiendolo entre 2.
}
if(dividendo == 1)
binario = "1" + binario; // Por último sí el valor final del dividendo es 1 concatenamos 1 sino concatenamos 0.
else
binario = "0" + binario;
System.out.println("En sistema binario " + numero + " se escribe " + binario);
}
}

Funciona igual que el primer ejemplo en c++ solo que está escrito en Java.

Otra forma mas sencilla sin hacer uso de estructuras selectivas sería solo concatenar los restos de la división con la variable String.

import java.util.Scanner;

public class DecimalABinario2 {
public static void main(String[] ar){
Scanner teclado = new Scanner(System.in);
int dividendo, divisor = 2, numero, resto;
String binario = "";
System.out.println("Ingrese el numero decimal a convertir a sistema binario");
numero = teclado.nextInt();
dividendo = numero;
while(dividendo = divisor){
resto = dividendo % divisor;
binario = resto + binario;
dividendo = dividendo/divisor;
}
binario = dividendo + binario;
System.out.println("En sistema binario " + numero + " se escribe " + binario);
}
}

Ingresamos el número decimal que queremos su representación en sistema binario, luego hacemos un ciclo que se repetirá mientras el dividendo sea mayor o igual que el divisor, es decir, 2. Calculamos el resto de cada división y el resultado lo vamos concatenando en la variable binario. Finalmente el último valor del dividendo lo concatenamos a la variable binario y mostramos en pantalla la representación binaria del número que ingresamos.

Ejecución:

Ingrese el numero decimal a convertir a sistema binario
71
En sistema binario 71 se escribe 1000111


También te podría interesar:
[Ejercicio resuelto c++ POO Herencia Vectores MVC] Una Asociación de Lancheros trasladan turistas.
Cuenta regresiva de minutos y segundos con c++.
Escribir en bloc de notas con c++ [Archivo/Ficheros c++].
Abrir una direccion web con c++.
Generar número aleatorio en Java Math.random().
Elevar un número a una potencia en java Math.pow.
[Ejercicio resuelto Java] Cuadrante en que se encuentra un punto en el plano.


viernes, 11 de julio de 2014

3 libros sobre programacion orientada a objetos – Registros – World – Teleconferencias – Forex


Programación Orientada a Objetos


Desde principio de la década de los noventa hasta la actualidad, la Programación Orientada a Objetos se ha establecido como el paradigma más extendido entre la comunidad de programadores. Las asignaturas de programación de las Facultades y Escuelas de Informática no han sido ajenas al uso de este paradigma de programación. Estas asignaturas, normalmente, se han basado en buenos y completos libros de expertos en la materia. No en vano, existe una amplia literatura acerca del tema. Pero quizás, esta amplia literatura provoca, que, tanto profesores como alumnos, o incluso, personas externas al ámbito académico interesadas en este paradigma, se vean desbordados ante la cantidad de material disponible, del cual, además, posiblemente necesiten sólo una pequeña parte.

La intención de los autores al escribir este libro es la de cubrir una laguna que, en nuestra opinión, existe en la vasta literatura acerca del tema: la falta de una guía accesible y concisa de introducción a los conceptos más importantes de la Programación Orientada a Objetos. Por tanto, este libro surge con el objetivo de presentar los conceptos más importantes del paradigma de una manera sencilla y agradable al lector, apoyando los conceptos presentados con ejemplos que ayuden a la comprensión de todo lo expuesto.

Contenido
  1. Introducción.
  2. Clases y objetos.
  3. Mecanismos de reutilización.
  4. Polimorfismo.
  5. Excepciones.
  6. Estructuras de datos.
  7. Identificación y modelado.
  8. Otras características de C++.

Enlace de descarga:
https://mega.co.nz/#!BY8lyIrb!r1PqJhjG64-D8B572mvEm3gPuz196DoubHvSL5xK25E


Programación Orientada a Objetos en C++


Contenido
  1. Introducción.
  2. Conceptos básicos.
  3. Donde C y C++ difieren.
  4. Donde C++ se destapa.
  5. Donde "la clase" se evidencia.
  6. Entrada y salida de datos.
  7. Cuando irrumpen los "constructores".
  8. De la objetividad de lo racional.
  9. De la herencia y derivados.
  10. De las funciones virtuales.
  11. Conclusión.

Enlace de descarga:
https://mega.co.nz/#!FRcSXT7R!42ie8qAT9ZBT4T8dt-Xsk3PztM1TwPpok760NoBRjJ4


Programación Orientada a Objetos en Java


Un apoyo que tiene el proceso enseñanza-aprendizaje, es precisamente el material didáctico, ya sea a través de apuntes, cuaderno de ejercicios, libros o aplicaciones de computadora sobre todo si se trata de un área tan dinámica como lo es la de la informática.
Estas notas pueden ser de apoyo para la materia y se pretenden mostrar algunos ejemplos y conceptos de la programación orientada a objetos, enfocados a un lenguaje de programación de este tipo, que es JAVA.

Contenido
  1. Introducción.
  2. Conceptos de la programación orientada a objetos en JAVA.
  3. Estructuras del lenguaje.
  4. Programación de interfaces gráficas.
  5. Programación de Applets.
  6. Programación Cliente/Servidor.

Enlace de descarga:
https://mega.co.nz/#!McMV3TSb!hSMxFY-dVanVpjcWznKNvO61dJNGbJMOqQP1iFao9Uc

Quizás también te podría interesar:
5 Libros para aprender a programar en Android
5 Libros para aprender a programar en Python
eBook - Introduccion a la Ingenieria del Software
eBook - Iniciación al diseño web en HTML5


martes, 3 de junio de 2014

[Ejercicio resuelto c++ POO Herencia Vectores MVC] Una Asociación de Lancheros trasladan turistas – Hard drive – Credito – Abogado – Curso



Hace poco nos pidieron realizar este ejercicio práctico para una evaluación en la universidad. En esta entrada les presento el planteamiento y el código fuente del ejercicio resuelto en c++ utilizando Programación orientada a objetos, herencia de clases, vectores y MVC. Sí desean descargar el código fuente pueden encontrar el enlace de la descarga al final de la entrada.

Planteamiento:
En Chichiriviche, concretamente en playa sur, existe una asociación que trabaja con varios lancheros, para prestar el servicio de trasladar (llevar y traer) a los turistas a los respectivos cayos que se encuentran cercanos a la zona, como son: SAL, MUERTO, PERAZA, SOMBRERO, BOCA SECA, VARADERO y BORRACHO. La asociación necesita que le procesen los servicios de traslado realizados por cada uno de los lancheros la semana pasada, con el propósito de determinar para cada uno el total de BsF. que le generó a la asociación y su ganancia.
Actualmente los traslados se pueden realizar en cualquier día de la semana, (Representado por: 1. Lunes, 2. Martes, 3. Miércoles, 4. Jueves, 5. Viernes, 6. Sábado, 7. Domingo).
La asociación siempre tiene a su disposición una lista de los lancheros que trabajaron en la semana que va a ser procesada y de estas personas se conoce su cédula y nombre. También se sabe, que en este momento se realizan traslados a 7 cayos y para el mejor manejo de la información la asociación los identifica con un número que va del 1 al 7, así mismo, por cada cayo se conoce el nombre y la tarifa a cancelar por el traslado. A continuación se presenta un ejemplo de la información correspondiente a los cayos:

Número del cayo Nombre del cayo Tarifa del traslado (BsF)
1 SAL 600
2 MUERTO 500
3 PERAZA 700
…. …… …..
7 BORRACHO 1500

Es importante resaltar, que la asociación los fines de semana se queda con el 20% de la tarifa cobrada por el traslado y el resto es la ganancia del lanchero y entre semana la asociación se queda con el 10% de la tarifa cobrada por el traslado y el resto es la ganancia del lanchero.

Enlace de descarga del código fuente:
http://www.mediafire.com/download/2wbwzq5ilo8b168/Vectores_Cayos_Practica_II2.rar


jueves, 27 de febrero de 2014

[Ejercicio resuelto c++ POO Herencia MVC] Línea de autobuses “El Cardenalito” – Criminal – Automovil – Curso


c++ mvc poo


Sí estas aprendiendo sobreherencia de clases enprogramación orientada a objetos y el patrón de diseñoMVC. Este ejercicio resuelto podría ser de tu ayuda. Así como éste pueden también ver el[Ejercicio resuelto c++ POO Herencia MVC] Librería Virtual


A continuación les dejo el planteamiento, también dejaré en un enlace de descarga un .rar que contendrá la carpeta del proyecto realizado.

PLANTEAMIENTO:

El gerente de la línea de autobuses “El Cardenalito”, desea un sistema que permita llevar el control de los autobuses que salen diariamente, por tanto es importante para la línea saber el Monto BsF. obtenido por el viaje realizado y el total de pasajeros que pagaron la mitad del costo del pasaje. Del autobús se conoce el destino (1. Caracas, 2. Valencia) y la cantidad de pasajeros que transportó. Cabe destacar que cada autobús posee un número. Se sabe que todos los autobuses de esa línea tienen una capacidad máxima de 60
pasajeros y además el costo del pasaje a Caracas es 90 BsF. y a Valencia es 50 BsF. Por otra parte, la línea establece que las personas de la tercera edad y los niños menores de 5 años deberán cancelar sólo la mitad del pasaje. Es importante resaltar que cada vez que llega un pasajero a comprar un boleto se le solicita indique su nombre, sexo y edad. El gerente necesita tener disponibles ciertas estadísticas, que le permita tomar decisiones eficaces, dichas estadísticas se refiere a cantidad de autobuses que utilizaron la capacidad máxima, total de pasajeros cuyo destino fue Valencia y entre las personas de sexo femenino y masculino quienes viajan más.
NOTA: Se considera que una persona se encuentra en la tercera edad si su edad es
por lo menos 60 años.

Descargar carpeta del proyecto:
http://www.mediafire.com/downl...

Otro enlace:
https://mega.co.nz/#!pRlk3TZI!qTdTsO...

domingo, 2 de febrero de 2014

Cuenta regresiva de minutos y segundos con c++ – Auto – Register – Record



La función de éste programa de consola es permitirnos realizar una cuenta regresiva desde la cantidad de minutos que queramos.
Solo ingresamos la cantidad de minutos que queremos y la cuenta regresiva iniciará, además con cada segundo transcurrido el programa realizará un sonido de alerta (beep).

Codigo fuente:
 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include iostream
#include windows.h

using namespace std;

int main(){
int minutos, ii;
cout "Minutos?" endl;
cin minutos;

for(int j=minutos-1 ; j= 0; j--){
ii = 59;
for(int i = ii; i = 0; i--){
system("cls");
cout j ":" i endl;
cout "\a";
Sleep(1000);
}
}
}

Declaramos una variable llamada minutos la cual almacenará la cantidad de minutos que tendrá nuestra cuenta regresiva.
El ciclo for externo se iniciará enminutos - 1 es decir, si ingresamos 1 minuto el for iniciará en 0 y para que éste se ejecute colocaremos j= 0. El ciclo for interno empezará en 59, la cantidad de segundos que tiene un minuto (60) menos 1.
System("cls"); se encargará de limpiar la pantalla con cada segundo transcurrido, y la secuencia de escape \a emitirá un sonido de alerta con cada segundo transcurrido.
Es muy importante la funciónSleep(milisegundos) debido a que ésta determinará el intervalo de tiempo de cada ejecución del for interno, en éste casomil milisegundos = 1 segundo.

La ejecución sería de la siguiente manera: