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
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
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
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
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
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++
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
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();
}
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
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: "
#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();
}
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
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
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);
};
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++
es un poco complicado si recien han empezado con el C++, ya que usa clases y como unas 10 librerias
Descargar postal c++
Suscribirse a:
Entradas (Atom)