|
Mostrar Mensajes
|
Páginas: 1 [2] 3 4
|
11
|
Programación / Ejercicios / Re: Ejercicios con arrays
|
en: 5 Junio 2009, 06:01 am
|
¡¡¡Buenas!!! El algoritmo de euclides solo tiene que calcular el MCD de dos enteros, no tienes porque guardar los restos sucesivos a no ser que luego te pidan los coeficientes de la Identidad de Bezout. Te planteo dos soluciones, una iterativa y otra recursiva: Iterativa: int mcdEuclides(int a, int b) { int aux,resto; if(a<0) a*=-1; if(b<0) b*=-1; if(a<b) { aux=a; a=b; b=aux; } if(b==0) return a; do{ resto=a%b; a=b; b=resto; }while(b!=0); return a; }
y recursiva: int mcdEuclides(int a,int b) { int aux; if(a<0) a*=-1; if(b<0) b*=-1; if(a<b) { aux=a; a=b; b=aux; } if(b==0) return a; return mcdEuclides(b,a%b); }
Espero que os sea util. ¡¡¡Un saludo!!!
|
|
|
12
|
Seguridad Informática / Seguridad / Re: Nueva encuesta: Mejor Antivirus
|
en: 4 Junio 2009, 09:15 am
|
¡¡¡Buenas!!! Aunque vaya como una rata en formol, tengo que decir que odio el McAfee, porque en este momeno y cada vez que intento meterme en este foro (estoy en el ordenador de mi compañero de piso), me dice que este foro es cosa mala, y no termino de creermelo, yo creo que le tiene envidia (GForce II) juas, que chiste mas malo.  ¡¡Un saludo a todo el mundo!!
|
|
|
15
|
Programación / Ingeniería Inversa / ¿Como es un ejecutable?
|
en: 29 Mayo 2009, 00:46 am
|
Bueno, ahi va la idea, es mas una proposicion al moderador, que una pregunta directa.
Esta bien para los que nos iniciamos en el cracking, empezar con ejemplos, ver como donde se ponen breackpoints en saltos, mensajes, apis, memoria... para ir llegando a donde nos interesa, pero me parece que tambien estaria bien, aunque sea por culturilla (no se si guardara relacion con el tema), saber con que estamos tratando.
es decir, lo que es un ejecutable, que partes tiene, como funcionan...
Igual es mucho pedir o es demasiada informacion o lo mismo no apete hacerlo, o no viene cuento, o por cualquier otra cosa no se hace, pero pienso que estaria bien entender con que estamos tratando.
¡¡¡Un saludo!!!
|
|
|
18
|
Programación / Ejercicios / Re: Ejercicios Básicos
|
en: 28 Mayo 2009, 09:27 am
|
Ahi va la solucion: #include <stdio.h> #include <stdlib.h> #include <string.h> int main(int argc,char* argv[]) { unsigned long fact1=1,fact2=1,i=1; char num1[50],num2[50]; int difCifras; /*no creo que un unsigned long tenga tantas cifras :P*/ do{ printf("Introduce la diferencia de cifras entre dos factoriales consecutivos: "); }while(difCifras<0); do{ fact1*=i; fact2=fact1*(i+1); i++; if(i==13) /*13! excede la capacidad de un usigned long*/ break; i--; if(i!=12) printf("%d! y %d! se diferencian en %d cifras\n" "%d!=%lu\n" "%d!=%lu\n",i,i+1,difCifras,i,fact1,i+1,fact2); else printf("No se dispone de tanta capacidad de calculo.\n"); return 0; }
Espero que sirva de algo!! Un saludo!!!!!
|
|
|
19
|
Programación / Ejercicios / Re: Ejercicios Básicos
|
en: 28 Mayo 2009, 08:46 am
|
Huy, vaya rayada con el primer problema. jejejeje. Lo he entendido y mal y lo he puesto patas arriba.  A ver si lo corrijo qu la solucion no es tan matematica 
|
|
|
20
|
Programación / Ejercicios / Re: necesito saber como ingresar 1 nº entero >0 y <=100 luego contar sus digitos....
|
en: 28 Mayo 2009, 08:24 am
|
Y aun otra forma mas divertida de hacerlo: #include <stdio.h> #include <stdlib.h> #define MAX 10000 struct NodoEntero { unsigned char cifra; NodoEntero* Enlace; }; typedef struct NodoEntero NodoEntero; typedef NodoEntero* ptrNodoEntero; void push(ptrNodoEntero* Base,unsigned char valor); unsigned char pop(ptrNodoEntero*); char pila_vacia(ptrNodoEntero); int main(int argc,char* argv[]) { int numero,numcifras=0,potenciaDiez=1; ptrNodoEntero basePila=NULL; do{ printf("Introduce un numero entre 1 y %d (ambos incluidos): ",MAX ); }while(numero<0 || numero>MAX); do{ push(&basePila,numero%10); numero/=10; numcifras++; }while(numero!=0); printf("El numero tiene %d cifras\n",numcifras ); do{ numero += potenciaDiez * pop(&basePila); potenciaDiez*=10; }while(!pila_vacia(basePila)); printf("El numero invertido es: %d\n",numero ); } void push(ptrNodoEntero* Base,unsigned char valor) { ptrNodoEntero NuevoNodo; NuevoNodo =(NodoEntero *)malloc(sizeof(NodoEntero )); NuevoNodo->cifra=valor; NuevoNodo->Enlace=(*Base); (*Base)=NuevoNodo; } unsigned char pop(ptrNodoEntero* Base) { ptrNodoEntero Aux; unsigned char ret; Aux=(*Base); ret=(*Base)->cifra; (*Base)=(*Base)->Enlace; return ret; } char pila_vacia(ptrNodoEntero Base) { return (Base==NULL ? 1 : 0); }
Jejeje, a ver si cae otra forma.... ¿Se nota que me aburro? Un saludo!!!!!!!!!!!!!
|
|
|
|
|
|
|