|
Mostrar Mensajes
|
Páginas: 1 [2] 3 4
|
11
|
Programación / Programación C/C++ / algunma mejor idea para la edad?
|
en: 9 Febrero 2012, 20:27 pm
|
este codigo da la edad aproximada, quisiera si me pueden ayudar a hacer qeu este codigo sea perfecto agradezco su interes bool esbisiesto(int a) { bool bisiesto=false; if(a%4==0) bisiesto=true; if((a%100==0) && (a%400!=0)) bisiesto=false; return bisiesto; }
unsigned int CalcularEdad(Fecha birthdate) { int AnioActual, AA, MesActual, MM, DiaActual, DD; int año, Mes, Dia;
int MonthDays[2][12] = { //{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}, //{31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}, {31, 28, 30, 31, 30, 31, 31, 31, 30, 31, 30, 31}, {31, 29, 30, 31, 30, 31, 31, 31, 30, 31, 30, 31}, }; SYSTEMTIME time; GetLocalTime(&time); AA=birthdate.getAnyo(); MM=birthdate.getMes(); DD=birthdate.getDya(); AnioActual=time.wYear; MesActual=time.wMonth; DiaActual=time.wDay; año = AA-AnioActual; if( MesActual <= MM ) { Mes = MM - MesActual; } else { Mes = MM+12-MesActual; año = año -1; } if( DiaActual <= DD ) { Dia = DD - DiaActual; } else { Dia=DD+MonthDays[esbisiesto(AA)][MM-1]-DiaActual; Mes = Mes -1; } if( Mes < 0 ) { año = año - 1; Mes = 12 + Mes; } unsigned int Arreglo=año*-1; //Result = Format('Años: %.0f, Meses: %.0f, Dias: %.0f', [año, Mes, Dia]); return Arreglo; }
el codigo fue sacado de u n codigo de visual basic en google y lo modifique pero necesito hacerlo andar bien :|
|
|
|
12
|
Programación / Programación C/C++ / matrices con notasion de pnteros
|
en: 1 Diciembre 2011, 19:20 pm
|
un programa bascico de una matriz quiero hacer por ejemplo de 5x5 pero no con notasion de indice sino con notasion de puntero,
void f_matriz(int m[][5]) { }
int main() { int m[5][5]; f_matriz(m);
return 0; }
esa funcion de matriz deberia cargar 5 numeros y mostrarlos pero usando no la de indices, como puedo hacer porque nunca probe esta notasion con matrices
|
|
|
13
|
Programación / Programación C/C++ / duda con macro con if else if else
|
en: 23 Septiembre 2011, 15:08 pm
|
quiero hacer una macro asi, pero no se como hacerla realmente #define FOPEN(a,b) if(a==1) b=fopen("asd1.dat","ab"); / else if(a==2) b=fopen(""asd2.dat,"ab"); el problema es que no se bien las reglas para crear macros asi complejas necesitaria ayuda
|
|
|
14
|
Programación / Programación C/C++ / ingreso de texto en GLUT
|
en: 11 Septiembre 2011, 20:14 pm
|
hola estoy haciendo un programa de loguin pero ahora he decicido pasarlo a GLUT, usando esta libreria de opengl. el primer problema que encontre es el ingreso de texto, porque cuando lo hago desde modo consola uso obviamente cin.getline para el ingreso de nombre de usuario y constraseña, pero en glut solo se como hacer salidas de texto, pero no entradas, es decir como puedo hacer ... muestro algo de lo que tengo hasta ahora es solo ejemplos de codigo de glut, pero lo que necesito no lo tengo, osea el ingreso de texto. http://www.daniweb.com/software-development/cpp/threads/366395void output(int x, int y, char *string) { int len, i;
glRasterPos2f(x, y); len = (int) strlen(string); for (i = 0; i < len; i++) { glutBitmapCharacter(font, string[i]); } }
MAX_LEN = 20; #include <conio.h> void display(void) { glClear(GL_COLOR_BUFFER_BIT); output(0, 24, "Welcome to MyProgram"); output(100, 100, message); output(50, 145, "Ingrese nombre de usuario");
char password[20]; int count; count = 0; do { unsigned char input = getch(); unsigned char* ptr; if(input == 13) { break; }
output(50, 175, "*");
ptr = &input; password[count] = *ptr; count++;
}while(count < MAX_LEN);
output(50, 200, "Ingrese contrasenia"); glutSwapBuffers(); }
como se ve luego de que pide el ingreso del nombre, yo trate de hacer que los caracteres ingresados, se pasen a '*' como son los sistemas de loguin. pero esto colapsa el programa. alguna idea ?
|
|
|
16
|
Programación / Programación C/C++ / duda doble puntero char a matriz de char
|
en: 4 Septiembre 2011, 19:59 pm
|
yo se que este tema fue discutido pero todavia no entiendo porque esto que compilamdo bien, no funciona. no se porque el compilador no reconoce mi declaracion char **mVector = (char**)malloc(sizeof(char)*(filas*columnas));
como si fuera una matriz, mas bien lo reconoce como un vector de vectores, pero como creo entonces una matriz de char dinamicamente? int main(int argc, char *argv[]) { int filas=7; int columnas=16; char **mVector = (char**)malloc(sizeof(char)*(filas*columnas)); //memset(mVector, 0, sizeof(char)*(filas*columnas)); for(int r=0;r<7;r++) for(int s=0; s<16;s++) mVector[r][s]=0;
for(int rr=0;rr<7;rr++) for(int ss=0; ss<16;ss++) cout << mVector[rr][ss]<<endl;//ERROR al leer!!!!!!!!
free(mVector);
system("pause"); return 0; }
http://foro.elhacker.net/programacion_cc/martiz_de_char_doble_puntero-t333527.0.htmlen mi anterior tema me dijeron que debia reservar memoria primero para los vectores supongamos que son 7 en mi caso, y despues sus longitudes osea 16, pero me confunde esta forma de hacerlo, no hay una mas directa asi como en el codigo mostrado ? >> esto fue solucionado asi pero como ya digo, no se porque debe hacerse asi por partes y no todo junto (osea multiplicando filas por columas lo cual da la dimension). ... void main() { int filas=7; int columnas=16; //char** mVector = (char**)malloc(sizeof(char)*(filas*columnas)); char** mVector = (char**)malloc(sizeof(char*)*(filas*columnas)); for(int read=0;read<filas;read++){ mVector[read] = (char*)malloc(sizeof(char)*columnas); }
//memset(mVector, 0, sizeof(char)*(filas*columnas)); for(int r=0;r<7;r++) for(int s=0; s<16;s++) mVector[r][s]='X';
for(int rr=0;rr<7;rr++) for(int ss=0; ss<16;ss++) cout << rr << ":" << ss << " " << mVector[rr][ss]<<endl; free(mVector); system("pause"); }
si alguien fuera amable de decirme porque o por deduccion contraria, que es lo que ahce esto entonces char** mVector = (char**)malloc(sizeof(char)*(filas*columnas));
porque ami forma de apreciarlo esto calcula la dimension total ...
|
|
|
17
|
Programación / Programación C/C++ / Re: contraseña disimulada con *
|
en: 24 Agosto 2011, 18:42 pm
|
rescate este codigo 100% de la libreria standard #include <windows.h> #include <stdio.h>
#include <iostream> #include <stdexcept> #include <string> #include <windows.h> using namespace std;
string getpassword( const string& prompt = "Enter password> " ) { string result;
// Set the console mode to no-echo, not-line-buffered input DWORD mode, count; HANDLE ih = GetStdHandle( STD_INPUT_HANDLE ); HANDLE oh = GetStdHandle( STD_OUTPUT_HANDLE ); if (!GetConsoleMode( ih, &mode )) throw runtime_error( "getpassword: You must be connected to a console to use this program.\n" ); SetConsoleMode( ih, mode & ~(ENABLE_ECHO_INPUT | ENABLE_LINE_INPUT) );
// Get the password string WriteConsoleA( oh, prompt.c_str(), prompt.length(), &count, NULL ); char c; while (ReadConsoleA( ih, &c, 1, &count, NULL) && (c != '\r') && (c != '\n')) { if (c == '\b') { if (result.length()) { WriteConsoleA( oh, "\b \b", 3, &count, NULL ); result.erase( result.end() -1 ); } } else { WriteConsoleA( oh, "*", 1, &count, NULL ); result.push_back( c ); } }
// Restore the console mode SetConsoleMode( ih, mode );
return result; }
int main() { try {
string password = getpassword( "Enter a test password> " ); cout << "\nYour password is " << password << endl;
} catch (exception& e) { cerr << e.what(); return 1; }
return 0; }
|
|
|
18
|
Programación / ASM / Re: getch propia para no usar getch de conio
|
en: 24 Agosto 2011, 18:39 pm
|
perdon pero el codigo ese de ms dos es de 16 bits segun dicen en la fuente, pero entiendo que compilandolo con visual studio que es un compilador de 32 bits va a funcionar este codigo?
de hecho asi como esta no funciona porque tira error de memoria, por eso decia .. en dicho caso , como se hace para que un codigo asi de 16 bits ande en 32 bits
|
|
|
19
|
Programación / ASM / getch propia para no usar getch de conio
|
en: 22 Agosto 2011, 01:30 am
|
este es un requerimiento, necesito esta funcion getch andando por favor, la parte principal esta en este lenguage que no entiendo, y encima lo debo estudiar ironicamente para mi uni, parecen 3 lineas pero no se que hacen y no anda, me tira error cuando la trato de usar. alguno puede arreglar esta funcion se lo agracederia unsigned char GETCH(void) { unsigned char key;
_asm {
start: mov ah,0 int 0x16 cmp al,0 je start ; don't process special keys mov key,al }
return key; }
|
|
|
20
|
Programación / Programación C/C++ / contraseña disimulada con *
|
en: 22 Agosto 2011, 01:23 am
|
hola q tal, este ejemplo lo saque de google, es sobre algo que estaba haciendo, estaba tratando de ocultar el ingreso de una clave por medio de convertir lo que se teclea en * (osea hasteriscos) no compila en codeblocks, pero compila en visual studio. lo que necesito que me ayuden es en la parte de _asm porque es una forma de evitar el uso de getch de conio y usar esamblador sino corresponde diganme que muevo el tema a el foro de ASM lo que pasa que tira error en esa parte #include <windows.h> #include <stdio.h>
typedef unsigned char tiny;
tiny GETCH(void);
int main(void) { tiny input; tiny *ptr; char password[20]; int count; system("cls"); // too lazy not to cheat here count = 0; printf("enter your password: "); do { input = GETCH(); if(input == '\xD') break; // enter pressed? putc('*', stdout); ptr = &input; password[count] = *ptr; count++; }while(count < 20); password[count++] = '\0'; // terminate the string printf("\nyour password: %s\n", password);
return 0; }
tiny GETCH(void) { tiny key;
_asm {
start: mov ah,0 int 0x16 cmp al,0 je start ; don't process special keys mov key,al }
return key; }
|
|
|
|
|
|
|