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

 

 


Tema destacado: Tutorial básico de Quickjs


  Mostrar Mensajes
Páginas: 1 2 3 [4] 5 6 7 8
31  Programación / Programación C/C++ / Ayuda con la lectura de un fichero en: 21 Noviembre 2013, 03:57 am
Tengo un problema, tengo que hacer un programa que lea la informacion de unas matrices contenidas en un fichero, en el fichero esta el nombre de la matriz, cantidad de filas, cantidad de columnas y la forma de la matriz.
La informacion se encuentra separada por comas, a si que se me ocurrio usar fstream e ifstream por ser un archivo de entrada, y uso el metodo getline(fichero,palabra), pero al momento de bajar una linea (una vez que llega al final de una linea), el programa se desfasa y pareciera ser que toma el espacio en blanco, por que cuando mando a imprimir los datos leidos por el fichero, me imprime ademas de los numeros, los espacios en blanco, y no he podido encontrar solucion

El formato del fichero es asi

Código:
MATRIZ 1,
3,
3,
4,0,6
2,0,1
0,8,1
MATRIZ 2,
2,
2,
6,2,
0,4,
MATRIZ 3,
4,
2,
1,2,
3,0,
0,6,
7,0,
MATRIZ 4,
2,
4,
1,0,0,4,
5,6,0,8,
MATRIZ 5,
5,
5,
1,0,0,0,2,
0,3,0,4,5,
0,0,0,6,0,
7,8,0,0,0,
9,0,0,7,4,

32  Programación / Programación C/C++ / Re: Ayuda en una lista contenedora en: 9 Octubre 2013, 21:42 pm
:O, en que diablos estuve pensando esa vez para que se me olvidara agregar el alumno al arreglo, fue culpa mía u.u (quizas se deba a que eran las 3 de la mañana)

Bueno, gracias por tu respuesta y acerca del constructor copia, lo tendré en cuenta cuando debe estar y cuando no.

Saludos.
33  Programación / Programación C/C++ / Ayuda en una lista contenedora en: 9 Octubre 2013, 02:54 am
Estaba haciendo un ejercicio con uso de punteros, arreglos y asignación dinámica, todo marchaba perfectamente pero con un pequeño error en la última parte y no se por que sera.

Mi ejercicio consiste en esto: Quiero crear una "lista" llamada Carpeta que contiene un arreglo de punteros a Alumno, cada alumno tiene nombre, rut (número de identificación en mi pais) y edad.

En el main cree en un ciclo for que solo agregue 3 alumnos, se pide ingresar por teclado el nombre, rut y edad y se agrega a la carpeta, todo marcha bien, el problema sucede cuando es hora de mostrar los resultados, una vez que termino de ingresar los datos, la última instrucción es desplegar los datos, pero hay un problema con el ciclo for, por que dentro de la función "desplegar" de Carpeta, hay un título que dice "Datos de los alumnos", eso lo imprime correctamente, pero llega al for y comienza el problema y no se por que sera. Ojalá me puedan ayudar.

Les pongo lo que me sale en la pantalla de comandos y el código.

Código:
Ingresando datos

Individuo 1
Ingrese nombre: Juan
Ingrese RUT: 1234
Ingrese edad: 15

Individuo 2
Ingrese nombre: Simon
Ingrese RUT: 4321
Ingrese edad: 17

Individuo 3
Ingrese nombre: Rodrigo
Ingrese RUT: 5678
Ingrese edad: 16

Datos de los alumnos

RUN FAILED (exit value 1,, total time: 36s)

Código
  1. #ifndef CARPETA_H
  2. #define CARPETA_H
  3. #include "Alumno.h"
  4. #include <string>
  5.  
  6. using namespace std;
  7.  
  8. class Carpeta {
  9. public:
  10.    Carpeta();
  11.    Carpeta(const Carpeta& orig);
  12.    virtual ~Carpeta();
  13.    void agregarAlumno(Alumno *a);
  14.    Alumno* getAlumno(string n);
  15.    void desplegar();
  16.    bool isFull();
  17.    bool isEmpty();
  18. private:
  19.    Alumno **alumnos;
  20.    int cantAlumnos;
  21. };
  22.  
  23. #endif /* CARPETA_H */
  24.  
  25.  

Código
  1. #include "Carpeta.h"
  2. #include <iostream>
  3. #include <string>
  4.  
  5. using namespace std;
  6.  
  7. /*
  8.  * Constructor por defecto de la carpeta, planeado para un curso de 40 alumnos.
  9.  */
  10.  
  11. Carpeta::Carpeta() {
  12.  
  13.    this->alumnos = new Alumno*[40];
  14.    this->cantAlumnos = 0;
  15.  
  16. }
  17.  
  18. Carpeta::Carpeta(const Carpeta& orig) {    
  19. }
  20.  
  21. /*
  22.  * Destructor.
  23.  */
  24.  
  25. Carpeta::~Carpeta() {
  26.  
  27.    cout << "\nEliminando carpeta";
  28.    delete []alumnos;
  29.  
  30. }
  31.  
  32. /*
  33.  * Funcion que agrega un puntero a Alumno a la lista.
  34.  */
  35.  
  36. void Carpeta::agregarAlumno(Alumno *a){
  37.  
  38.    if(isFull()){
  39.  
  40.        cout << "\nEsta lleno";
  41.  
  42.    }else{
  43.  
  44.        alumnos[cantAlumnos];
  45.        cantAlumnos++;
  46.  
  47.    }
  48.  
  49. }
  50.  
  51. /*
  52.  * Funcion que devuelve un puntero a Alumno
  53.  */
  54.  
  55. Alumno* Carpeta::getAlumno(string nombre){
  56.  
  57.    if(isEmpty()){
  58.  
  59.        cout << "\nEsta vacio\n";
  60.  
  61.    }else{
  62.  
  63.        for(int i=0; i<cantAlumnos; i++){
  64.  
  65.            if(alumnos[i]->getNombre() == nombre){
  66.  
  67.                return alumnos[i];
  68.  
  69.            }
  70.        }
  71.    }
  72.  
  73. }
  74.  
  75. /*
  76.  * Funcion que verifica si la lista esta vacia.
  77.  */
  78.  
  79. bool Carpeta::isEmpty(){
  80.  
  81.    if(cantAlumnos == 0){
  82.  
  83.        return true;
  84.  
  85.    }else{
  86.  
  87.        return false;
  88.  
  89.    }
  90.  
  91. }
  92.  
  93. /*
  94.  * Funcion que verifica si la lista esta llena.
  95.  */
  96. bool Carpeta::isFull(){
  97.  
  98.    if(cantAlumnos == 40){
  99.  
  100.        return true;
  101.  
  102.    }else{
  103.  
  104.        return false;
  105.  
  106.    }
  107.  
  108. }
  109.  
  110. /*
  111.  * Funcion que despliega todos los alumnos de la lista.
  112.  */
  113.  
  114. void Carpeta::desplegar(){
  115.  
  116.    cout <<"\nDatos de los alumnos\n";
  117.  
  118.    for(int i=0; i<cantAlumnos; i++){
  119.  
  120.        cout <<"\nNombre: " << alumnos[i]->getNombre();
  121.        cout <<"\nRut: " << alumnos[i]->getRut();
  122.        cout <<"\nEdad: " << alumnos[i]->getRut();
  123.  
  124.    }
  125. }
  126.  
  127.  

Código
  1. #ifndef ALUMNO_H
  2. #define ALUMNO_H
  3. #include <string>
  4.  
  5. using namespace std;
  6.  
  7. class Alumno {
  8. public:
  9.    Alumno();
  10.    Alumno(string n, string r, int e);
  11.    Alumno(const Alumno& orig);
  12.    virtual ~Alumno();
  13.    string getNombre();
  14.    string getRut();
  15.    int getEdad();
  16. private:
  17.    string nombre;
  18.    string rut;
  19.    int edad;
  20. };
  21.  
  22. #endif /* ALUMNO_H */
  23.  
  24.  

Código
  1. #include "Alumno.h"
  2. #include <string>
  3. #include <iostream>
  4.  
  5. using namespace std;
  6.  
  7. Alumno::Alumno() {
  8. }
  9.  
  10. Alumno::Alumno(string n, string r, int e){
  11.  
  12.    this->nombre = n;
  13.    this->rut = r;
  14.    this->edad = e;
  15.  
  16. }
  17.  
  18. Alumno::Alumno(const Alumno& orig) {
  19.  
  20.    // Sin implementar.
  21.  
  22. }
  23.  
  24. Alumno::~Alumno() {
  25.  
  26.    cout << "\nEliminando alumno";
  27.  
  28. }
  29.  
  30. string Alumno::getNombre(){
  31.  
  32.    return nombre;
  33.  
  34. }
  35.  
  36. string Alumno::getRut(){
  37.  
  38.    return rut;
  39.  
  40. }
  41.  
  42. int Alumno::getEdad(){
  43.  
  44.    return edad;
  45.  
  46. }
  47.  
  48.  

Código
  1. #include <cstdlib>
  2. #include <iostream>
  3. #include "Alumno.h"
  4. #include "Carpeta.h"
  5. #include <string>
  6.  
  7. using namespace std;
  8.  
  9. Carpeta carpetaAlumnos;
  10.  
  11. int main(int argc, char** argv) {
  12.  
  13.    string nombre;
  14.    string rut;
  15.    int edad;
  16.  
  17.    cout << "Ingresando datos\n";
  18.  
  19.    for(int i=0; i<3; i++){
  20.  
  21.        cout << "\nIndividuo " << i+1 << "\n";
  22.  
  23.        cout <<"Ingrese nombre: ";
  24.        getline(cin,nombre);
  25.  
  26.        cout <<"Ingrese RUT: ";
  27.        getline(cin,rut);
  28.  
  29.        cout <<"Ingrese edad: ";
  30.        cin >> edad;
  31.  
  32.        Alumno *alumno = new Alumno(nombre,rut,edad);
  33.        carpetaAlumnos.agregarAlumno(alumno);
  34.  
  35.        cin.ignore();
  36.  
  37.    }
  38.  
  39.    carpetaAlumnos.desplegar();
  40.  
  41.    return 0;
  42. }
  43.  
  44.  
34  Programación / Programación C/C++ / Re: Problema con crear una Pila Generica (y otras dudas) (ACTUALIZADO) en: 28 Septiembre 2013, 23:43 pm
Gracias, ahora pude solucionar mi problema y logré el resultado que quería.
35  Programación / Programación C/C++ / Lista enlazada, eliminando todos los nodos en C++ (¿ Estara bien ?) en: 28 Septiembre 2013, 23:05 pm
Solo hago esta pregunta para saber si esta bien, ya que soy novato aun, cree una lista enlazada simple, utilizando punteros para apuntar al nodo siguiente, utilizando POO.

El esquema de la lista es la siquiente

Head
  l
 \/
 O - O - O - ......................... - O - O - O - NULL

Ahora, cada vez que creo un nodo, lo hago de manera dinamica, sabiendo que no solamente debo borrar la lista cuando termine, si no tambien debo borrar todos los nodos de manera manual, pero no se si estara bien mi forma de borrar.

Todo funciona bien, pero no se si el metodo de eliminacion estara bien , mi objetivo es que se libere todo, y no queden en la memoria cuando termine el programa.

Código
  1. #ifndef LISTA_H
  2. #define LISTA_H
  3. #include "Nodo.h"
  4.  
  5. class Lista {
  6. public:
  7.    Lista();
  8.    Lista(const Lista& orig);
  9.    virtual ~Lista();
  10.    void setHead(int d);
  11.    Nodo* getHead();
  12.    bool isEmpty();
  13. private:
  14.    Nodo *head;
  15. };
  16.  
  17. #endif /* LISTA_H */
  18.  
  19.  

Código
  1. #include "Lista.h"
  2. #include "Nodo.h"
  3. #include <iostream>
  4.  
  5. using namespace std;
  6.  
  7. Lista::Lista() {
  8.  
  9.    head = NULL;
  10.  
  11. }
  12.  
  13. Lista::Lista(const Lista& orig) {  
  14. }
  15.  
  16. /*
  17.  * Destructor de la lista. Borra uno por uno todos los Nodos que se asigno de for
  18.  * ma dinamica.
  19.  *
  20.  */
  21.  
  22. Lista::~Lista() {
  23.  
  24.    cout <<"\nBorrando lista, borrando todos los elementos...\n";
  25.  
  26.    Nodo *aux;
  27.  
  28.    while(head != NULL){
  29.  
  30.        aux = head->getSiguiente(); //Guardando la posicion del nodo siguiente
  31.        delete head; //Borrando lo que hay en la posicion de head
  32.        head = aux; //Head apunta al siguiente del Head anterior
  33.  
  34.    }
  35.  
  36. }
  37.  
  38. /*
  39.  * Funcion que agrega un nuvo Nodo en la lista, colocandolo en la cabeza.
  40.  */
  41.  
  42. void Lista::setHead(int d){
  43.  
  44.    Nodo *nuevo = new Nodo(d);
  45.  
  46.    if(isEmpty()){
  47.  
  48.        head = nuevo;
  49.  
  50.    }else{
  51.  
  52.        nuevo->setSiguiente(head);
  53.        head = nuevo;
  54.  
  55.    }
  56.  
  57. }
  58.  
  59. /*
  60.  * Funcion que obtiene el primer Nodo de la lista.
  61.  */
  62.  
  63. Nodo* Lista::getHead(){
  64.  
  65.    if(isEmpty()){
  66.  
  67.        cout << "\nLa pila esta vacia\n";
  68.  
  69.    }else{
  70.  
  71.        return head;
  72.  
  73.    }
  74.  
  75. }
  76.  
  77. /*
  78.  * Funcion que determina si la lista esta vacia o no lo esta.
  79.  */
  80.  
  81. bool Lista::isEmpty(){
  82.  
  83.    if(head == NULL){
  84.  
  85.        return true;
  86.  
  87.    }else{
  88.  
  89.        return false;
  90.  
  91.    }
  92.  
  93. }

Código
  1. #ifndef NODO_H
  2. #define NODO_H
  3.  
  4. class Nodo {
  5. public:
  6.    Nodo(int d);
  7.    Nodo(const Nodo& orig);
  8.    virtual ~Nodo();
  9.    void setSiguiente(Nodo *s);
  10.    int getDato();
  11.    Nodo* getSiguiente();
  12. private:
  13.    int dato;
  14.    Nodo *siguiente;
  15. };
  16.  
  17. #endif /* NODO_H */
  18.  
  19.  

Código
  1. #include "Nodo.h"
  2. #include <iostream>
  3.  
  4. using namespace std;
  5.  
  6. Nodo::Nodo(int d) {
  7.  
  8.    dato = d;
  9.    siguiente = NULL;
  10. }
  11.  
  12. Nodo::Nodo(const Nodo& orig) {
  13. }
  14.  
  15. Nodo::~Nodo() {
  16.  
  17.    cout <<"\nDestruyendo nodo...\n";
  18.  
  19. }
  20.  
  21. /*
  22.  * Funcion que agregar el nodo siguiente
  23.  */
  24.  
  25. void Nodo::setSiguiente(Nodo *s){
  26.  
  27.    siguiente = s;
  28.  
  29. }
  30.  
  31. /*
  32.  * Funcion que obtiene el valor contenido del nodo.
  33.  */
  34.  
  35. int Nodo::getDato(){
  36.  
  37.    return dato;
  38.  
  39. }
  40.  
  41. /*
  42.  * Metodo que obtiene un puntero al siguiente Nodo.
  43.  */
  44.  
  45. Nodo* Nodo::getSiguiente(){
  46.  
  47.    return siguiente;
  48.  
  49. }
  50.  
  51.  

Código
  1. #include <cstdlib>
  2. #include <iostream>
  3. #include "Lista.h"
  4. #include "Nodo.h"
  5.  
  6. using namespace std;
  7.  
  8. int main(int argc, char** argv) {
  9.  
  10.    Lista lista;
  11.  
  12.    lista.setHead(10);
  13.    lista.setHead(9);
  14.    lista.setHead(8);
  15.    lista.setHead(7);
  16.    lista.setHead(6);
  17.    lista.setHead(5);
  18.    lista.setHead(4);
  19.    lista.setHead(3);
  20.    lista.setHead(2);
  21.    lista.setHead(1);
  22.    lista.setHead(0);
  23.  
  24.    //Obteniendo el primer nodo de la lista.
  25.  
  26.    Nodo *cabeza = lista.getHead();
  27.  
  28.    //Imprimiendo por pantalla los valores contenidos en cada nodo.
  29.  
  30.    while(cabeza != NULL){
  31.  
  32.        cout << cabeza->getDato() << endl;
  33.        cabeza = cabeza->getSiguiente();
  34.  
  35.    }
  36.  
  37.    return 0;
  38. }
  39.  
  40.  
36  Programación / Programación C/C++ / Re: Problema con crear una Pila Generica (y otras dudas) (ACTUALIZADO) en: 28 Septiembre 2013, 20:00 pm
Primer consejo al hacer templates... TODO y repito TODO el código de un template tiene que estar en el archivo de cabecera.

La razón es que el compilador utiliza este template para generar el código específico que necesite según se vaya usando en la aplicación.

Es decir, si tu en un programa usas la pila solo para tipos int, se creará código específico únicamente para el tipo int... si usas la pila para int, float y double... se creará una clase específica para cada uno de esos tres tipos.

El código de un template, como tal, no se compila directamente, se genera bajo demanda... el código en el cpp no sirve para nada.
¿ Entonces debo implementar todo en el .h ?
37  Programación / Java / Re: ¿ Algún libro de Java con ejercicios, ejemplos y sencillo del que partir ? en: 28 Septiembre 2013, 16:58 pm
Bueno respecto a lo de tu profesor... para gustos los colores, por exp en la universidad,  lo que te dan es un esqueleto sobre el cual basarte, pero esta profesion o hobbie segun como lo vea cada cual depende mucho de tu capacidad de ser autodidacta. No cualquiera aguanta tantas horas en la pc, esto te tiene que gustar.
Tienes mucha razon lo que dices, los profesores solo enseñan "lo basico", el año pasado vimos POO y usando Java como lenguaje de programación, la cosa es que no enseñaron nada de interfaz grafica, es ahi donde yo fui mucho mas alla e investigue por mi cuenta, me sirvio mucho el libro de Deitel, preguntando en foros (como este) e investigando en blogs de programadores, y al final sirve de mucho ser autodidacta, la tecnologia avanza tan rapido que si uno no se actualiza, quedas fuera, pero ese gusto de ser cada dia mejor me gusta.
38  Programación / Programación C/C++ / Re: Problema con crear una Pila Generica (y otras dudas) en: 28 Septiembre 2013, 16:48 pm
Cuáles son los errores que te da el compilador?
Actualice el tema, donde puse los errores que me dió el compilador.
Uso Netbeans 7.3
39  Programación / Java / Re: ¿ Algún libro de Java con ejercicios, ejemplos y sencillo del que partir ? en: 21 Septiembre 2013, 10:27 am
Yo el libro que te recomiendo es "Como programar en Java 7ma edición - Deitel", que está en unas páginas anteriores de esta sección. Pero aparte de esto, es muy importante que aprendas a consultar en la documentación oficial. Es mucho más importante que cualquier libro. Es menester que aprendas a leer en inglés, el mejor material está en ese idioma.
Yo también recomiendo el libro "Como programar en Java" de Deitel, salvo que yo lei la sexta edición, pero lo bueno de ese libro es que el autor lo explica con muchos ejemplos, paso a paso, con una redaccion legible que hace que el lector no quede atascado en la lectura, con ese libro aprendi muchas cosas, sobretodo en el area multimedia, ademas incluye un CD. Leer la documentacion es importante, tomalo como si fuera "la receta" para hacer un postre.

http://docs.oracle.com/javase/6/docs/api/

40  Programación / Java / Re: Intecerptar HTML de un navegador desde Java en: 21 Septiembre 2013, 10:23 am
Hace un tiempo recuerdo haber visto un ejemplo parecido en el libro "Introduccion a la programacion con Java", de David Arnow donde mostraba como obtener el codigo HTML desde un porgrama escrito en Java, creo que deberías hecharle un vistazo, a lo mejor es lo que buscas.
Páginas: 1 2 3 [4] 5 6 7 8
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines