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 - kutcher

#21
Excelente gracias por responder Blaster y rir3760 voy a probar los metódos que me proponieron

Saludos kutcher
#22
Buenas, quisiera saber algún método para detectar un posible desbordamiento de enteros al realizar una multiplicación de dos variables de tipo unsigned para asi almacenar con seguridad el resultado en otra, le estuve dando vueltas al asunto pero no encuentro como hacerlo

Saludos kutcher 
#23
Programación C/C++ / Re: Palindromo C++
23 Agosto 2014, 00:28 AM
Cita de: DarkMatrix en 23 Agosto 2014, 00:07 AM
Como el programa no tiene que distinguir entre mayusculas y minusculas, no importa como lo puse, fue para que se viera al invertir la palabra, la otra mitad no hace falta comprobarla ya que lo que hace el bucle es tomar la primera letra y cambiarla con la ultima, luego la segunda con la penultima, etc..., al llegar a la mitad ya se habran intercambiado todas las letras necesarias para saber si la palabra es palindroma, ya que si es asi la otra mitad sera igual a la ya intercambiada y la comparacion dara true, de lo contrario dara false.

Es verdad no me tome el tiempo de leerlo con detalle jaja

Saludos kutcher
#24
Programación C/C++ / Re: Palindromo C++
22 Agosto 2014, 23:40 PM
Cita de: DarkMatrix en 22 Agosto 2014, 23:26 PM
el segundo es en esta linea "while (palabra[q] < p)", deberia ser "while (q < p)"

El código es muy inconsistente al copiar directamente la palabra a la cadena copia no lograras comprobar si es o no palíndromo y con la condición del while dispuesta de es manera solo copiara la mitad de la palabra a la cadena destino

Saludos kutcher
#25
Programación C/C++ / Re: Palindromo C++
22 Agosto 2014, 23:24 PM
La función debería quedar mas o menos así:

Código (cpp) [Seleccionar]
bool Palindromo(char palabra[40])
{
    char copia[40];
    int q = 0, p;

    p = LongCad(palabra) - 1;

    while (palabra[q] != '\0')
    {
        copia[q] = palabra[p];
        q++, p--;
    }
    copia[q] = '\0';

    if (strcmp(palabra, copia) == 0)
        return true;
    else
        return false;
}


Y en la función LongCad debes retornar i no cero
#26
Buenas, abro este post para ir publicando una serie de retos a medida que vayan resolviendo los mismo, con el objetivo estimular a la comunidad a participar mediante la resolución de problemas que competen al mundo de la programación que tanto nos apasiona

RETO #1:

Los primeros dos números consecutivos para tener dos factores primos distintos son:

Código (cpp) [Seleccionar]
14 = 2 x 7
15 = 3 x 5


Los primeros tres números consecutivos para tener tres factores primos distintos son:

Código (cpp) [Seleccionar]
644 = 2² x 7 x 23
645 = 3 x 5 x 43
646 = 2 x 17 x 19.


Encuentra los primeros cuatro números enteros consecutivos para tener cuatro factores primos distintos. ¿Cuál es el primero de estos números?

Espero su participación
#27
Este intento de asignación:

Código (cpp) [Seleccionar]
a[i] = prome1(n, a);

Me parece redundante e inapropiado,  porque al retornar de la función prome1() ya tienes todos lo números pares almacenados en la cadena a no entiendo el propósito de la reasignación; y ademas usas como indice una variable local para retornar un valor de la cadena a lo cual es incorrecto la variable i puede tomar cualquier valor al salir de la función.

Un Saludo
#28
Creo que tu código debería quedar de esta manera:

Código (cpp) [Seleccionar]
int *fibo(int n, int *a);

int main(void)
{
    int a[100] = {0};
    int n = 0, i = 0;

    printf("\n\t\tNUMEROS PARES POSITIVOS\n\t\t");
    printf("\n\t\tIngrese el Numero de terminos de la serie:\n\t\t");
    scanf("%d",&n);
    printf("\n");

    fibo(n, a);

    for(i = 0; i < n; i++)
        printf("\n\t[%d]", a[i]);

    return 0;
}

int *fibo(int n, int *a)
{
    int i;
    printf("\n\tpresione una tecla para continuar");
    for (i = 0; i < n; i++)
        a[i] = (i + 1) * 2;

    return a;
}



Un Saludo
#29
Para ser un punto de silla debe cumplir una de estas dos condiciones:

1) Dentro de la fila son mínimos y dentro de la columna son máximos
2) Dentro de la fila son máximos y dentro de la columna son mínimos

En tu función solo verificas el primer punto si al generarse una matriz con estos elementos:

Código (cpp) [Seleccionar]
2, 5, 12,
3, 2, 25,
8, 1, 20


Donde en la fila 0 y columna 2 existe un punto de silla, el cual el programa no procesa

#30
Hago un aporte con otro método bastante rápido :

Código (cpp) [Seleccionar]
#include <iostream>
#include <cmath>
#include <vector>

#define MAXIMO 100000000

using namespace std;

bool es_primo[MAXIMO] = {0};
vector<int> primos;

void primo(int limite);
void cargarPrimos(int limite);

int main(void)
{
   primo(MAXIMO);
   //cargarPrimos(MAXIMO);

   return 0;
}

void cargarPrimos(int limite)
{
   primos.push_back(2);
   primos.push_back(3);

   for (int i = 5; i < limite; i++)
   {
       if (es_primo[i])
       {
           primos.push_back(i);
       }
   }
}
void primo(int limite)
{
   int raiz = ceil(sqrt(limite));

   for (int x = 1; x <= raiz; x++)
   {
      for (int y = 1; y <= raiz; y++)
      {
        int n = (4 * x * x) + (y * y);
        if (n <= limite && (n % 12 == 1 || n % 12 == 5))
           es_primo[n] = 1;
        n = (3 * x * x) + (y * y);
        if (n <= limite && n % 12 == 7)
           es_primo[n] = 1;
        n = (3 * x * x) - (y * y);
        if (x > y && n <= limite && n % 12 == 11)
           es_primo[n] = 1;
       }
   }
}