Uso de getch() y kbhit()

Un pequeño y util ejemplo del uso de la funcion getch(), delay() y kbhit(). Se trata del controlar el movimiento
de un caracter en pantalla, finaliza si se presiona la tecla enter

kbhit(): nos indica si se presiono una tecla o no
get(): captura una tecla pulsada
delay(): retraso un tiempo

Descargar Aqui el ejemplo

Series mas comunes en C++

Si eres principiantes en C o C++, seguramente te haz topado con los clasicos ejercicios de series y suma, en los que se aprende a usar las secuencias for, do-while. Aca les dejo las series mas comunes,


Sumas y Series Enteras
1. Fibonacci  0 -1 -1 -2 -3 -5 -8 -13
2. Cuadrados  1 -2 -4 -8 -16- 32- 48
3. Serie 1    1 -0 -3 -2 -5 -4 -7 -6 
4. Primos     1 -2 -3- 5- 7- 11 -13
5. Cubos      1 -8 -27- 64- 125- 343
Sumas y Series con Fracciones
6. 1/1 + 1/2 + 1/3 + ...  1/n
7. 1/1 - 1/2 + 1/3 - ...  1/n 
8. n/1 + n/2 + n/3 + .... n/n

Descargar Archivo CPP en: Megauplodad  o Mediafire

Rompecabezas Deslizable C++

El otro día  encontré  un rompecabezas deslizable mio, de varios años atras, es uno de dieciséis piezas, un juego bastante simple, que consiste en deslizar las piezas hasta su posición original. Aun así me anime a programarlo en C++. Algo decente el juego, usa las teclas de dirección para controlar las piezas, contiene 4 imagenes.


Descargar el juego aqui en Megaupload o Mediafire
Usa mis bibliotecas, si no las tienes, descargarlas  aquí, desde Megaupload o Mediafire y pegarlas en la carpeta TC/include (el password es IncludeCpp)
Para poder jugarlo debes tener instalado el TurboC3

Fibonacci C++

Serie Fibonaci    0 1 1 2 3 5 8 13 21

Para ver un listado de series mas completo...haz clic aqui

#include<stdio.h>
#include<conio.h>

void main()
{
int n,a,b,c,i;
clrscr();
printf("N: ");
scanf("%d",&n);

a=0;b=1;c=0;
printf("0 \n");
for(i=0;i<n;i++)
{
a=b;
b=c;
printf("%d \n",a+b);
c=a+b;
}
getch();
}

Rational Rose Portable

Para hacer mas variado el blog y expandirnos a nuevos temas, aca les dejo el link para el Rational Rose Portable

Descargar Ratioanl Rose

Cromos, Numeros aleatorios

Se crea un vector, y se llena aleatoriamente, hasta que todos los valores del vector sean diferente de 0

#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#include<time.h>

void main()
{
int *vector;
int aleatorio[100];
int i,sw,n,aux,cant=0;

clrscr();

do{
printf("Cantidad: ");
scanf("%d",&n);
}while(n<1);

vector=new int[n];

for(i=0;i<n;i++)
vector[i]=0;

randomize();
do{
aux=random(n);//numero aleatorio

if(vector[aux]==0)//igualamos a uno la cantidad,
vector[aux]=1;

aleatorio[cant]=aux;//almacenamos el numero aleatorio generado
cant++;

sw=1;
for(i=0;i<n;i++)//recorremos el for
if(vector[i]==0)//evaluar la cantidad  de cromos
sw=0;
}while(sw==0);

clrscr();
for(i=0;i<cant;i++)
printf("< %d > \n",aleatorio[i]);
getch();
}

Series C++

Algunas series que siempre el profesor nos solicita..
Para ver un listado de series mas completo...haz clic aqui


1)Primera Serie: 1/1 +1/2 + 1/3 + ...+ 1/n


#include<conio.h>
#include<stdio.h>

void main()
{
int n,aux=1;
float total=0.0;

clrscr();
printf("Ingrese numero: ");
scanf("%d",&n);

do{
total+=(float)1/aux;
aux++;
}while(aux<n);

printf("Suma de la serie %f",total);
getch();
}


2 Serie  Dividir si es par, sino multplicar por tres  +1


#include<conio.h>
#include<stdio.h>

void main()
{
int num,cant=0;

clrscr();
do{
printf("Numero: ");
scanf("%d",&num);
}while(num<1);

do{
if(num%2==0)
num=num/2;
else
num=(num*3)+1;
cant++;
}while(num>1);

if(num==1)
printf("Valor final 1, cantidad de pasos %d",cant);
else
printf("Error");
getch();
}

Iniciales de Nombres

#include<conio.h>
#include<stdio.h>
#include<string.h>
void main()
{
char *nombre;
char letra;
int i,lon,n=0;
char iniciales[5];

clrscr();
gets(nombre);
lon=strlen(nombre);//calculamos longitud de la cadena

iniciales[n]=nombre[0];//copiamos la primera inicial
n++;//contador de numero de caracteres de la cadena

for(i=1;i<lon;i++)
if(nombre[i]==' ')// lbuscamos un espacio
{
iniciales[n]='.';
n++;
iniciales[n]=nombre[i+1];//agregamos la letra a la cadena
n++;
}
iniciales[n]=NULL;//ponemos final a la cadena
puts(iniciales);
getch();

}

Tabla de Multiplicar C++

Un sencillo programa para mostrar la tabla de multiplicar

#include<conio.h>
#include<iostream.h>

void main()
{
int i,j;
//includecpp.blogspot.com
for(i=1;i<=10;i++)
{
cout<<"\n\nTabla del "<<i<<"\n";
for(j=1;j<=10;j++)
cout<<i<<" x "<<j<<" ="<<i*j<<"\n";

getch();
}
}

Tres en Raya C++, Version 2

Para aquel que me pidio ayuda con el juego de Tres en Raya, sin matrices, con todos los datos y requisitos que me pediste


El vector se ordeno como se ve en la imagen,
cualquier duda, escribeme a yersicpp@gmail.com






Descargar Tren en Raya, sin matrices

TurboC 3, BorlandC y TurboC5

Para aquellos que estan empezando con C, aca les dejo los links para los IDES

Descargar TurboC 3
Descargar TurboC 5

Cambiar vocales por letra que mas se repite

PROGRAMA PARA CAMBIAR LA LETRA QUE MAS SE REPITE DE LA CADENA POR LAS VOCALES

#include<conio.h>
#include<stdio.h>
#include<string.h>
#include<ctype.h>

int vocalea(char c)
{
int x;
x=0;
c=toupper(c);
if(c=='A' || c=='E'|| c=='I' || c=='O' || c=='U')
x=1;
return x;
}

void main()
{
int c[27];
char *cadena;
int i,len;
int may,pos;

clrscr();
printf("Cadena: ");
gets(cadena);

len=strlen(cadena);//calculamos la longitud de la cadena
for (i=0;i<27;i++)//iniciamos el contador
c[i]=0;

for(i=0;i<len;i++)//cuenta las cantidad  por cada letra
c[toupper(cadena[i])-65]++;
may=-1;

for(i=0;i<27;i++)//busca la letra que mas se repiute
if(c[i]>may)
{
may=c[i];
pos=i;
}
for(i=0;i<len;i++)//cambia la letra q mas se repite por las vocales
if(vocalea(cadena[i])==1)
cadena[i]=pos+65;
puts(cadena);
getch();
}
//includecpp.blogspot.com

Segunda Pregunta Comleta

Aca les dejo, la segunda completa, con  todos los reportes y con el error de lectura corregido

Descargar Segunda pregunta completa

Examen Progra II


Para aquellos que van a dar examen de Progra II, aca les dejo el desarrollo del examen del ciclo pasado.. en VisualBasic

Descargar Primera Pregunta
Descargar Segunda Pregunta


SUERTE.... EN TU EXAMEN... QUE LA VAS A NECESITAR


Dejar tu comentario, no cuesta nada  =P

Capturar Hora del Sistema

Pequeño programa, facil de entender para capturar y mostrar la hora del sistema, usa la biblioteca InCpp


Descargar aqui

Si no corre el programa, descargar la biblioteca aqui

Maximo Común Divisor en C++

Programa para hallar el MCD de la cantidad de números que el usuario elija.



#pragma hdrstop
#include
#include
#pragma argsused

void main(int argc, char* argv[])
{
int *x, n, y=1, i=2, c=0, menor,j;

cout<<"\n De cuantos numeros desea calcular el MCD? ";
cin>>n;

x=new int[n];

for(j=0; j
cout<<"\n ingrese "<< "Numero en la posicion<"<< (j+1) <<">";
cin>>x[j]; }

menor=x[0];

for(j=0; jif(x[j]menor=x[j];
}

do {

for(j=0; j if(x[j]%i!=0) {
c=1;
break; } }


if (c==0){
y=y*i;

for (j=0; j x[j]=x[j]/i;

menor=menor/i;
i=2;
}
else {i++; c=0; }

}while(i<=menor);

cout<<"\n\n El MCD es "<

getch();
}

Lee Entero

Si usas el clasico lee_entero, con cada entrada no valida se genera nuevas lineas de mensaje, dando asi un mal aspecto a nuestro programa. Esto se soluciona con el siguiente lee_entero. Si necesitas el lee_real solo cambia el tipo de dato y listo

int lee_entero(char *msj, int min, int max)
{
int y=wherey();
int num;
do{
gotoxy(1,y);printf("                            ");
gotoxy(1,y);printf("%s: ",msj);
scanf("%d",&num);
}while(num< min || num>max);
return num;
}

Numeros Aleatorios VB

Para generar numeros aleatorios en VB, se usa la funcion Rnd, esta funcion devuelve un valor entre 1 y 0.
numero=rnd

Si necesitamos valores entre un rango, por ejemplo una nota (0-20), quedaria asi
nota=rnd*20

pero si necesitamos valores un poco mas complicados . Ejemplo 17-53
usamos una formula sencilla.  Multiplicamos Rnd  por la diferencia de los numeros, y le sumamos el numero menor

numero=rnd*36 + 17 //valor aleatorio entre 17 y 53

Matriz C++

Matriz en lista dinámica, con funciones de sumar, restar multiplicar, identidad


Descargar matriz de numeros complejos
Descargar matriz para numeros enteros

Matriz C++

El tercer ejercicio del 1 Laboratorio de Progra I (con el profesor Valdivia), clase de matriz, casi todas las funciones implementadas

Descargar Matriz C++

Clase Fechas C++

Les dejo la clase fecha, para aquellos que llevan curso con el profesor Valdivia
no esta completo, solo falta implementar sumadias y sumahoras...


#include<conio.h>
#include<stdio.h>
//www.includecpp.blogspot.com
class Fecha
{
int d,m,a;

public:
Fecha()
{
d=m=a=0;
}
Fecha(int,int,int);

int GetDia()
{return d;}
int GetAnio()
{return a;}
int GetMes()
{return m;}

void SetDia(int);
void SetMes(int);
void SetAnio(int);

void SumarDias(int);
void SumarHoras(int);
};

Fecha::Fecha(int x, int y, int z)
{
d=x;
m=y;
a=z;
}

void Fecha::SetDia(int aux)
{
d=aux;
}

void Fecha::SetMes(int aux)
{
m=aux;
}

void Fecha::SetAnio(int aux)
{
a=aux;
}

void Fecha::SumarDias(int dias)
{
//por implementar
}

void Fecha::SumarHoras(int horas)
{
//por implementar
}


void main()
{
Fecha A; //crear vacio
Fecha B(22,10,2011);//crear con datos

A.SetDia(24);
A.SetMes(12);
A.SetAnio(2012);

clrscr();
printf(" Dia: %d  Mes: %d  Año: %d",A.GetDia(),A.GetMes(),A.GetAnio());
printf(" Dia: %d  Mes: %d  Año: %d",B.GetDia(),B.GetMes(),B.GetAnio());
getch();
}


//no sean malos y dejen comentario

Matrices Visual Basic

Uso de matrices en Visual Basic (Progra II clase del profesor Valdivia)

Sub main()
Dim matriz(3, 3) As Integer

Lectura matriz
presenta matriz

End Sub

Sub Lectura(matriz() As Integer)
Dim fil As Integer
Dim col As Integer

For fil = 0 To 2
For col = 0 To 2
matriz(fil, col) = InputBox("Ingrese numero [" & fil & "][" & col & "]")
Next
Next

End Sub

Sub presenta(matriz() As Integer)
Dim i As Integer
Dim j As Integer

Dim cad As String

For i = 0 To 2
For j = 0 To 2
cad = cad & matriz(i, j) & " "
Next
cad = cad & vbCrLf
Next
MsgBox (cad)

End Sub

Ejercicio de Vectores en VB

Ejercicio de Vectores en Visual Basic, de la calse del profesro Valdivia


Sub main()
Dim nombres() As String
Dim total As Integer

Lectura nombres, total
Procesar nombres, total
Presenta nombres, total
End Sub
Sub Lectura(nombres() As String, total As Integer)
Dim cad As String
Dim sw As String

Do
cad = InputBox("Ingrese nombre: ")
Agregar nombres, total, cad

Do
sw = InputBox("Desea continuar?" & vbCrLf & "Si" & vbCrLf & "No")
Loop Until (sw = "si" Or sw = "no")

Loop Until sw = "no"
End Sub

Sub Agregar(nombres() As String, total As Integer, cad As String)

ReDim Preserve nombres(total)
nombres(total) = cad
total = total + 1
End Sub

Sub Presenta(nombres() As String, total As Integer)
Dim i As Integer
Dim cad As String

For i = 0 To total - 1
cad = cad & nombres(i) & vbCrLf
Next
MsgBox (cad)

End Sub

Sub Procesar(nombres() As String, total As Integer)
Dim i As Integer
Dim j As Integer
Dim aux As String

For i = 0 To total - 2
For j = i + 1 To total - 1
If nombres(i) > nombres(j) Then
aux = nombres(i)
nombres(i) = nombres(j)
nombres(j) = aux
End If
Next
Next

End Sub

Postal Garu C++

Les dejo una postal en C++, en modo grafico, para San Valentin., con la imagen de Garu
Muy util si deseas aprender el modo grafico, se usa funciones basicas como setcolor(color de lineas y de texto), circle(dibuja circulo), setfillstyle (para el relleno), entre otras...

Ejemplo facil de entender
Descargar Postal C++

Centrar cadenas

No te ha pasado?. Necesitas centrar un texto en pantalla, como un titulo, un mensaje o un menu, con las siguientes lineas podras resolver ese problema facilmente

void centrar(char *msj, int y) // recibimos el mensaje y la posicion
{
//si deseamos un posicion en especial enviamos la posicion, sino enviamos 0
int x;
x=40-strlen(msj)/2; //calculamos la posicion en x
if(y>0)
    gotoxy(x,y);
else
   gotoxy(x,wherey());
puts(msj);
}

void main()
{
char *cadena;
gets(cadena);
centrar(cadena,20);
centrar(cadena,0);
getch();
}

Tres en Raya C++

Les dejo un jeugo en C++. se trata de Tres en Raya, usa el modo grafico y captura de teclas

Descargar Tres en Raya

Menus para C++

Si haz programado a nivel basico, seguramente te has encontrado con el tipico menu, en el que se muestra las opciones, y se elige una. Posteo algunas formas de menu alternativas al tipico: "Ingrese la opcion: "

El primer menus es con un puntero hacia la opcion deseada y el segundo es resaltando al opcion
espero que les sirva . Puedes Descargar Menu, o verlo a continuacion



#include<conio.h>
#include<stdio.h>

#define TENT 13
#define TDER 77
#define TIZQ 75
#define TARR 72
#define TABA 80
#define TESC 27

char menu[3][15]={"Opcion 0","Opcion 1","Opcion 2"};

int Menu1(int x, int y, char tabla[][15],int no)
{
int i,pos,tecla;
textcolor(15);
for(i=0;i<no;i++)
{
gotoxy(x,y+i);cprintf("%s", tabla[i]);
}
x=x-2;
pos=0;
textcolor(10);
gotoxy(x,y);cprintf(" ");
do{
tecla=getch();
gotoxy(x,y+pos);cprintf(" ");
if(tecla==TARR)
if(pos==0)
pos=no-1;
else
pos--;
if(tecla==TABA)
if(pos==(no-1))
pos=0;
else
pos++;
gotoxy(x,y+pos);cprintf(" ");
}
while(!(tecla==TENT || tecla==TESC));

return pos;//retorna el numero de opcion de 1 a no
}//fin menu

/*..........FUNCION ELEGIR OPCION: RESALTADO.................*/
int Menu2(int x, int y, char tabla[][15], int N)
{
int i,tecla,C,pos=0;
textbackground(0);
C=4;
textcolor(15);
for(i=0;i<N;i++)
{
gotoxy(x,y+i);cprintf("%s", tabla[i]);
}

textbackground(C);
gotoxy(x,y);cprintf("%s", tabla[pos]);

do{
tecla=getch();
textbackground(0);
gotoxy(x,y+pos);cprintf("%s", tabla[pos]);
if(tecla==TARR)
if(pos==0)
pos=N-1;
else
pos--;
if(tecla==TABA)
if(pos==(N-1))
pos=0;
else
pos++;
textbackground(C);
gotoxy(x,y+pos);cprintf("%s", tabla[pos]);
}while(tecla!=TENT);

return pos;
}

void main()
{
int opc;
clrscr();
opc= Menu1(10,10,menu,3);
gotoxy(10,15);printf("%d: %s",opc,menu[opc]);

opc= Menu2(30,10,menu,3);
gotoxy(30,15);printf("%d: %s",opc,menu[opc]);
getch();
}

Cardex PEPS y Promedio

Les dejo aqui 2 de las tres formas de los cardex (esto es en contabilidad)

http://www.mediafire.com/?a7lpn70ljn2glb4
PEPS

http://www.mediafire.com/?2bopckcooo4t408
Promedio

Ejercicio Progra II

El Ejercicio de progra II, con el profesor Valvidia


Sub main()
Dim opc As Integer
Do
    opc = InputBox("1: Numeros" & vbCrLf & "2: Factorial" & vbCrLf & "3: Dias de mes" & vbCrLf & "4: Salir")
    Select Case opc
    Case 1: uno
    Case 2: dos
    Case 3: tres
    End Select
Loop Until opc = 4
End Sub

Sub uno()
Dim numero As Integer
Dim mayor As Integer
Dim menor As Integer
Dim promedio As Double
Dim suma As Integer
Dim n As Integer
Dim sw As Integer

suma = 0
sw = 0
n = 0
Do
numero = InputBox("Ingrese numero: ")
If sw = 0 Then
    mayor = numero
    menor = numero
    sw = 1
End If

If numero <> 0 Then
    n = n + 1
End If

If numero > mayor Then
    mayor = numero
End If

If numero < menor And numero <> 0 Then
    menor = numero
End If

suma = suma + numero

Loop Until numero = 0
If n <> 0 Then
    promedio = suma / n
End If
MsgBox ("Cantidad: " & n & vbCrLf & "Mayor: " & mayor & vbCrLf & "Menor: " & menor & vbCrLf & "Promedio: " & promedio)

End Sub
Function factorial(n As Integer) As Integer
Dim fact As Integer
Dim i As Integer

fact = 1
If (n = 0) Then
    fact = 1
Else
    For i = 1 To n
        fact = fact * i
    Next
End If
factorial = fact

End Function

Sub dos()
Dim numero As Integer
Dim fact As Integer

numero = InputBox("Ingrese numero: ")
If numero < 0 Then
    MsgBox ("No hay factorial de negativos")
Else
    fact = factorial(numero)
    MsgBox ("Factorial de " & numero & " es " & fact)
End If

End Sub
Sub cantidad(mes As String, ByRef c As Integer)
Select Case mes
Case "enero": c = 31
Case "febrero": c = 28
Case "marzo": c = 31
Case "abril": c = 30
Case "mayo": c = 31
Case "junio": c = 30
Case "julio": c = 31
Case "agosto": c = 31
Case "setiembre": c = 30
Case "octubre": c = 31
Case "noviembre": c = 30
Case "diciembre": c = 31
End Select


End Sub

Sub tres()
Dim mes As String
Dim dias As Integer

dias = 0
Do
    mes = InputBox("Ingrese mes: ")
    cantidad mes, dias
Loop Until dias > 0
MsgBox (mes & " tiene " & dias & " dias")
End Sub

Uso del mouse en C++

Para aquellos que estan usando el modo grafico de C++, les dejo este post para el control y manejo del mouse. Se puede utilizar todas las funciones basicas. Solo necesitas un poco de imaginacion

Muy util para menus, formularios y ventanas

Funciones:

void mver();  visualizamos el puntero
void mocultar();  ocultamos el puntero
int mxpos(int);  obtenemos posicion en x
int mypos(int);  ontenemos posicion en y
void msitvar(int,int,1);    visualizamos puntero, en una posicion
int mclick();  retorna  1: si click izquierdo  2: si click derecho
void mlimit(1,int,int,int,int);   delimitamos el movimiento del mouse

Descargar programa en Mediafire o Megaupload

class Puntero
{
public:
void mver();
void mocultar();
int mxpos(int);
int mypos(int);
void msitvar(int,int,int);
int mclick();
void mlimit(int,int,int,int,int);
};

Tarjeta Postal de Navidad C++

La primera entrada del blog. Una postal para navidad, con graficos de C++
es un poco complicado si recien han empezado con el C++, ya que usa clases y como unas 10 librerias


Descargar postal c++