Nuevas NORMAS para el foro

Curso Hacker
Bienvenido(a), Visitante. Favor de ingresar o registrarse.
¿Perdiste tu email de activación? - Agosto 29, 2008, 01:15:28
Boton Buscar
Inicio Ayuda Ingresar Registrarse
Visita: Articulos - Juegos Gratis - Da Foros

Comunidad Underground Hispana  |  Programacion  |  Programación  |  Carbide C/C#/C++  |  Tema: Ejercicios C++ 2 0 Usuarios y 1 Visitante están viendo este tema. « anterior próximo »
Páginas: [1] 2 Ir Abajo Imprimir
Autor Tema: Ejercicios C++ 2  (Leído 1557 veces)
lann
Habitual
*****
Desconectado Desconectado

Mensajes: 309


maamamma

migue1990@gmail.com
Ver Perfil Email
« en: Julio 25, 2007, 07:28:45 »

si estos temas de alguna manera parecen spam o algo asi pues me avisan =P
habia puesto un ejercicio sobre declaraciones de control aqui hay unos sobre funciones y arrays.

*(Digitos al reves) Escribe una funcion que tome un numero entero y regrese el numero con sus digitos al reves. Por ejemplo, dado el numero 7631, la funcion debe regresar 1367.Esta funcion esta bastante facil.

*(Encontrar el minimo valor en un array) Escribir una funcion recursiva recursiveMinimum que tome un array de numeros enteros, un subindice para empezar y un subindice para terminar como argumentos, y regrese el menor elemento del array. La funcion debe parar y regresar cuando el subindice para empezar sea igual al subindice para terminar.

es decir

int main()               
{                       
    int array[ 8 ] = { 0, 2, 3, 8, 1, 6, 5, 9 };
    cout << recursiveMinimum( array, 3, 5 );
   return 0;
}

regresara 1

« Última modificación: Julio 25, 2007, 07:31:27 por lann » En línea

am
Alma De Dark
Visitante
« Respuesta #1 en: Julio 26, 2007, 07:38:37 »


*(Digitos al reves) Escribe una funcion que tome un numero entero y regrese el numero con sus digitos al reves. Por ejemplo, dado el numero 7631, la funcion debe regresar 1367.Esta funcion esta bastante facil.



#include <stdio.h>
#include <stdlib.h>

void lea_cadena(char a[]);

int main()
{
 char numero[256];
 printf("Escribe un numero entero Tongue: ");
 lea_cadena(numero);
 strrev(numero);
 printf("\nEl numero al reves es Tongue: %s",numero);
 getch();
}

void lea_cadena(char a[])
{
 fgets(a,256,stdin);
 a[strlen(a)-1]='\0';
}


ahi esta  Shocked Shocked Shocked
En línea
Micki Qwerty
Visitante
« Respuesta #2 en: Julio 26, 2007, 08:57:46 »

Y dale con manejar strings en lugar de numeros... y con usar memoria estatica...
« Última modificación: Julio 26, 2007, 08:59:49 por Scofield » En línea
FreakMind
Habitual
*****
Desconectado Desconectado

Mensajes: 181



Ver Perfil
« Respuesta #3 en: Julio 26, 2007, 09:20:08 »

Buenas

Crei que el "ejercicio" era mostrar como uno haria la funcion, no como la invocaria en el main.


Salu2, FreakMind
En línea

Connoisseurs of C semantics find C++ inferior to ++C

Alma De Dark
Visitante
« Respuesta #4 en: Julio 26, 2007, 10:27:38 »

Buenas

Crei que el "ejercicio" era mostrar como uno haria la funcion, no como la invocaria en el main.


Salu2, FreakMind

juassssssss  Grin Grin Grin no habia leido bien  Grin Grin Grin

eso me pasa por no leer  Tongue Tongue Tongue
En línea
lann
Habitual
*****
Desconectado Desconectado

Mensajes: 309


maamamma

migue1990@gmail.com
Ver Perfil Email
« Respuesta #5 en: Julio 26, 2007, 09:48:27 »

utilizarla en main supongo que no tiene nada de malo, podemos aprender de como implementarla y como funciona, pero lo que pasa es que se pide que la funcion regrese un numero entero y tome un numero entero... i.e.  ( int reverseDigits( int ); )
Bueno un tip para
Citar
*(Digitos al reves) Escribe una funcion que tome un numero entero y regrese el numero con sus digitos al reves. Por ejemplo, dado el numero 7631, la funcion debe regresar 1367.Esta funcion esta bastante facil.
podrias usar el operador %

« Última modificación: Julio 26, 2007, 09:58:44 por lann » En línea

am
Kira & Eva :D
Habitual
*****
Desconectado Desconectado

Mensajes: 288


Senior Programmer


Ver Perfil Email
« Respuesta #6 en: Julio 27, 2007, 05:29:15 »

Y dale con manejar strings en lugar de numeros... y con usar memoria estatica...

Que exigente es mi niño!!!
En línea
Micki Qwerty
Visitante
« Respuesta #7 en: Julio 27, 2007, 07:35:36 »

Que pasa peque que no sabes hacerlo tu tampoco asi?  Grin
jajj bueno niña, besos
En línea
Kira & Eva :D
Habitual
*****
Desconectado Desconectado

Mensajes: 288


Senior Programmer


Ver Perfil Email
« Respuesta #8 en: Julio 28, 2007, 06:38:17 »

Es más que obvio que para aprobar mis estudios mis conocimientos fueron superiores a eso   Grin

Los retos se hacen cuando de vedad se consideran retos Scofield   Roll Eyes
« Última modificación: Julio 28, 2007, 06:39:47 por She-Devil » En línea
FreakMind
Habitual
*****
Desconectado Desconectado

Mensajes: 181



Ver Perfil
« Respuesta #9 en: Julio 29, 2007, 11:50:49 »

Buenas

Aca dejo algunas recomendaciones de ejercicios ya que estamos en esto:

1) Hacer una funcion que muestre los primeros N numeros primos.

2)Realizar una función que dada una matriz de chars de n x m y una posición inicial (x,y) que tiene una “I” en la matriz, encuentre el camino a la posición completada con una “S”, considerando que existen posiciones en la matriz, marcadas con “X” que representan “muros”, los cuales no se pueden traspasar.

3)Dada la sig estructura (una lista doblemente enlazada), escribir una funcion recursiva cuyo prototipo es void sort(struct nodo *), la cual ordene la lista y elimine las claves repetidas.
          struct nodo{
                    unsigned char          clave;
                    struct nodo              *prev;
                    struct nodo              *next;
                    struct dato               *datos;
          }

4) Decir que hace el siguiente codigo
Código:
void funcion(int *num, int b)
{
       int c, i, fin, aux;
       
       if(b < 1){
                for( i = 1, fin = b, c = num[0]; i < fin; i++){
                     if( c >= num[i]){
                            num[i - 1] = num[i];
                     }else{
                            aux = num[fin];
                            num[fin] = num[i];
                            num[i] = aux;
                            fin--;
                            i--;
                     }
                }
                num[i] = c;
                funcion(num, i);
                funcion(num + i, b);
       }
       return;
}

Bueno, espero que se entretengan un poco con esos ejercicios.

Salu2, FreakMind
« Última modificación: Julio 29, 2007, 12:55:42 por FreakMind » En línea

Connoisseurs of C semantics find C++ inferior to ++C

lann
Habitual
*****
Desconectado Desconectado

Mensajes: 309


maamamma

migue1990@gmail.com
Ver Perfil Email
« Respuesta #10 en: Julio 30, 2007, 09:19:06 »

bueno mi intencion era crear ejercicios sencillos y que luego fueran aumentando la dificultad ( o el uso de otras diferentes caracteristicas de c++, para practicar, pointers, herencia, loops, estructuras de control, recursividad, arrays... blah... ), en cada tema, poner algunos ejercicios y que publicaran las posibles soluciones o tansiquiera de los que son tan buenos programandos y no publican las soluciones a estos sencillos ejercicios por que alomejor daña su reputacion o alomejor no les dan chance a los principiantes... o solo por que el resolverlos no aumentara su gran conocimiento...
« Última modificación: Julio 30, 2007, 09:22:16 por lann » En línea

am
FreakMind
Habitual
*****
Desconectado Desconectado

Mensajes: 181



Ver Perfil
« Respuesta #11 en: Julio 31, 2007, 11:21:25 »

Buenas

Bueno no crei que estos ejercicios fueran TAN dificiles.
El de los numeros primos es el mas complicado porque hay que pensar un poco mas.
Pero lo del laberinto es recursividad simple (con simple quiero decir nada como recursividad donde 2 funciones se llaman mutuamente) y lo de la lista pasa lo mismo. Ni siquiera necesitas incluir ningun .h .

Aca va otro ejercicio si quieren mas "sencillo".

Salu2, FreakMind

Ejercicio:
      Recorrer un arbol binario con una funcion recursiva en post-orden, in-order y pre-orden
« Última modificación: Julio 31, 2007, 11:28:39 por FreakMind » En línea

Connoisseurs of C semantics find C++ inferior to ++C

lann
Habitual
*****
Desconectado Desconectado

Mensajes: 309


maamamma

migue1990@gmail.com
Ver Perfil Email
« Respuesta #12 en: Agosto 01, 2007, 04:18:46 »

FreakMind mi comentario sobre la dificultad de los ejercicios no fue por la publicacion de tus ejercicios, ( fue un comentario sarcastico sobre que las personas no resolvian mis ejercicios por lo simple que eran, alomejor me di a entender mal =P ) solo decia que mi intesion era que publicaran opiniones o la solucion sobre estos ejercicios y que iria publicando ejercicios sencillos, etc, ...pero incluso ese comentario no era para ti... bueno no lo hice por haber visto tus ejercicios... como pienso que tu pensaste D=

pero ok

pues tengo esta funcion

bool prime( int num )
{
    if(  num == 1 || num == 0 )
    return false;

    int n = num;
    int count = 0;
    for( int i = 0; i < num; i++ )
    {
        n = num - i;
        if( num % n == 0 )
        count++;
    }

    if( count > 2 )
    return false;
    else if( count == 2 )
    return true;
}

supongo que a de funcionar
« Última modificación: Agosto 04, 2007, 04:02:43 por lann » En línea

am
FreakMind
Habitual
*****
Desconectado Desconectado

Mensajes: 181



Ver Perfil
« Respuesta #13 en: Agosto 01, 2007, 10:22:58 »

Buenas

La funcion esta relativamente bien porque dado un numero num te dice si es primo o no. Lo que el ejercicio pedia era que des los primeros N numeros primos

PD: Tu funcion no contempla el 0 ni el 1 que tambien son primos

Salu2, FreakMind
En línea

Connoisseurs of C semantics find C++ inferior to ++C

FreakMind
Habitual
*****
Desconectado Desconectado

Mensajes: 181



Ver Perfil
« Respuesta #14 en: Agosto 03, 2007, 11:41:35 »

Buenas

Que pasa? Nadie mas se anima a hacer ninguno? Vamos... son faciles

Salu2, FreakMind
En línea

Connoisseurs of C semantics find C++ inferior to ++C

D-Lor
Miembro
*****
Desconectado Desconectado

Mensajes: 84


Ver Perfil
« Respuesta #15 en: Agosto 03, 2007, 06:52:40 »

void Primos(int N)
{
    int num = N;
    int primo = 0;
       
    cout << "Numero" << "  " << "Primo?\n" << endl;
    for(int x = 0; x <= num; x++){
            for( int y = 0; y < x; y++ )
                 if( (x % (x-y)) == 0 )
                     primo++; 
                               
            if(primo == 2)         
                cout <<  x << "        "    << "yep\n";
            else
                cout << x << "        " << "nel\n";
               
            primo = 0;
                }   
}
En línea
FreakMind
Habitual
*****
Desconectado Desconectado

Mensajes: 181



Ver Perfil
« Respuesta #16 en: Agosto 04, 2007, 01:44:07 »

Buenas...

Pues la verdad parece el codigo de Iann pero con un for extra Tongue

Aca va el codigo que pense. Dos formas: una dinamica y otra estatica por decirlo de alguna manera

Forma estatica:
Código:
#define N 1000

void primos(void)
{
    register int i = 2; j;
    unsigned int flags[N] = {0};

    for(; i < N ; ++i){
        if(!flags[i]){
            for(j = i + i; j < N; j += i)
                flags[j] = 1;
        }

    }

    for(i = 2; i < N; i++){
        if(!flags[i])
            printf("[%d] ", i);
    }

    return;
}

Forma dinamica:
Código:
void primos(int n)
{
    register int i = 2; j;
    unsigned int *flags;

    if(!(flags = (unsigned int *) calloc(sizeof(int), n)))
        return;

    for(; i < n ; ++i){
        if(!flags[i]){
            for(j = i + i; j < n; j += i)
                flags[j] = 1;
        }
    }

    for(i = 2; i < n; i++
        if(!flags[i])
            printf("[%d] ", i);
    }

    free(flags);

    return;
}



Salu2, Diego
« Última modificación: Agosto 05, 2007, 10:45:52 por FreakMind » En línea

Connoisseurs of C semantics find C++ inferior to ++C

lann
Habitual
*****
Desconectado Desconectado

Mensajes: 309


maamamma

migue1990@gmail.com
Ver Perfil Email
« Respuesta #17 en: Agosto 04, 2007, 03:49:21 »

bueno freakmind en wikipedia dice

El conjunto de los números primos es un subconjunto de los números naturales que engloba a todos los elementos de este conjunto que son divisibles unicamente por dos números enteros positivos. Los veinte primeros números primos son: 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67 y 71.


Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion

aqui tambien dice que no lo son


Para ver los enlaces debes ser usuario Crear Usuario o Hacer Sesion

y no es por alardear o lo que sea ( de hecho no estoy seguro que es alardear =p) pero mi funcion que regresa true o false la concidero mejor, por lo reusable, sencilla, reusable por que podria ser implementada en cualquier funcion ( creo ) que trate de numeros primos, puesto que sabes si el numero que manejas es o no es primo, no solo imprime un mensaje en la salida standard, podria ser usada como en el ejercicio que pusiste asi como lo que dices que con un for se podria, pero pues bueno el ejercicio era mostrar los primeros n numeros primos =p

aver nadie a resuelto mis ejercicios =P!
« Última modificación: Agosto 04, 2007, 04:04:39 por lann » En línea

am
FreakMind
Habitual
*****
Desconectado Desconectado

Mensajes: 181



Ver Perfil
« Respuesta #18 en: Agosto 04, 2007, 05:57:46 »

Buenas.

Iann, yo nunca dije que tu funcion fuera mejor o peor que la mia. Solo dije 2 cosas: 1) que no era lo que el ejercicio pedia y 2) que no contemplaba el 0 y el 1.

Por otro lado, si quieres saber cual es la mejor, por lo pronto puedes ver cuanto tarda cada funcion en encontrar e imprimir los primeros ... em digamos por ejemplo 10.000 numeros primos  y despues me cuentas.

Para hacerlo tenes que usar la funcion clock_t clock(void); de time.h ...

Salu2, FreakMind
En línea

Connoisseurs of C semantics find C++ inferior to ++C

lann
Habitual
*****
Desconectado Desconectado

Mensajes: 309


maamamma

migue1990@gmail.com
Ver Perfil Email
« Respuesta #19 en: Agosto 04, 2007, 07:59:01 »

es una L no una I...

yo nunca dije que tu dijieras que tu funcion es mejor o peor que la mia...

y bueno, ya dije por que pienso que es mejor, no me referia al rendimiento, pero dije que era reusable y sencillo,  y si dijiste que no contemplaba el 1 y el 0 y que son primos...

bueno, solo fue una opinion de que esa funcion es mejor... resuelve un trabajo pequeño y puede ser usada para realizar otras funciones que tengan que ver con numeros primos...
En línea

am
FreakMind
Habitual
*****
Desconectado Desconectado

Mensajes: 181



Ver Perfil
« Respuesta #20 en: Agosto 05, 2007, 09:24:46 »

Buenas

A ver, seguramente tu funcion es reutilizable y todo lo que quieras, pero el ejercicio no era hacer una funcion reutilizable que dijiera si un numero es o no primo. Solo eso digo

PD: Lo del 0 fue una aberracion mia por pensar que existe la division por 0  terco , pero sinceramente pensaba que el 1 si era primo (como un caso particular) .. my bad

Y como respuesta a uno de tus ejercicios, pense algo asi:
Código:
int minimo(int v[], int a, int b)
{
     int    aux;

     if( a < b){
          aux = minimo(v, a + 1, b);
          if(v[a] <= aux)
              return v[a];
          else
              return aux;
     }

     return v[a];
}

Salu2, FreakMind
« Última modificación: Agosto 05, 2007, 10:42:15 por FreakMind » En línea

Connoisseurs of C semantics find C++ inferior to ++C

lann
Habitual
*****
Desconectado Desconectado

Mensajes: 309


maamamma

migue1990@gmail.com
Ver Perfil Email
« Respuesta #21 en: Agosto 05, 2007, 10:04:28 »

bueno bueno...

la funcion que puse dije que podria servir... no especifique pero me referia en la solucion de tu ejercicio...
y a tu solucion yo lo habia solucionado asi...


Código:
int recursiveMinimum( int array[], int staSub, int endSub )
{
    if( staSub == endSub )
    return array[ endSub ];

    else
    {
        if( array[ staSub ] < array[ endSub ] )
        array[ endSub ] = array[ staSub ];

        return recursiveMinimum( array, staSub + 1, endSub );
    }
}

bueno alomejor opiniones de cual es la mejor solucion no es buena idea ya que se pueden molestar
En línea

am
FreakMind
Habitual
*****
Desconectado Desconectado

Mensajes: 181



Ver Perfil
« Respuesta #22 en: Agosto 06, 2007, 08:31:30 »

Buenas.

Supongo que debe funcionar. Te fijaste que no destruya info de la pos endSub del array?

PD: Si queres decir cual es mejor o peor decilo... a mi no me jode  Cool

Salu2, FreakMind

En línea

Connoisseurs of C semantics find C++ inferior to ++C

Kira & Eva :D
Habitual
*****
Desconectado Desconectado

Mensajes: 288


Senior Programmer


Ver Perfil Email
« Respuesta #23 en: Agosto 06, 2007, 10:53:40 »

Hay que ver que estilazo tienes FreakMind
En línea
FreakMind
Habitual
*****
Desconectado Desconectado

Mensajes: 181



Ver Perfil
« Respuesta #24 en: Agosto 06, 2007, 04:44:36 »

Buenas
Hay que ver que estilazo tienes FreakMind

Lo tomo como un cumplido asi que gracias...

Por cierto, resolucion de el otro ejercicio de Iann:
Código:
int reverse(int n)
{
    int    i = 0, aux = n;

    if( n / 10){
        while(aux /= 10)
            i++;

        return ( n % 10 * (int)pow(10, i) ) + reverse(n / 10);
    }

    return n % 10;
}

Salu2, FreakMind
« Última modificación: Agosto 06, 2007, 07:59:04 por FreakMind » En línea

Connoisseurs of C semantics find C++ inferior to ++C

Páginas: [1] 2 Ir Arriba Imprimir 
Comunidad Underground Hispana  |  Programacion  |  Programación  |  Carbide C/C#/C++  |  Tema: Ejercicios C++ 2 « anterior próximo »
Ir a:  


Ranking-Hits
Powered by SMF 1.1.5 | SMF © 2006-2007, Simple Machines LLC