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

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


  Mostrar Mensajes
Páginas: 1 2 3 [4] 5
31  Programación / Programación C/C++ / Ayuda con Directorio en c++ en: 1 Junio 2015, 04:04 am
Hola buenas! Tengo problemas con este código, estoy leyendo un libro "Estructura de datos con C++" viene un ejercicio de crear un directorio apartir de un archivo de texto, viene el codigo y solamente lo estoy copiando, el problema está (creo) al asignar la memoria no sé como arreglarlo, ojalá puedan decirme que está mal :C gracias!

Directory-Entry.h
Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. class Entrada_Directorio{
  6. public:
  7.  Entrada_Directorio(string _Nombre, string _Numero) : Nombre(_Nombre), Numero(_Numero){}
  8.  Entrada_Directorio(){}
  9.  string dar_Nombre() const {return Nombre;}
  10.  string dar_Numero() const {return Numero;}
  11.  void mod_Numero(const string &nuevo_Numero) {Numero=nuevo_Numero;}
  12. private:
  13.  string Nombre;
  14.  string Numero;
  15. };


Arreglo_PD.h
Código
  1. #include <string>
  2. #include "Directory-Entry.h"
  3.  
  4. using namespace std;
  5.  
  6. class Directorio_Tel{
  7. public:
  8.  Directorio_Tel(){} // Cuando lo pongo como  Directorio_Tel(); me da error al crear el objeto
  9.  ~Directorio_Tel(){}
  10.  
  11.  void cargar_datos(const string &nombre_arch);
  12.  string buscar_nom(const string &Nombre) const;
  13.  string anadir_modif(const string &Nombre, string &Numero);
  14.  string eliminar(const string &Nombre);
  15.  void guardar();
  16.  friend ostream& operator<<(ostream &os, const Directorio_Tel &Tel);
  17. private:
  18.  int buscar(const string &Nombre) const;
  19.  void agregar(const string &Nombre, string &Numero);
  20.  void eliminar(int num);
  21.  void realocar();
  22.  int tamano;
  23.  int capacidad;
  24.  Entrada_Directorio* Directorio;
  25.  string nombre_arch;
  26.  bool modificado;
  27. };
  28.  

Arreglo_PD.cpp
Código
  1. #include "Arreglo_PD.h"
  2. #include <fstream>
  3. #include <conio.h>
  4.  
  5. using namespace std;
  6.  
  7. void Directorio_Tel::cargar_datos(const string &nombre_arch){
  8.  this->nombre_arch=nombre_arch;
  9.  ifstream in(nombre_arch.c_str());
  10.  if (in){
  11.    string Nombre;
  12.    string Numero;
  13.    while (getline(in,Nombre,'\n')){
  14.      if (getline(in,Numero,'\n')){
  15.        cout<<Nombre<<endl;
  16.        cout <<Numero<<endl; //Coloqué esto para ver como se van agregando los nombres...
  17.        agregar(Nombre, Numero); //Desde aqui todo bien al mandar a llamar esta funcion
  18.      }
  19.    }
  20.    in.close();//No entiendo como es que (según el libro) esto logra cargar todo el archivo...
  21.  }
  22. }
  23.  
  24. string Directorio_Tel::buscar_nom(const string &Nombre) const {
  25.  int num=buscar(Nombre);
  26.  if(num!=-1){
  27.    return Directorio[num].dar_Numero();
  28.  } else {
  29.    return "";
  30.  }
  31. }
  32.  
  33. string Directorio_Tel::anadir_modif(const string &Nombre, string &Numero) {
  34.  string numero_ant="";
  35.  int num=buscar(Nombre);
  36.  if(num!=-1){
  37.    numero_ant=Directorio[num].dar_Numero();
  38.    Directorio[num].mod_Numero(Numero);
  39.  }
  40.  modificado=true;
  41.  return numero_ant;
  42. }
  43.  
  44. string Directorio_Tel::eliminar(const string &Nombre){
  45. ;
  46. }
  47.  
  48. void Directorio_Tel::guardar() {
  49.  if (modificado){
  50.    ofstream out(nombre_arch.c_str());
  51.    for(int i=0; i<tamano; i++){
  52.      out << Directorio[i].dar_Nombre() <<endl;
  53.      out << Directorio[i].dar_Numero() <<endl;
  54.    }
  55.    out.close();
  56.    modificado=false;
  57.  }
  58. }
  59.  
  60. int Directorio_Tel::buscar(const string &Nombre) const {
  61.  for(int i=0; i<tamano; i++){
  62.    if (Directorio[i].dar_Nombre()==Nombre)
  63.      return 1;
  64.  }
  65.  return -1;
  66. }
  67.  
  68. void Directorio_Tel::agregar(const string &Nombre, string &Numero) {
  69.  if(tamano==capacidad)
  70.    realocar(); //Aquí llama a la función erronea
  71.  Directorio[tamano]=Entrada_Directorio(Nombre,Numero);
  72.  tamano++;
  73. }
  74.  
  75. void Directorio_Tel::eliminar(int num) {
  76. ;
  77. }
  78.  
  79. //Esta es la funcion que da error
  80. void Directorio_Tel::realocar() {
  81.  capacidad*=2;
  82.  Entrada_Directorio* nuevo_Directorio=new Entrada_Directorio[capacidad];
  83.  getch(); //Este getch lo puse por que después de aquí se hace el error
  84.  for(int i=0; i<tamano; i++){
  85.    nuevo_Directorio[i]=Directorio[i];
  86.  }
  87.  delete[] Directorio;
  88.  Directorio=nuevo_Directorio;
  89. }
  90.  
  91. ostream& operator<<(ostream &os, const Directorio_Tel &Tel) {
  92.  for(int i=0; i<Tel.tamano; i++){
  93.    os<<Tel.Directorio[i].dar_Nombre()<<endl;
  94.    os<<Tel.Directorio[i].dar_Numero()<<endl<<endl;
  95.  }
  96.  return os;
  97. }
  98.  

main()...
Código
  1. #include <iostream>
  2. #include "Arreglo_PD.h"
  3.  
  4. using namespace std;
  5.  
  6. int main(){
  7.  Directorio_Tel D1;
  8.  D1.cargar_datos("Directorio.txt");
  9.  cout << D1;
  10. }
  11.  
  12.  

Nota: Crear el archivo de texto xD De antemano muchas gracias y espero que puedan ayudarme!  :(
32  Programación / Programación C/C++ / Re: Función recursiva en C++ en: 22 Mayo 2015, 03:14 am
¿Quieres que pida el número por pantalla?  :huh: si sí, CREO que buscas esto... :P
Código
  1. #include<iostream>
  2. using namespace std;
  3.  
  4. int suma(int x)
  5. {
  6.  if(x==1)
  7.    return 1;
  8.  
  9.  return x+suma(x-1);
  10. }
  11.  
  12. int main()
  13. {
  14.  
  15.  int x;
  16.  cout << "Ingresa un numero: ";
  17.  cin>> x;
  18.  
  19.  cout<<suma(x)<<endl;
  20.  
  21.  cin.get();
  22.  cin.get();
  23.  
  24.  return 0;
  25. }
  26.  
  27.  
33  Programación / Programación C/C++ / Re: [Aporte] fixedInteger.h en: 19 Mayo 2015, 04:50 am
Se me hace más fácil esto  ;D
Código
  1. #include <iostream>
  2. #include <stdlib.h>
  3.  
  4. using namespace std;
  5.  
  6. int main()
  7. {
  8.  char datos[21];
  9.  int x;
  10.  
  11.  do{
  12.    cout << "Ingresa un numero: ";
  13.    cin.getline(datos,20);
  14.    x=atoi(datos);
  15.    if (x==0)
  16.      cout << "\nSolo ingresa numeros!!!\n\n";
  17.  }while(x==0);
  18.  
  19.  cout <<"El numero que ingresaste es: "<< x;
  20.  return 0;
  21. }
  22.  
  23.  
34  Programación / Programación C/C++ / Re: AYUDA!!! URGENTE POR FAVOR en: 8 Mayo 2015, 06:02 am
 ;D

Código
  1. #include <cstdlib>
  2. #include <iostream>
  3.  
  4. using namespace std;
  5.  
  6. int main()
  7. {
  8.    int c=1, t=0, r=0, res=0;
  9.  
  10.    cout<<"ingrese la tabla que desee resolver\n";
  11.    cin>>t;
  12.  
  13.    while (c<=10)
  14.    {
  15.  
  16.    r=t*c;
  17.  
  18.    cout<<t<<"*"<<c<<"\n";
  19.    cin>>res;
  20.  
  21.    c++;
  22.    if(res==r) //Pusiste un punto y coma que no era
  23.    cout<<"correcto\n";
  24.  
  25.     else
  26.     cout<<"falso\n";
  27.    }
  28.    system("PAUSE");
  29.    return EXIT_SUCCESS;
  30. }//Te faltaba cerrar la llave de tu funcion...
  31.  
35  Programación / Programación C/C++ / Re: [Ayuda] Programa sobre tabla de multiplicar me tiene mal T_T en: 1 Mayo 2015, 19:08 pm
Creo esto es lo que quieres, busca un buen libro de programación "Aprendiendo c en 21 días" tal ves te ayude un poco.
Código
  1. #include <iostream>
  2.  
  3. //Esto es solo si tu compilador lo necesita
  4. using namespace std;
  5.  
  6. main()
  7. {
  8.  //Variables a utilizar
  9.  int n, res, cont=0;
  10.  char S;
  11.  do
  12.  {
  13.    cout << "Ingrese la tabla que quiere evaluar: ";
  14.    //Ingresas la tabla
  15.    cin >> n;
  16.  
  17.    //Crea un ciclo de 1 a 10 que son las veces que se va
  18.    //a repetir y de igual manera el numero por el cual se
  19.    //va a multiplicar.
  20.    for (int i=1;i<=10;i++)
  21.    {
  22.      //Muestra por pantalla la opreacion
  23.      cout << n <<" * "<< i << "= ";
  24.      //Introduces el resultado
  25.      cin >> res;
  26.      //Evalua el resultado, si es igual al de la operacion
  27.      //se le aumenta al contador +1
  28.      if (res==n*i)
  29.      {
  30.        cont++;
  31.      }
  32.    }
  33.    //Imprime el resultado del contador
  34.    cout << "\nTu resultado fue: "<< cont;
  35.    //Pide al usuario una letra para continuar o no
  36.    cout << "\n\nDesea continuar? S/N: ";
  37.    //Ingresa la letra
  38.    cin >>S;
  39.    //evalua la letra para ver si repite el ciclo do-while
  40.  }while (S=='S'||S=='s');
  41.  return 0;
  42. }
  43.  
36  Programación / Programación C/C++ / Re: Duda sobre graficas en c. en: 21 Abril 2015, 07:05 am
Mira... esta es una idea :) falta depurarlo un poco pero fue lo mejor que pude hacer en un rato, saludos!
Código
  1. #include <iostream>
  2. #include <stdlib.h>
  3. #include <stdio.h>
  4. #include <windows.h>
  5. #include <conio.h>
  6.  
  7. using namespace std;
  8.  
  9. void gotoxy(int x,int y);
  10.  
  11. #define MAX 40
  12.  
  13. class Grafica
  14. {
  15. public:
  16.  
  17.  Grafica(int y, int x)
  18.  {
  19.    MAX_X=x;
  20.    MAX_Y=y;
  21.  }
  22.  
  23.  void tabla()
  24.  {
  25.    cout << "\tGrafica" <<endl<<endl;
  26.    for(int y=MAX_Y;y>=0;y--)
  27.    {
  28.      if(y<10)
  29.        cout << " ";
  30.  
  31.      cout << y << "-" << char(179);
  32.      if(y>0)
  33.      {
  34.        cout << endl;
  35.      }
  36.  
  37.      if(y==0)
  38.      {
  39.        for(int x=0;x<MAX_X;x++)
  40.        {
  41.          cout << char (196)<< char(179);
  42.        }
  43.      }
  44.    }
  45.  }
  46.  
  47.  void llenar()
  48.  {
  49.    int j=0,x=5,y=2,cont=0;
  50.  
  51.    while(cont<MAX_X*2)
  52.    {
  53.      for(int i=MAX_Y;i>0;i--)
  54.      {
  55.        if(d[j]==i)
  56.        {
  57.          gotoxy(x,y++);
  58.          cout << char (177)<< endl;
  59.          d[j]--;
  60.        }
  61.  
  62.        else {cout << endl; y++;}
  63.      }
  64.  
  65.      j++; x++; cont+=2;
  66.  
  67.      if(j<MAX_Y)
  68.      {
  69.        x=5+cont; y=2;
  70.      }
  71.    }
  72.  }
  73.  
  74.   void in_datos()
  75.  {
  76.    for (int i=0;i<MAX_X;i++)
  77.    {
  78.      cout << "Ingresa los datos de x"<<i+1<< ": ";
  79.      cin >> d[i];
  80.    }
  81.  }
  82.  
  83. private:
  84.  int MAX_X,MAX_Y;
  85.  int d[MAX];
  86. };
  87.  
  88. COORD coord={0,0};
  89.  
  90. void gotoxy(int x,int y)
  91. {
  92.    coord.X=x;
  93.    coord.Y=y;
  94.    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord);
  95. }
  96.  
  97. main ()
  98. {
  99.  int x,y;
  100.  
  101.  cout << "Ingresa la cantidad maxima en Y: ";
  102.  cin >> y;
  103.  cout << "Ingresa cuantos datos hay en X: ";
  104.  cin >> x;
  105.  
  106.  Grafica G1(y,x);
  107.  
  108.  G1.in_datos();
  109.  system("cls");
  110.  
  111.  G1.tabla();
  112.  G1.llenar();
  113.  
  114.  gotoxy(x,y);
  115.  cout << endl<<endl<<endl;
  116.  
  117.  getch();
  118.  return 0;
  119. }
  120.  
  121.  
37  Programación / Programación C/C++ / Re: Ayuda para un contador en: 17 Abril 2015, 03:41 am
Haz intentado poner la variable "c" como tipo static int ? por que como sales de la función de tu menú SUPONGO que muere la variable. Inténtalo, si no publica tu código.

Código
  1. static int c=0;

Y tu código yo lo pondría así:

Código
  1. switch(num_op)
  2. {
  3. case 1:
  4.          printf("Consulta: %d\n\n", c);
  5.  printf("Ingrese el nombre del lugar de origen del recorrido:\n");
  6.          scanf("%s", &s_origen); printf("\n");
  7.          printf("Ingrese el nombre del lugar de destino del recorrido:\n");
  8.          scanf("%s", &s_destino); printf("\n");
  9.          ValiHora();
  10.          ValiPresupuesto();
  11.          break;
  12.  
  13.  default: break;
  14. }            
38  Programación / Programación C/C++ / Re: Menú ¿Dinámico? en C en: 6 Abril 2015, 04:34 am
A lo mejor te interesa que menu() retorne la opción elegida, para que no haya sido en vano xD

También puedes pasarle a meno un arreglo de opciones, para no tener que andar tocando la función en sí.

https://github.com/ivancea/Varios/blob/master/C%2B%2B/selector.h
Ahí un ejemplo de una clase en C++, sin usar windows.h.

No se si te entendí bien con lo de la función menu(), pero si retoma la opción o bueno al regresar si se queda seleccionada, solo quería saber si el código que hice se puede simplificar x).
Veré si puedo hacer lo de los arreglos y gracias aunque aún no se programar en C++  :xD
39  Programación / Programación C/C++ / Menú ¿Dinámico? en C en: 5 Abril 2015, 20:22 pm
Buenas, no se si tenga algún nombre en especifico este tipo de menús, acabo de hacer esta "plantilla" por así decirlo, sólo que quiero saber si se puede simplificar más o que consejo me darían para hacer los menús así.  ;D


Código
  1. #include <iostream>
  2. #include <conio.h>
  3. #include <stdlib.h>
  4. #include <stdio.h>
  5. #include <windows.h>
  6.  
  7. using namespace std;
  8. //Define las opciones máximas.
  9. #define opmax 3
  10.  
  11. void SetBG(int ForgC, int BackC);
  12. void menu ();
  13. int tec(int *o1,int *o2,int *o3,int *y,int *t1,int *t2,int *t3);
  14.  
  15. main ()
  16. {
  17.  while (1)
  18.  {
  19.    menu();
  20.  }
  21. }
  22. //Define la función de menú
  23. void menu ()
  24. {
  25.  SetBG(15,0);
  26.  static int o1=14,o2=0,o3=0,y=0,t1=0,t2=15,t3=15;
  27.  
  28. do{
  29.    system("cls");
  30.    cout << "\n   MENU";
  31.    cout << "\n==========";
  32.    SetBG(t1,o1);
  33.    cout << "\n\n*Opcion 1";
  34.    SetBG(t2,o2);
  35.    cout << "\n\n*Opcion 2";
  36.    SetBG(t3,o3);
  37.    cout << "\n\n*Opcion 3";
  38.    SetBG(15,0);
  39.  }while (tec(&o1,&o2,&o3,&y,&t1,&t2,&t3)!=13);
  40.  
  41.  switch (y)
  42.  {
  43.    case 1: system("cls");cout << "Ejecutando 1";
  44.            break;
  45.    case 2: system("cls");cout << "Ejecutando 2";
  46.            break;
  47.    case 3: system("cls");cout << "Ejecutando 3";
  48.            break;
  49.    default: break;
  50.  
  51.  }
  52.  getch();
  53. }
  54. //Define la función que lee las teclas usadas por el usuario.
  55. int tec(int *o1,int *o2,int *o3,int *y,int *t1,int *t2,int *t3)
  56. {
  57.    int s;
  58.    s=getch();
  59.    switch (s)
  60.    {
  61.      case char(72):  *y-=1;
  62.                      break;
  63.      case char(80):  *y+=1;
  64.                      break;
  65.      case char(13):  return 13;
  66.                      break;
  67.      default:  break;
  68.    }
  69.    switch (*y)
  70.    {
  71.      case 1: *o1=14;*o2=0;*o3=0;
  72.              *t1=0;*t2=15;*t3=15;
  73.              break;
  74.      case 2: *o1=0;*o2=14;*o3=0;
  75.              *t1=15;*t2=0;*t3=15;
  76.              break;
  77.      case 3: *o1=0;*o2=0;*o3=14;
  78.              *t1=15;*t2=15;*t3=0;
  79.              break;
  80.      default:  break;
  81.    }
  82.  
  83.    if (*y==0)
  84.      *y+=1;
  85.    if (*y>opmax)
  86.      *y=*y-1;
  87. }
  88.  
  89. void SetBG(int ForgC, int BackC)
  90. {
  91.  WORD wColor = ((BackC & 0x0F) << 4) + (ForgC & 0x0F);;
  92.  SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), wColor);
  93. }
  94.  
  95.  
40  Programación / Programación C/C++ / Re: en: 5 Abril 2015, 17:34 pm
If(grade=='a' || grade=='A')
    ++aCount
else if(.....)

Exacto,  debes hacerlo así, sólo que no te recomiendo ese libro para empezar de nuevo a programar, en lo particular pienso que su forma de enseñar es muy enredada  :xD busca "Aprendiendo C en 21 días" te cambiará la vida  ::) o si es que tienes la posibilidad de comprar "PROGRAMACIÓN EN C /C++ JAVA Y UML." De Luis Joyanes Aguilar / Ignacio Zahonero Martinez igual es muy bueno para los demás lenguajes y reafirmar el C.
Saludos!   ;D
Páginas: 1 2 3 [4] 5
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines