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

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


  Mostrar Temas
Páginas: [1] 2 3
1  Programación / Programación General / [LISP] Necesito ayuda para programar en Lisp en: 10 Mayo 2014, 05:32 am
Dentro del curso es aprender Lisp, pero el lenguaje fue propuesto, es decir, tengo que investigarlo y exponerlo en una presentación.

Por ahora, solamente me he propuesto empezar desde lo mas sencillo, con la ayuda de la pagina "compileonline" para ver mis resultados, por lo que ahora lo único que quiero hacer es un programa que resuelva las 4 operaciones básicas matemáticas, como lo es la suma, resta, multiplicación y división, me ha costado un poco por que es muy difícil encontrar información de LISP y aún más en español.

Mi gran problema es el uso de funciones, me gustaría poder imprimir por pantalla los resultados que devuelven las funciones, o sea, en una funcion se hace una operación matemática, y este lo devuelve para que pueda ser desplegada por pantalla, pero no puedo lograrlo, no lo encuentro como si fuera Java o C++ donde tengo experiencia, en Lisp no puedo entender aún el uso de las funciones.

Bueno, directo al grano, pondré mi código, lo que yo espero de mi programa es que pueda imprimir por pantalla los resultados de las operaciones básicas, algo que no puedo lograr aún.
También pondré lo que sala en la pantalla de consola.

Código
  1. ;Este programa prueba las 4 operaciones matematicas basicas, utilizando ademas
  2. ;seleccian de variables y funciones.
  3.  
  4. ;Asignando valores enteros a las variables X e Y.
  5. (defvar x 5)
  6. (defvar y 10)
  7.  
  8. ;Definiendo las funciones.
  9. (defun saludar() (write-line "Bienvenidos a mi programa.")) ;Saluda al usuario.
  10. (defun instruir() (write-line "Mi programa calcula las 4 operaciones matematicas.")) ;Explica al usuario de que trata el programa.
  11. (defun espaciar() (write-line "") (write-line "")) ;Crea espaciado en el texto.
  12. (defun despedirse() (write-line "Hasta pronto!"))
  13. (defun valordeX() (write-line "El valor de X es: 10"))
  14. (defun valordeY() (write-line "El valor de Y es: 5"))
  15. (defun sumar(x y) (+ x y))
  16. (defun restar(x y) (- x y))
  17. (defun multiplicar(x y) (* x y))
  18. (defun dividir(x y) (/ x y))
  19.  
  20. ;Iniciando el programa con un saludo al usuario.
  21.  
  22. (saludar)
  23. (espaciar)
  24. (instruir)
  25. (espaciar)
  26. (valordeX)
  27. (valordeY)
  28. (espaciar)
  29.  
  30. ;Resolviendo las 4 operaciones matematicas basicas.
  31.  
  32. (write-line "La suma de los 2 numeros es: ")
  33. (print (sumar (x y)))
  34. (espaciar)
  35.  
  36. (write-line "La resta de los 2 numeros es: ")
  37. (print (restar (x y)))
  38. (espaciar)
  39.  
  40. (write-line "La multiplicacion de los 2 numeros es: ")
  41. (print (multiplicar (x y)))
  42. (espaciar)
  43.  
  44. (write-line "La division de los 2 numeros es: ")
  45. (print (dividir (x y)))
  46. (espaciar)
  47.  
  48. ;Antes de cerrar, el programa se despide del usuario.
  49.  
  50. (despedirse)

Y esto es lo que se ve por pantalla cuando ejecuto mi programa, o sea, falla cuando llega el momento de usar las operaciones matemáticas.

Código:
Executing the program....
$clisp main.lisp
Bienvenidos a mi programa.


Mi programa calcula las 4 operaciones matemáticas.


El valor de X es: 10
El valor de Y es: 5


La suma de los 2 numeros es:
*** - EVAL: undefined function X
2  Programación / Programación C/C++ / Ayuda, no puedo borrar nodos de un Arbol Binario de Busqueda (Solucionado) [C++] en: 22 Febrero 2014, 02:04 am
ACTUALIZACIÓN: Ya pudo resolver mis problemas, logré codificar 100% los métodos

Llevo muchas horas fraccionada en algunos días sin poder solucionar mi problema, resulta que estoy teniendo serios problemas con la implementación de los métodos para eliminar nodos de un arbol binario de búsqueda, tanto de forma recursiva o iterativa, también tengo un serio problema agregando nuevos valores pero de manera ITERATIVA, de la forma recursiva no tengo problema.

Acerca del metodo de eliminacion, yo solo tengo la teoría, pero la práctica es donde estoy perdiendo a tal punto que me están dando ganas de tirar la computadora por la ventana, ojalá me puedan ayudar.

Bueno, lo que tengo entendido que para la eliminación de un arbol binario de busqueda, se pueden presentar 3 casos

1 - Que el nodo sea una hoja, lo cual es sencillo de eliminar (directamente)

2 - Que el nodo solo tenga un hijo, donde será necesario conectar el padre de ese nodo con el hijo del nodo eliminado.

3 - Si no se cumplen los 2 casos anteriores, se puede remplazar por el menor del subarbol derecho, por lo que cree una funcion que buscara el menor segun el nodo señalado.

Pongo el codigo del Arbol y del Nodo, ojala puedan ayudarme, no pondre todo el codigo del programa por que es muy grande, solo los que tengo problemas

Código
  1. #ifndef NODO_H
  2. #define NODO_H
  3. #include <iostream>
  4.  
  5. using namespace std;
  6.  
  7. class Nodo {
  8. public:
  9.  
  10.    int dato;
  11.    Nodo *izquierdo;
  12.    Nodo *derecho;
  13.  
  14.    Nodo(int d);
  15.    virtual ~Nodo();
  16.  
  17. private:
  18.  
  19. };
  20.  
  21. #endif /* NODO_H */
  22.  
  23.  

Código
  1. #include "Nodo.h"
  2.  
  3. Nodo::Nodo(int d) {
  4.  
  5.    this->dato = d;
  6.    this->izquierdo = NULL;
  7.    this->derecho = NULL;
  8.  
  9. }
  10.  
  11. Nodo::~Nodo() {
  12.  
  13.    cout << "\n\nEliminando nodo " << dato << ".\n\n";
  14.  
  15. }
  16.  
  17.  

Código
  1. #ifndef ARBOLBINARIO_H
  2. #define ARBOLBINARIO_H
  3. #include "Nodo.h"
  4. #include <iostream>
  5.  
  6. using namespace std;
  7.  
  8. class ArbolBinario {
  9. public:
  10.  
  11.    Nodo *raiz;
  12.  
  13.    ArbolBinario(); //Implementado.
  14.    virtual ~ArbolBinario(); //Implementado.
  15.    void insertarRecursivo(int d); //Implementado exitosamente.
  16.    void insertarIterativo(int d); //Preguntar como resolverlo.
  17.    void eliminarRecursivo(int d);
  18.    void eliminarIterativo(int d);
  19.    bool buscarRecursivo(int d); //Implementado exitosamente.
  20.    bool buscarIterativo(int d); //Implementado exitosamente.
  21.    void preordenRecursivo(); //Implementado exitosamente.
  22.    void preordenIterativo(); //Implementado exitosamente.
  23.    void inordenRecursivo(); //Implementado exitosamente.
  24.    void inordenIterativo(); //Implementado exitosamente.
  25.    void posordenRecursivo(); //Implementado exitosamente.
  26.    void posordenIterativo();
  27.    void recorrerNiveles(); //Implementado exitosamente.
  28.    int contarNodos(); //Implementado exitosamente.
  29.    int contarHojas(); //Implementado exitosamente.
  30.    int alturaArbol1(); //Implementado exitosamente.
  31.    int alturaArbol2(); //Implementado exitosamente.
  32.    Nodo* buscarMenor(); //Implementado exitosamente.
  33.    Nodo* buscarMayor(); //Implementado exitosamente.
  34.    Nodo* buscarMenor(Nodo *p); //Implementado exitosamente
  35.    Nodo* buscarMayor(Nodo *p); //Implementado exitosamente
  36.    Nodo* obtenerNodo(int d); //Implementado exitosamente.
  37.    void copiar(ArbolBinario *a); //Implementado exitosamente.
  38.    bool comparar(ArbolBinario *a); //Implementado exitosamente.
  39.    void destruir(); //Implementado exitosamente.
  40.  
  41. private:
  42.  
  43.    Nodo* insertarRecursivo(int d, Nodo *p);
  44.    void eliminarRecursivo(int d, Nodo *q, Nodo *p);
  45.    bool buscarRecursivo(int d, Nodo *p);
  46.    void preordenRecursivo(Nodo *p);
  47.    void inordenRecursivo(Nodo *p);
  48.    void posordenRecursivo(Nodo *p);
  49.    int contarNodos(Nodo *p);
  50.    int contarHojas(Nodo *p);
  51.    int alturaArbol1(Nodo *p);
  52.    int alturaArbol2(Nodo *p);
  53.    Nodo* obtenerNodo(int d, Nodo *p);
  54.    Nodo* copiar(Nodo *p);
  55.    bool comparar(Nodo *p, Nodo *q);
  56.    void destruir(Nodo *p);
  57.    void cortarNodo(Nodo *p, Nodo *q);
  58.  
  59. };
  60.  
  61. #endif /* ARBOLBINARIO_H */
  62.  

Código
  1. #include "ArbolBinario.h"
  2. #include <queue>
  3. #include <stack>
  4.  
  5. ArbolBinario::ArbolBinario() {
  6.  
  7.    this->raiz = NULL;
  8.  
  9. }
  10.  
  11. ArbolBinario::~ArbolBinario() {
  12.  
  13.    cout << "\n\nEliminando arbol binario.\n\n";
  14.    destruir();
  15.  
  16. }
  17.  
  18. void ArbolBinario::insertarRecursivo(int d){
  19.  
  20.    this->raiz = insertarRecursivo(d,raiz);
  21.  
  22. }
  23.  
  24. Nodo* ArbolBinario::insertarRecursivo(int d, Nodo *p){
  25.  
  26.    if(p == NULL){
  27.  
  28.        p = new Nodo(d);
  29.        return p;
  30.  
  31.    }else{
  32.  
  33.        if(p->dato == d){
  34.  
  35.            return p;
  36.  
  37.        }
  38.  
  39.        if(d < p->dato){
  40.  
  41.            p->izquierdo = insertarRecursivo(d,p->izquierdo);
  42.  
  43.        }else{
  44.  
  45.            p->derecho = insertarRecursivo(d,p->derecho);
  46.  
  47.        }
  48.  
  49.        return p;
  50.  
  51.    }
  52.  
  53. }
  54.  
  55. void ArbolBinario::insertarIterativo(int d){
  56.  
  57.    if(raiz == NULL){
  58.  
  59.        this->raiz = new Nodo(d);
  60.  
  61.    }else{
  62.  
  63.        Nodo *actual;
  64.        Nodo *detras;
  65.  
  66.        while(actual != NULL){
  67.  
  68.            if(actual->dato == d){
  69.  
  70.                return;
  71.  
  72.            }
  73.  
  74.            detras = actual;
  75.  
  76.            if(d < actual->dato){
  77.  
  78.                actual = actual->izquierdo;
  79.                detras->izquierdo = actual;
  80.  
  81.            }else{
  82.  
  83.                actual = actual->derecho;
  84.                detras->derecho = actual;
  85.  
  86.            }
  87.  
  88.        }
  89.  
  90.        actual = new Nodo(d);
  91.  
  92.    }
  93.  
  94. }
  95.  
  96. void ArbolBinario::eliminarRecursivo(int d){
  97.  
  98.    eliminarRecursivo(d,raiz,raiz);
  99.  
  100. }
  101.  
  102. void ArbolBinario::eliminarRecursivo(int d, Nodo *q, Nodo *p){
  103.  
  104.    if(p != NULL){
  105.  
  106.        if(p->dato == d){
  107.  
  108.            cortarNodo(q,p);
  109.  
  110.  
  111.        }else{
  112.  
  113.            q = p;
  114.  
  115.            if(d < p->dato){
  116.  
  117.                p = p->izquierdo;
  118.                eliminarRecursivo(d,q,p);
  119.  
  120.            }else{
  121.  
  122.                p = p->derecho;
  123.                eliminarRecursivo(d,q,p);
  124.  
  125.            }
  126.  
  127.        }
  128.  
  129.    }
  130.  
  131. }
  132.  
  133. void ArbolBinario::cortarNodo(Nodo *q, Nodo *p){
  134.  
  135.    //Si el nodo a eliminar es una hoja, se borra sin problemas.  
  136.  
  137.    if(p->izquierdo == NULL && p->derecho == NULL){
  138.  
  139.        delete p;
  140.        return;
  141.  
  142.    }
  143.  
  144.    //Si el nodo tiene solo un hijo izquierdo, se remplaza por su nieto.
  145.  
  146.    if(p->izquierdo != NULL && p->derecho == NULL){
  147.  
  148.        if(p->dato < q->dato){
  149.  
  150.            q->izquierdo = p->izquierdo;
  151.            delete p;
  152.  
  153.        }else{
  154.  
  155.            q->derecho = p->izquierdo;
  156.            delete p;
  157.  
  158.        }
  159.  
  160.        return;
  161.  
  162.    }
  163.  
  164.    //Si el nodo tiene un solo hijo derecho, se remplaza por su nieto.
  165.  
  166.    if(p->izquierdo == NULL && p->derecho != NULL){
  167.  
  168.        if(p->dato < q->dato){
  169.  
  170.            q->izquierdo = p->derecho;
  171.            delete p;
  172.  
  173.        }else{
  174.  
  175.            q->derecho = p->derecho;
  176.            delete p;
  177.  
  178.        }
  179.  
  180.        return;
  181.  
  182.    }
  183.  
  184.    //De lo contrario, se encuentra en lo profundo de las ramas. Remplazar por
  185.    //el menor del subarbol derecho.
  186.  
  187.    Nodo *menor = buscarMenor(p->derecho);    
  188.    p->dato = menor->dato;
  189.    delete menor;
  190.    return;
  191.  
  192. }
  193.  

3  Foros Generales / Foro Libre / ¿ A que edad y como aprendiste a usar la computadora, quien fue tu maestro ? en: 31 Enero 2014, 02:27 am
Empiezo con mi caso, fue a los 5 años cuando estaba en el kinder, recuerdo que en la escuela lanzaron un proyecto de alfabetización digital y nos llevaron un día a la sala de computación, las computadoras tenían Windows 98, no me acuerdo de las especificiaciones técnicas como capacidad de disco duro o memoria RAM, pero recuerdo que por curiosidad movía el mouse, apretaba las teclas del teclado y de a poco fui descubriendo como funcionaba, cuando llegaba las clases de computación prendía y apagaba yo solo el PC sin que la profesora la encendiera xD (ella tenía que encenderla), sabía ingresar Diskettes o CD ROMS, instalar programas, desintalarlos, cosas sencillas que todo el mundo sabe hoy, después como a los 8 años mi papá me regaló mi primera computadora, era un HP Pavillion con 10 GB de disco duro, procesador Intel Pentium III 550 Mhz y 64 MB de RAM, y fue mi sueño cumplido xD, al año siguiente pusieron Internet, yo lo había escuchado en la tele lo que se podía hacer, como nadie en mi casa sabía como entrar, recuerdo que en mi PC habpia un icono que decía Internet Explorer, hice click, me abrió el navegador y decía "Haga click aquí para acceder al tutorial", hice click y ahí aprendí a como navegar.
Como dije anteriormente, mi maestra fue la curiosidad.
4  Programación / Programación C/C++ / Que libro de Estructuras de Datos en C++ me recomiendan y sea facil de buscar en: 25 Enero 2014, 07:21 am
Estoy buscando libros o en su defecto "manuales" de Estructura de Datos en C++, busco un libro que explique tanto con teoría como con ejercicios resueltos y su implementación del código, pero me he pasado toda la tarde buscando en Google, Duck Duck Go o Ixquick y no encuentro ningún libro, bueno, si he encontrado, pero están para la venta y lamentablemente no tengo dinero como para comprarlos y mis padres no quieren comprarmelo por Ebay o Amazon No puedo encontrar alguna página donde alguien se haya dado el trabajo de escanear el libro y publicarlo.

Me citaron el libro "Fundamentals of Data Structures in C++" por Ellis Horowitz pero no lo puedo encontrar el libro escaneado, solo encontré un PDF incompleto y otro que está para la venta

Lo ideal es poder estudiar las siguientes estructuras de datos.

1 - Listas enlazadas
2 - Pilas
3 - Colas
4 - Arboles binarios y Arboles Binarios de Busqueda
5 - Arboles Enhebrados
6 - Listas generalizadas
7 - Heaps (monticulos) y su aplicación para el ordenamiento (Heap Sort)

Bueno, estaría muy agradecido si me pudieran ayudar dandome algún link para descargar algún libro o un manual, puede ser tanto en Español como en Inglés´, porfavor .

PD: Estoy de vacaciones y me gustaría aprovechar mi tiempo estudiando esas estructuras de datos xD.

Saludos y que tengan buen día.
5  Programación / Programación C/C++ / Necesito algunos consejos para mejorar la lectura y escritura de ficheros en C en: 24 Enero 2014, 02:47 am
Para repasar en programación en C, quise crear un programa que consiste en escribir un fichero de texto, para despues leerlo, tengo unas advertencias que tienen que ver con el comando exit(1), además, ¿ Existe alguna forma de escribir en el fichero cada vez que se teclea el caracter sin apretar ENTER ?, me gustaría poder escribir en el fichero a medida que tecleo el caracter y si hay una equivocacón, borrarlo del fichero, además había propuesto que el fichero pudiera escribir cadenas de tal manera que incluya los espacios en blanco. Un pequeño problema es cuando se lee el fichero, al final de la ultima linea aparece un caracter extraño, por ejemplo, me aparece esto

Código:
Escriba su oracion: Hola soy Goku, y esta sera mi gran batalla.


Fichero escrito exitosamente.

Comenzando lectura del fichero:

Hola soy Goku, y esta sera mi gran batalla.ÿ

RUN SUCCESSFUL (total time: 17s)


Y otro problema estético que tengo es que cuando escribo mi oración por medio del teclado, si me equivoque en una palabra, al momento de borrar aveces no me borrar de la pantalla las letras que quiero eliminar, si no que el cursor se desplaza hacia atras sin borrar, solo para sobrescribir.

Código
  1. /*
  2.  * File:   main.c
  3.  * Author: Rodrigo Pizarro
  4.  *
  5.  * Este programa permite escribir y leer ficheros de texto.
  6.  *
  7.  * Created on 23 de enero de 2014, 09:55 PM
  8.  */
  9.  
  10. #include <stdio.h>
  11. #include <ctype.h>
  12.  
  13. FILE *ficheroEscritura;
  14. FILE *ficheroLectura;
  15.  
  16. /**
  17.  * Funcion que permite preparar y abrir el fichero para su lectura.
  18.  */
  19.  
  20. void prepararLectura(){
  21.  
  22.    ficheroLectura = fopen("fichero.txt","r");
  23.  
  24.    if(ficheroLectura == NULL){
  25.  
  26.        printf("\n\nError: Fichero de lectura no encontrado o roto, se cerrara el programa.");
  27.        exit(1);
  28.  
  29.    }
  30.  
  31. }
  32.  
  33. /**
  34.  * Funcion que permite preparar y abrir el fichero para su escritura.
  35.  */
  36.  
  37. void prepararEscritura(){
  38.  
  39.    ficheroEscritura = fopen("fichero.txt","w");
  40.  
  41.    if(ficheroEscritura == NULL){
  42.  
  43.        printf("\n\nNo se pudo crear el archivo de lectura, se cerrara el programa.");
  44.        exit(1);
  45.  
  46.    }
  47.  
  48. }
  49.  
  50. /**
  51.  * Funcion que permite leer caracter por caracter un fichero e imprimirlo por
  52.  * la pantalla.
  53.  */
  54.  
  55. void leerFichero(){
  56.  
  57.    char letra;
  58.  
  59.    printf("\n\nComenzando lectura del fichero:\n\n");
  60.  
  61.    while(!feof(ficheroLectura)){
  62.  
  63.        letra = getc(ficheroLectura);
  64.  
  65.        if(isspace(letra)){
  66.  
  67.            printf(" ");
  68.  
  69.        }else{
  70.  
  71.            printf("%c",letra);
  72.  
  73.        }
  74.  
  75.    }
  76.  
  77.    fclose(ficheroLectura);
  78.  
  79. }
  80.  
  81. /**
  82.  * Funcion que permite escribir caracter a caracter en el fichero.
  83.  */
  84.  
  85. void escribirFichero(){
  86.  
  87.    printf("Escriba su oracion: ");
  88.  
  89.    char cadena[140];
  90.    gets(cadena);
  91.  
  92.    fputs(cadena,ficheroEscritura);
  93.  
  94.    if(fclose(ficheroEscritura) == 0){
  95.  
  96.        printf("\n\nFichero escrito exitosamente.");
  97.  
  98.    }else{
  99.  
  100.        printf("\n\nError: No se pudo cerrar el fichero.");
  101.  
  102.    }
  103.  
  104. }
  105.  
  106. int main(){
  107.  
  108.    prepararEscritura();
  109.    escribirFichero();
  110.    prepararLectura();
  111.    leerFichero();
  112.  
  113.    getchar();
  114.    return 0;
  115.  
  116. }
6  Foros Generales / Foro Libre / ¿ En tu país menosprecian o desvalorizan a los programadores ? en: 24 Enero 2014, 00:47 am
En mi país (que es sudamericano) a los jefes de proyectos o los que tienen cargos de jefatura donde no ven casi ninguna línea de código son los que los tratan como verdaderos dioses o "gurus", y se refleja también en su sueldo, pero en cambio, a los programadores los tratan como fracasados, "albañiles" y escuche un refrán respectivo por ahí donde decían que "cualquier mono sentado en una computadora puede programar" y los sueldos que les pagan son tan miserables que apenas alcanza para vivir o mantener una familia, en otros países a los programadores los tratan como gurus a los que son muy buenos.

No se si en sus países será así, ¿ alguien escuchó ese refrán de que los monos pueden programar ? (pareciera ser un insulto)
7  Programación / Programación C/C++ / Tengo un error con el paso de parámetros por referencia, en C (Solucionado) en: 23 Enero 2014, 23:42 pm
Yo cuando estuve estudiando el lenguaje C, vi que se podía pasar parámetros a una función de diferentes formas, están por "valor" y por "referencia", a sí que quise repasar haciendo un pequeño programa que usa la clásica función swap que sirve para cambiar valores a 2 números, me complicó mas el de pasar por referencia, les dejo el código, la función swap1 y swap3 no tuve problemas, mi problema es el swap2, yo he visto que algunos pone el & en los parametros, a mi me acomodaba mas por punteros, pero igual quiero saber de la otra forma, también les dejo lo que me salió de error, uso Netbeans 7.3, compilador cygwin.

Código
  1. #include <stdio.h>
  2.  
  3. void swap1(int *x, int *y){
  4.  
  5.    int aux = *x;
  6.    *x = *y;
  7.    *y = aux;
  8.  
  9. }
  10.  
  11. void swap2(int &x, int &y){
  12.  
  13.    int aux = x;
  14.    x = y;
  15.    y = aux;
  16.  
  17. }
  18.  
  19. void swap3(int x, int y){
  20.  
  21.    int aux = x;
  22.    x = y;
  23.    y = aux;
  24.  
  25. }
  26.  
  27. int main(){
  28.  
  29.    int x = 2;
  30.    int y = 3;
  31.  
  32.    printf("El valor de X e Y respectivamente en el main es %i y %i.\n\n",x,y);
  33.  
  34.    swap1(&x,&y);
  35.    printf("El valor de X e Y despues de la funcion swap1 es %i y %i.\n\n",x,y);
  36.  
  37.    swap2(x,y);
  38.    printf("El valor de X e Y despues de la funcion swap2 es %i y %i.\n\n",x,y);
  39.  
  40.    swap3(x,y);
  41.    printf("El valor de X e Y despues de la funcion swap3 es %i y %i.\n\n",x,y);
  42.  
  43.    getchar();
  44.    return 0;
  45.  
  46. }

Código:
"/usr/bin/make" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf
make[1]: Entering directory '/cygdrive/c/Users/Rodrigo Pizarro/Desktop/Archivos Varios/Ejercicios/Ejemplo06'
"/usr/bin/make"  -f nbproject/Makefile-Debug.mk dist/Debug/Cygwin_4.x-Windows/ejemplo06.exe
make[2]: Entering directory '/cygdrive/c/Users/Rodrigo Pizarro/Desktop/Archivos Varios/Ejercicios/Ejemplo06'
mkdir -p build/Debug/Cygwin_4.x-Windows
rm -f build/Debug/Cygwin_4.x-Windows/main.o.d
gcc    -c -g -MMD -MP -MF build/Debug/Cygwin_4.x-Windows/main.o.d -o build/Debug/Cygwin_4.x-Windows/main.o main.c
main.c:11:16: error: expected ‘;’, ‘,’ or ‘)’ before ‘&’ token
 void swap2(int &x, int &y){
                ^
nbproject/Makefile-Debug.mk:66: recipe for target 'build/Debug/Cygwin_4.x-Windows/main.o' failed
make[2]: Leaving directory '/cygdrive/c/Users/Rodrigo Pizarro/Desktop/Archivos Varios/Ejercicios/Ejemplo06'
nbproject/Makefile-Debug.mk:59: recipe for target '.build-conf' failed
make[1]: Leaving directory '/cygdrive/c/Users/Rodrigo Pizarro/Desktop/Archivos Varios/Ejercicios/Ejemplo06'
nbproject/Makefile-impl.mk:39: recipe for target '.build-impl' failed
make[2]: *** [build/Debug/Cygwin_4.x-Windows/main.o] Error 1
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2


BUILD FAILED (exit value 2, total time: 1s)

Saludos a todos
8  Programación / Programación General / Necesito ayuda acerca del tiempo de ejecución de un algoritmo en: 21 Enero 2014, 06:37 am
Llevo una buena cantidad de tiempo buscando información y ejemplos para lo que quiero investigar que es cálculo del tiempo de ejecución de un algoritmo, sobretodo, lo que más estoy buscando son ejercicios resueltos (escrito en pseudocódigo) ya que yo aprendo más por medio de ejemplos que de teoría y buscando por google encontré solamente muchos sitios donde se abusa de la teoría y casi nada de ejemplos, ando buscando en la notación "O", solamente busco aprender por medio del "conteo de número de instrucciones" y no usando fórmulas matemáticas monstruosas que aveces dan ganas de tirar la computadora por la ventana, eso quiero evitarlo por ahora. He buscado en muchas partes, incluso buscando en otro idioma como en Inglés, pero igual no puedo encontrar ejemplos. También puede ser mucho texto pero evitando complejas fórmulas matemáticas.

En resumen, me gustaría recibir ayudar de expertos y que me recomienden material para poder investigar sobre la complejidad temporal de un algoritmo, usando la notación "Big O", evaluando el peor y mejor caso y solamente consistiendo en contar el numero de instrucciones y evitar a toda costa fórmilas matemáticas monstrousas. Por ejemplo, quiero aprender a identificar cuando el algoritmo es tipo O(log n), O(2^n), O(nlogn), etc.

Les dejo un ejemplo de que tipo de material me estoy refiriendo y ando buscando (lo que he encontrado hasta ahora)

http://rob-bell.net/2009/06/a-beginners-guide-to-big-o-notation/

http://discrete.gr/complexity/?es

http://latecladeescape.com/t/Qué+es+la+complejidad+de+un+algoritmo

Y lo que trato de evitar a toda costa es este tipo de material

http://www.lcc.uma.es/~av/Libro/CAP1.pdf

Si se fijan y si van al fondo del apunte, hay muchas fórmilas matemáticas, sumatorias, ecuaciones, límites, etc.

Estaría agradecido que me puedan ayudar a buscar material, ya que no encuentro material para dummies xD.

9  Programación / Programación C/C++ / Necesito ayuda en "Structs" en C, tengo un error muy gordo en: 13 Enero 2014, 23:38 pm
Saludos comunidad, tengo un error muy gordo acerca de los structs en C, resulta que quiero crear personas usando structs en vez de crear una clase (paradojicamente, empecé al revés, es decir, de C++ a C)

La cosa es que cree una estructura que representa a una persona, tiene un nombre, apellido paterno, apellido materno, edad y rut (numero de identificación), la cosa es que en el main quiero crearlos y através de una función es la que imprime por pantalla los valores de cada persona para ahorrar lineas de código, pero no me funciona, me vi obligado a hacerlo en el main y también me sale error, les pongo mi código para que me puedan ayudar porfavor. Estoy usando DevC++. En el fondo del post se encuentra una captura del error.

Código
  1. #include <stdio.h>
  2. #include <windows.h>
  3.  
  4. struct persona{
  5.  
  6.    char nombre[20];
  7.    char apellidoP[20];
  8.    char apellidoM[20];
  9.    char rut[10];
  10.    int edad;        
  11.  
  12. }
  13.  
  14. void desplegarValores(struct persona p){
  15.  
  16.    printf("Nombre: %s\n",p.nombre);
  17.    printf("Apellido paterno: %s\n",p.apellidoP);
  18.    printf("Apellido materno: %s\n",p.apellidoM);
  19.    printf("Rut: %s\n",p.rut);
  20.    printf("Edad: %i\n\n",p.edad);    
  21.  
  22. }
  23.  
  24. int main(){
  25.  
  26.    struct persona persona1;
  27.    struct persona persona2;
  28.    struct persona persona3;
  29.  
  30.    persona1.nombre = "Rodrigo";
  31.    persona1.apellidoP = "Saavedra";
  32.    persona1.apellidoM = "Pizarro";
  33.    persona1.rut = "ASDF-1";
  34.    persona1.edad = 23;
  35.  
  36.    persona2.nombre = "Jorge";
  37.    persona2.apellidoP = "Muñoz";
  38.    persona2.apellidoM = "Cardenas";
  39.    persona2.rut = "QWERT-1";
  40.    persona2.edad = 27;
  41.  
  42.    persona3.nombre = "Francisco";
  43.    persona3.apellidoP = "Sanchez";
  44.    persona3.apellidoM = "Villagra";
  45.    persona3.rut = "ZXCV-3";
  46.    persona3.edad = 56;
  47.  
  48.    desplegarValores(persona1);
  49.    desplegarValores(persona2);
  50.    desplegarValores(persona3);
  51.  
  52.    printf("Nombre: %s\n",persona1.nombre);
  53.    printf("Apellido paterno: %s\n",persona1.apellidoP);
  54.    printf("Apellido materno: %s\n",persona1.apellidoM);
  55.    printf("Rut: %s\n",persona1.rut);
  56.    printf("Edad: %i\n\n",persona1.edad);
  57.  
  58.    printf("Nombre: %s\n",persona2.nombre);
  59.    printf("Apellido paterno: %s\n",persona2.apellidoP);
  60.    printf("Apellido materno: %s\n",persona2.apellidoM);
  61.    printf("Rut: %s\n",persona2.rut);
  62.    printf("Edad: %i\n\n",persona2.edad);
  63.  
  64.    printf("Nombre: %s\n",persona3.nombre);
  65.    printf("Apellido paterno: %s\n",persona3.apellidoP);
  66.    printf("Apellido materno: %s\n",persona3.apellidoM);
  67.    printf("Rut: %s\n",persona3.rut);
  68.    printf("Edad: %i\n\n",persona3.edad);
  69.  
  70.    system("PAUSE");
  71.    return 0;    
  72.  
  73. }
  74.  

10  Programación / Programación C/C++ / Necesito ayuda, validación de números enteros en: 25 Noviembre 2013, 11:19 am
Este es un problema que ocurre al ingresar por error un caracter no numerico.

Tengo un programa en que desde el main se despliega un menu (dentro de un ciclo infinito), para que el usuario pueda elegir la opcion que necesito, yo decidi usar un switch para ir a los submenus, la cosa es que el switch solo acepta numeros enteros, ademas, dentro del while hay un bloque try/catch, por que decidi implementar una forma de lanzar una excepcion cuando detecte el problema y para que el programa no se detenga. La excepcion se envia a una funcion "indentificarExcepcion", que no es nada mas que imprimir por pantalla el tipo de error , por ejemplo, cuando se ingrese mal en el menu, mandara un 1 y al procesar la excepcion, saldra por pantalla "Error: Ingrese caracteres no numericos".
El problema que mas me complica es que si ingreso una letra, pareciera ser que el ciclo while se vuelve loco e imprime el menu infinitas veces, por ahi lei que es necesario usar el clear para restablecer "cin" y tambien usar el flag cin.fail(), pero no tengo los resultados esperados. Les dejo mi codigo.


Código
  1.  
  2. #include <cstdlib>
  3. #include <iostream>
  4. #include <windows.h>
  5. #include "Operaciones.h"
  6.  
  7. using namespace std;
  8. using namespace operaciones;
  9.  
  10. void opcion1(){
  11.  
  12.    cout <<"\e[2J";
  13.    cout <<"\n::::: MATRIZ TRASPUESTA :::::\n";  
  14.    continuar();
  15.  
  16. }
  17.  
  18. void opcion2(){
  19.  
  20.    cout <<"\e[2J";
  21.    cout <<"\n::::: ELIMINAR VALOR :::::\n";    
  22.    continuar();
  23.  
  24. }
  25.  
  26. void opcion3(){
  27.  
  28.    cout <<"\e[2J";
  29.    cout <<"\n::::: ELIMINAR COLUMNA :::::\n";
  30.    continuar();
  31.  
  32. }
  33.  
  34. void opcion4(){
  35.  
  36.    cout <<"\e[2J";
  37.    cout <<"\n::::: ELIMINAR MATRIZ :::::\n";  
  38.    continuar();
  39.  
  40. }
  41.  
  42. void opcion5(){
  43.  
  44.    cout <<"\e[2J";
  45.    cout <<"\n::::: SUMA ESPECIAL DE UNA MATRIZ :::::\n";
  46.    continuar();
  47.  
  48. }
  49.  
  50. void opcion6(){
  51.  
  52.    cout <<"\e[2J";
  53.    cout <<"\n::::: AGREGAR VALOR :::::\n";  
  54.    continuar();
  55.  
  56. }
  57.  
  58. void opcion7(){
  59.  
  60.    cout <<"\e[2J";
  61.    cout <<"\n::::: INGRESAR NUEVA MATRIZ :::::\n";
  62.    continuar();
  63.  
  64. }
  65.  
  66. void opcion8(){
  67.  
  68.    cout <<"\e[2J";
  69.    cout <<"\n::::: TODAS LAS MATRICES DEL SISTEMA :::::\n";
  70.    continuar();
  71.  
  72. }
  73.  
  74. int main(int argc, char** argv) {
  75.  
  76.    int opcion;
  77.  
  78.    while(true){
  79.  
  80.        desplegarMenu();
  81.  
  82.        try{
  83.  
  84.            cin >> opcion;
  85.  
  86.            if(cin.fail()){
  87.  
  88.                cin.clear();
  89.                throw 1;
  90.  
  91.            }
  92.  
  93.            switch(opcion){
  94.  
  95.                case 1:
  96.  
  97.                    opcion1();
  98.  
  99.                    break;
  100.  
  101.                case 2:
  102.  
  103.                    opcion2();
  104.  
  105.                    break;
  106.  
  107.                case 3:
  108.  
  109.                    opcion3();
  110.  
  111.                    break;
  112.  
  113.                case 4:
  114.  
  115.                    opcion4();
  116.  
  117.                    break;
  118.  
  119.                case 5:
  120.  
  121.                    opcion5();
  122.  
  123.                    break;
  124.  
  125.                case 6:
  126.  
  127.                    opcion6();
  128.  
  129.                    break;
  130.  
  131.                case 7:
  132.  
  133.                    opcion7();
  134.  
  135.                    break;
  136.  
  137.                case 8:
  138.  
  139.                    opcion8();
  140.  
  141.                    break;
  142.  
  143.                case 9:
  144.  
  145.                    salir();
  146.  
  147.                    break;
  148.            }
  149.  
  150.        }catch(int e){
  151.  
  152.            identificarExcepcion(e);
  153.  
  154.        }
  155.  
  156.  
  157.    }
  158.  
  159.    return 0;
  160. }
  161.  
  162.  
Páginas: [1] 2 3
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines