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++