Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - BatchianoISpyxolo

#71
Programación C/C++ / Re: Ayuda con un programa
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:

#include <stdio.h>

int main (void) {

   int N = 6, i;
   int sumaAntecesores = 0; // S1
   int sumaPredecesores = 0; // S2

   for (i=1; i<N; i++) sumaAntecesores += i;

   while (sumaPredecesores < sumaAntecesores) sumaPredecesores += ++N;

   printf("%d\n", (sumaAntecesores == sumaPredecesores ? 1 : 0));

   return 0;
}


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 C/C++ / Re: time() localtime()
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 C/C++ / Re: ayuda con programa
3 Noviembre 2012, 13:07 PM
Cita de: Beakman en  3 Noviembre 2012, 04:21 AM
Esto debería ser algo así:
Código (cpp) [Seleccionar]
if( isdigit(c) ) {
    digitos ++;
} else {
    cout  << "Error: no acepta negativos" <<endl;
}


Sería mejor mandar un perror()... por ejemplo.
#74
Programación C/C++ / Re: ayuda con programa
2 Noviembre 2012, 17:13 PM
else if (condición)
#75
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
Cita de: Caster en  2 Noviembre 2012, 13:32 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/

/* floor example */
#include <stdio.h>
#include <math.h>

int main ()
{
 printf ("floor of 2.3 is %.1lf\n", floor (2.3) );
 printf ("floor of 3.8 is %.1lf\n", floor (3.8) );
 printf ("floor of -2.3 is %.1lf\n", floor (-2.3) );
 printf ("floor of -3.8 is %.1lf\n", floor (-3.8) );
 return 0;
}


Cita de: Salidafloor 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
El título del tema es "Detectar si un numero es entero o no"

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

#include <stdio.h>
#include <math.h>

int main (void) {

   double x = 2.16;
   double y = 5.;

   puts ( ((x-floor(fabs(x))) == 0.) ? "Entero" : "Decimal" );

   puts ( ((y-floor(fabs(y))) == 0.) ? "Entero" : "Decimal" );

   return 0;
}


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
Cita de: leosansan en  2 Noviembre 2012, 13:15 PM
http://www.cplusplus.com/reference/clibrary/cctype/isdigit/

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
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 C/C++ / Re: problema accion
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:

#include <iostream>

using namespace std;

int inverso(int n)
{
    int i,d;
    i=0;
    while(n>=10){
        d=n%10;
        n=n/10;
        i=i*10+d;
    }
    i=i*10+n;
    return i;

}

int main () {
    int n;
    cout << "INTRODUCE UN NUMERO:" << endl;
    cin>>n;

    cout<< "EL INVERSO ES : "<<inverso(n)<<endl;

    return 0;
}



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.