Ejercicios Básicos

Iniciado por Myth.ck, 14 Mayo 2009, 03:41 AM

0 Miembros y 2 Visitantes están viendo este tema.

Myth.ck

¿Como resolverian los siguientes ejercicios?

A través de pseudocódigo o c++.

Problema 1: Dado un número natural K, mostrar los dos primeros naturales consecutivos A y B tales que A! y B! tengan una cantidad de dígitos que se diferencian al menos en K.

Problema 2: Dado un número natural K, mostrar los dos naturales consecutivos A y B tales que K €[A!,B!]

Suerte!

Jeje el € es el símbolo de pertenece.

Un ejemplo de pseudocódigo que hice:
Dado un número natural K, y un número natural F, mostrar el resultado de
(P-Q) mientras sea menor que K, donde:
P=(-1)E*E*F
Q=(-1)E+1*(E+1)*F
E = 0, 1, ...



Un intelectual es un hombre que usa más palabras de las necesarias para decir más cosas de las que sabe.

Myth.ck

Como ayuda...

Problema 1:

E: K. Cond. sobre E: K es natural.
S: A y B.   Cond. sobre S: |A!-B!|>=K, A y B son consecutivos, AyB son los menores.
Caso de prueba:
CP1) Entrada: K=5 Salida: A=2, B=3.
CP2) Entrada: K=4 Salida: A=2, B=3.

Problema2:
E: K.Cond. sobre E: K es natural.
S: A y B.   
Cond. sobre S: A y B son consecutivos. K €[A!,B!].
Casos de Prueba:
CP1) Entrada: K=5 Salida: A=2, B=3.
CP2) ) Entrada: K=2 Salida: A=2, B=3.

Espero que les ayude en algo.


Un intelectual es un hombre que usa más palabras de las necesarias para decir más cosas de las que sabe.

Myth.ck

Parece que nadie se anima:

Miren una posible solución al ejercicio nº 1

Un intelectual es un hombre que usa más palabras de las necesarias para decir más cosas de las que sabe.

ny0x

Citardos naturales consecutivos A y B tales que K €[A!,B!]
(P-Q) mientras sea menor que K, donde:
P=(-1)E*E*F
Q=(-1)E+1*(E+1)*F
E = 0, 1, ...
WTF? demasiadas matematicas para mi cerebro  :P , a mi todavia no me enseñan calculo (creo que eso es) o si no si me animo  ;)

Myth.ck

Hola ny0X...

Si quieres puedes leerte esto...

http://foro.elhacker.net/programacion_general/algoritmia_metodos_para_resolucion_de_problemas-t254890.0.html

CitarProblema 1:
E: K. Cond. sobre E: K es natural.
S: A y B.   Cond. sobre S: |A!-B!|>=K, A y B son consecutivos, AyB son los menores.
Caso de prueba:
CP1) Entrada: K=5 Salida: A=2, B=3.
CP2) Entrada: K=4 Salida: A=2, B=3.

Los numeros naturales son todos los numeros mayores a 0 y que son enteros. En realidad son los que usamos para contar... 1,2,3,4...999...2560...

Luego Tu salida tiene que ser A y B al menos con diferencia igual a K con a y b consecutivos

La diferencia de estos siempre es positiva...

CitarEj:
A=1(primer numero natural) B=A+1=>B=2
A=1 B=2
El factorial se calcula por ejemplo 1!= 1x1 y 2!=2x1
A!-B!=1-2=-1 pero con |-1| el -1 se hace "1"=> A!-B!=1

Con respecto a

(P-Q) mientras sea menor que K, donde:
P=(-1)E*E*F
Q=(-1)E+1*(E+1)*F
E = 0, 1, ...

P-Q es una simple resta.
a la variable P se le asigna la expresion (-1)E*E*F
a la variable Q se le asigna la expresion (-1)E+1*(E+1)*F

Luego E=0,1,2 indica que E ira incrementando, por lo tanto ahi te das la idea que es un contador.

Espero que te haya servido de ayuda. Puedes consultar cualquier cosa.

PD: Para resolver estos problemas, siempre es bueno identificar bien el problema, es decir, identificar los terminos que no conoces, y luego dar un caso de prueba, que generalmente es un "supuesto" resultado que esperas ver en la salida de tu programa.
Un intelectual es un hombre que usa más palabras de las necesarias para decir más cosas de las que sabe.

ny0x

lo que me confunde son los terminos, eso de numeros reales, naturales, conjunto no se que ...
en cuanto a la resolucion de problemas creo que lo lei en un libro de C++, creo que es la edicion especial de "El lenguaje de programacion c++" por bjarne stroupstrup. Ahi recomienda lo que tu dices, pero como cuando yo lei eso ya tenia el mal habito de escribir lo que se me ocurra sin planearlo antes. A causa de eso me he dado una de roturas de cabeza ...  :P. Pero bueh cuando aprendes solo no tienes muchas opciones, ni quien te guie  :-\
gracias, por los links saludos
P.D A practicar algoritmos ...  :¬¬

Myth.ck

Citarlo que me confunde son los terminos, eso de numeros reales, naturales, conjunto no se que ..
Reales, naturales, enteros... Son solo tipos de conjuntos.



Lo que tiene cada conjunto es que varían las propiedades de cada uno, y los "números" por decirlo así, que habitan en cada uno. Eso no es mucho problema, si todavía no tienes mucha idea solo basta con que trabajes unicamente con reales, cuyas propiedades son las que conoces, y los números incluyen los fraccionarios y enteros(+ y -).

Citaren cuanto a la resolucion de problemas creo que lo lei en un libro de C++
Mmm, yo lo saque de unos apuntes de algoritmia.

CitarPero bueh cuando aprendes solo no tienes muchas opciones, ni quien te guie .
Si te refieres sólo a eso de escribirlo en un papel, yo generalmente cuando me inicié, no tenía a nadie que me guíe, pero igualmente lo tomé como hábito cuando no entendía ciertas cosas.

Salu2!
Un intelectual es un hombre que usa más palabras de las necesarias para decir más cosas de las que sabe.

Myth.ck

Aqui un nuevo reto, espero que lo resuelvan rápido aplicando el mejor método.  :xD

Mostrar los k primeros numeros naturales que verifiquen la condicion de poseer una cantidad impar de divisores

Suerte!
Un intelectual es un hombre que usa más palabras de las necesarias para decir más cosas de las que sabe.

Myth.ck

Al parecer nadie se anima o parece que no es familiar este subf pero he aqui la respuesta.

Código (scheme) [Seleccionar]
{Mostrar los k primeros numeros naturales que verifiquen la condicion
de poseer una cantidad impar de divisores}
variables
  i,k,num son enteros;
  flag es logico;

inicio
  escribir "Ingrese k: ";
  leer k;
  i=1;
  num=0;
  flag=verdadero;
  mientras flag==verdadero hacer
    inicio
      si (i^1/2)==redondear(i^1/2) entonces
      inicio
        escribir i,"; ";
        num=num+1
      final;
      si num==k entonces
        flag=falso;
      i=i+1;
  final;   
final
Un intelectual es un hombre que usa más palabras de las necesarias para decir más cosas de las que sabe.

Myth.ck

En C++

Código (cpp) [Seleccionar]
#include <iostream>
#include <math.h>

using namespace std;

int k,num;
double i,result;
bool flag;

int main()
{
    i=1;
    num=0;
    flag=1;
    cout << "Ingrese numero" << endl;
    cin>>k;
    while (flag==1)
    {
        result=sqrt(i);
        if(result==((int)result))
        {
            cout<<i<<"; ";
            num++;
        }
        if(num==k)
        {
            flag=0;
        }
        i++;
    }
    system("PAUSE");
    return 0;
}
Un intelectual es un hombre que usa más palabras de las necesarias para decir más cosas de las que sabe.