elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 [8] 9 10 11 12 13 14 15 16 17
71  Programación / Programación C/C++ / Re: Ayuda con un programa en: 3 Noviembre 2012, 15:43 pm
La idea de los ciclos para el control del programa es cosa tuya ya que es muy sencillo. Con referencia al algoritmo pues también.

Lo puedes resolver con ciclos anidados. La idea es la siguiente

Sea N el número que se quiere averiguar si es medio.

Sea S1 = Sumatorio desde 1 hasta N-1
Sea S2 = Sumatorio desde N+1 hasta m, con m siendo el término que hace que S2 >= S1.

Si S2 = S1, N es medio. Si S2 > S1, N no es medio.

Un poco de código chapuza:

Código
  1. #include <stdio.h>
  2.  
  3. int main (void) {
  4.  
  5.    int N = 6, i;
  6.    int sumaAntecesores = 0; // S1
  7.    int sumaPredecesores = 0; // S2
  8.  
  9.    for (i=1; i<N; i++) sumaAntecesores += i;
  10.  
  11.    while (sumaPredecesores < sumaAntecesores) sumaPredecesores += ++N;
  12.  
  13.    printf("%d\n", (sumaAntecesores == sumaPredecesores ? 1 : 0));
  14.  
  15.    return 0;
  16. }

Ahí hago el proceso iterativo para verificar si un número N es medio o no.

En tu caso N varía entre 1 y una MACRO de tamaño máximo, por ejemplo, el tamaño aceptado por la máquina. O usar un while (true) {}, teniendo una variable que recorra los Z+ y de la cual averiguaremos si es medio o no en cada iteración.

Para mejorar el proceso podrías llevar sumas parciales en el proceso...

Aunque el algoritmo de leosansan es mucho más eficiente.
72  Programación / Programación C/C++ / Re: time() localtime() en: 3 Noviembre 2012, 13:17 pm
Sep, En CodeBlocks con el GCC funciona aunque hay que liberar la memoria de fecha xD

Compilando con gcc desde consola te debería de ir igual :]
73  Programación / Programación C/C++ / Re: ayuda con programa en: 3 Noviembre 2012, 13:07 pm
Esto debería ser algo así:
Código
  1. if( isdigit(c) ) {
  2.     digitos ++;
  3. } else {
  4.     cout  << "Error: no acepta negativos" <<endl;
  5. }

Sería mejor mandar un perror()... por ejemplo.
74  Programación / Programación C/C++ / Re: ayuda con programa en: 2 Noviembre 2012, 17:13 pm
else if (condición)
75  Programación / Programación C/C++ / Re: Programa en C no termina bien el ciclo en: 2 Noviembre 2012, 13:45 pm
Disculpa, pero creo que no es bueno escoger a un número como centinela. Tu programa ya está restringido a no poder utilizar ese valor de temperatura.

Entonces habría que hacer un array de strings y conversiones, etc, etc. A tu elección.

Por lo otro, Caster tiene razón. A menos que el usuario introduzca un número en el rango [-oo, -460), el ciclo continuará.
76  Programación / Programación C/C++ / Re: Detectar si un numero es entero o no en: 2 Noviembre 2012, 13:37 pm
Claro, es de un ejercicio que me pide a partir de un numero de segundos saber si son minutos, horas, y dias exactos. Aunque tu ejemplo no lo entiendo, porque busque en google la funcion floor pero no termino de entender lo que hace.

Saludos

Disculpa, mi código no tiene nada que ver con tu pregunta. Error mío.

http://www.cplusplus.com/reference/clibrary/cmath/floor/

Código
  1. /* floor example */
  2. #include <stdio.h>
  3. #include <math.h>
  4.  
  5. int main ()
  6. {
  7.  printf ("floor of 2.3 is %.1lf\n", floor (2.3) );
  8.  printf ("floor of 3.8 is %.1lf\n", floor (3.8) );
  9.  printf ("floor of -2.3 is %.1lf\n", floor (-2.3) );
  10.  printf ("floor of -3.8 is %.1lf\n", floor (-3.8) );
  11.  return 0;
  12. }

Cita de: Salida
floor of 2.3 is 2.0
floor of 3.8 is 3.0
floor of -2.3 is -3.0
floor of -3.8 is -4.0
77  Programación / Programación C/C++ / Re: Detectar si un numero es entero o no en: 2 Noviembre 2012, 13:23 pm
El título del tema es "Detectar si un numero es entero o no"

¿Por qué segundos, minutos, horas? What? xD

Código
  1. #include <stdio.h>
  2. #include <math.h>
  3.  
  4. int main (void) {
  5.  
  6.    double x = 2.16;
  7.    double y = 5.;
  8.  
  9.    puts ( ((x-floor(fabs(x))) == 0.) ? "Entero" : "Decimal" );
  10.  
  11.    puts ( ((y-floor(fabs(y))) == 0.) ? "Entero" : "Decimal" );
  12.  
  13.    return 0;
  14. }
  15.  

Edito: Ah, número entero de segundos, minutos etc con aritmética modular. Perdón.

¡Saludos!

Edito2: Por cierto, ¿has probado el operador % con números suficientemente grandes? No estoy seguro pero pordría no funcionarte. Y posiblemente en las librerías que has incluido haya una función que calcule el módulo de un número entre otro.
78  Programación / Programación C/C++ / Re: ¿Cómo determinar que sólo acepte 8 dígitos? en: 2 Noviembre 2012, 13:17 pm

Eso o hacerte una funcioncica con un array (porque creo que no hay el tipo conjunto predefinido en c++). Así no tendrías que incluir otra librería :P
79  Programación / Programación C/C++ / Re: quisiera q me dijeran como esta esta funcion recursiva en: 2 Noviembre 2012, 03:05 am
Post duplicado. No se entiende tu pregunta y siempre andas pegando el mismo código, sin leer las respuestas.

Por otra parte, en ese código, si la entrada n != 0, entonces la recursividad nunca termina . Si la función recibe como entrada 0, entonces devolverá 0.

Por Dios. Luego llamas a la función con un argumento, cuando recibe dos parámetros...

Cerrar post y reportar (?)

Edito: y ban permanente.
80  Programación / Programación C/C++ / Re: problema accion en: 1 Noviembre 2012, 22:49 pm
Para empezar, debes leer las reglas del foro antes de publicar cualquier mensaje ;)

Acostumbra a encerrar tu código entre [ code = lenguaje ] y [ / code ] (sin espacios).

El error es porque no tienes ningún main. Por tanto al iniciarse el programa no sabe a donde ir.

También decir que no siempre es necesario incluir main (por ejemplo al crear librerías).

Pero al compilar tu programa el IDE trata de buscar algún main, por eso "referencia indefinida a WinMain@16".

Prueba a poner a usar un main o utiliza ese archivo como include para otro archivo principal.

Edito.

Los parámetros por referencia se reciben como * parámetro, no como & parámetro.

Así podría quedar tu código:

Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int inverso(int n)
  6. {
  7.    int i,d;
  8.    i=0;
  9.    while(n>=10){
  10.        d=n%10;
  11.        n=n/10;
  12.        i=i*10+d;
  13.    }
  14.    i=i*10+n;
  15.    return i;
  16.  
  17. }
  18.  
  19. int main () {
  20.    int n;
  21.    cout << "INTRODUCE UN NUMERO:" << endl;
  22.    cin>>n;
  23.  
  24.    cout<< "EL INVERSO ES : "<<inverso(n)<<endl;
  25.  
  26.    return 0;
  27. }
  28.  
  29.  

Fíjate siempre bien en qué quieres hacer. Yo esa función la programaría simplemente para hallar el inverso. Lo de petición de datos y mostrar mensajitos lo haría en el main o en otra función a parte.
Páginas: 1 2 3 4 5 6 7 [8] 9 10 11 12 13 14 15 16 17
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines