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

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


  Mostrar Mensajes
Páginas: 1 2 3 [4] 5 6
31  Sistemas Operativos / GNU/Linux / Archivos temporales OpenSUSE 13.1 en: 2 Noviembre 2014, 20:04 pm
Buenas, Tengo un pequeno inconveniente a la hora de eliminar los archivos temporales en mi sistema operativo Open SUSE 13.1...

He leido en varias paginas y he visto en casi todas o en todas la misma solucion la cual es:

Abrimos una consola como superusuario root, copiamos el archivo /usr/lib/tmpfiles.d/tmp.conf con el mismo nombre tmp.conf y en otra carpeta distinta /etc/tmpfiles.d.

Citar
sudo cp /usr/lib/tmpfiles.d/tmp.conf /etc/tmpfiles.d/tmp.conf

Por defecto esta así: Cada 10 días elimina el contenido de la carpeta /tmp y cada 30 días el de la carpeta /var/tmp.

Citar
d /tmp 1777 root root 10d
d /var/tmp 1777 root root 30d

Luego dice lo siguiente:

Para dejarlo en 1 día o cada vez que arranque el sistema para /tmp y /var/tmp, solo tenemos que dejarlo así, cambiado los parámetros d por D y 10d y 30d por 1d.

Citar
D /tmp 1777 root root 1d
D /var/tmp 1777 root root 1d

Pues bien, en el archivo que debo editar las lineas me aparecen de esta manera:

Citar
d /tmp 1777 root root -
d /var/tmp 1777 root root -

Aparte de esto cuando lo voy a guardar luego de editarlo, no me deja, me sale el siguiente mensaje:

Citar
El docuemnto no se puede guardar porque no fue posible escribir en /etc/tmpfiles.d/tmp.conf

Compruebe que tiene permiso de acceso o si hay sufuciente espacio disponible en el disco.

Espacio en el disco tengo y de sobra....Lo de el permiso no lo entiendo....como puedo obtener dicho permiso para poder editar el archivo.

Muchas Gracias, si alguien me puede colaborar...
32  Programación / Programación C/C++ / Re: Duda con strings y punteros en: 1 Noviembre 2014, 03:07 am
Muchas gracias ivancea96

Aqui dejo como lo hice por si a alguien mas le interesa.... ademas de otro codigo para pasar cadenas tipo char a string y viceversa. Saludos.

Recorrer una cadena tipo string mediante punteros:

Código
  1. #include <iostream>
  2. #include <cstring>
  3.  
  4. using std::cout;
  5. using std::string;
  6.  
  7. int main ()
  8. {
  9.   cout << "Recorrer una cadena tipo string mediante punteros\n\n";
  10.  
  11.   string str ("HELLO WROLD");    // Declaro y asigno la cadena "HELLO WORLD" a la variable srt de tipo string
  12.  
  13.   char *p1 = new char [str.length()+1];  // Declaro puntero de tipo char...con la longitud de la cadena mas 1 que indica el caracter nulo
  14.  
  15.   strcpy (p1, str.c_str());  // Copio la cadena srt en la direccion de memoria del puntero p1
  16.  
  17.   while (*p1!='\0')  // recorro la cadena hasta que encuentre el caracter nulo '\0'
  18.   {
  19.      std::cout << *p1 << '\n';  // imprimo cada caracter de la cadena asignada al puntero p1
  20.  
  21.      p1++;                      // incremento la direccion de memoria de cada caracter de la cadena.
  22.   }
  23.  
  24.  return 0;
  25. }
  26.  

Paso de string a char y viceversa:

Código
  1.  
  2. #include <iostream>
  3. #include <cstring>
  4.  
  5. using std::cout;
  6. using std::string;
  7.  
  8. int main()
  9. {
  10.   string sCadena;           //Declaro variable tipo string
  11.  
  12.   // paso de char* a string
  13.  
  14.   cout << "Paso de cadena a string \n\n";
  15.  
  16.   char szCadena[10] = "adios";   // Declaro y asigno cadena "adios" a variable szCadena de tipo char
  17.  
  18.   cout << "Cadena tipo char: " << szCadena << endl;
  19.  
  20.   sCadena = szCadena;            // a la variable sCadena de tipo string le asigo el contenido de la variable szCadena de tipo char
  21.  
  22.   cout << "Cadena tipo string: " << sCadena << endl;  // Imprime "adios"
  23.  
  24. //-------------------------------------------------------------------------------------------------//
  25.  
  26.   cout << "\nPaso de string a char*\n\n";
  27.  
  28.   // Paso de string a char*
  29.  
  30.   sCadena = "HELLO";             // Asigo a la variable sCadena de tipo string la cadena "HELLO"
  31.  
  32.   // COPIO mediante la funcion strcpy la cadena de la variable sCadena de tipo string en forma de char*
  33.   // en la variable szCadena mediante c_str().
  34.  
  35.   //// copio la cadena "HELLO" de la variable sCadena de tipo string en la variable de tipo char (szCadena
  36.  
  37.   strcpy(szCadena,sCadena.c_str());
  38.  
  39.   cout << "Cadena convertida en char: " << szCadena << endl;  // Imprime "HELLO".
  40.  
  41.   return 0;
  42. }
  43.  
33  Programación / Programación C/C++ / Duda con strings y punteros en: 31 Octubre 2014, 22:41 pm
Buenas, quisiera saber como declarar un puntero a un string de c++... para saber como recorrer el string.

Aca tengo la manera en que se deben usar los punteros con arreglos de tipo entero y con cadenas de tipo char... Pero...

Lo que quiero saber no es recorrer una cadena de tipo char[5] = {'H', 'E', 'L', 'L', 'O', '\0'};

sino una cadena de tipo string:   string = "HELLO";  mediante el uso de punteros.

Código
  1. /// PUNTEROS ///
  2.  
  3. #include <iostream>
  4.  
  5. using std::cout;
  6. using std::cin;
  7. using std::endl;
  8.  
  9. // Aritmetica de punteros
  10.  
  11. int main()
  12. {
  13.   cout << "Aritmetica de punteros:\n\n";
  14.  
  15.   int V[10] = {5,4,3,2,1};  //Declaramos arreglo de tipo int y lo inicializamos
  16.   int *p1 = V;             // asignamos un puntero de tipo int que apunte al arreglo 'V'
  17.  
  18.   // De esta manera solo estamos apuntando hacia el valor del primer indice del arreglo
  19.   // en este caso seria el indice 0 que contiene el valor de 5.
  20.   cout << "El valor del indice 0 del arreglo: " << *p1 << endl;
  21.   cout << "La direccion del indice 0 del arreglo: " << p1 << endl;
  22.  
  23.   cout << "\nAccedemos a cada uno de los valores del arreglo con el puntero \n\n";
  24.   cout << "Valor del indice 1: " << *(p1 + 1) << " y su direccion es: " << p1+1 << endl;
  25.   cout << "Valor del indice 2: " << *(p1 + 2) << " y su direccion es: " << p1+2 <<endl<<endl;
  26.  
  27.   cout << "Para recorrer todo el arreglo con punteros lo hago con un ciclo \n\n";
  28.   for(int i=0 ; i<10 ; i++)
  29.   {
  30.      cout << *(p1 + i) << endl; // imprimo los valores del arreglo
  31.   }
  32.  
  33.   return 0;
  34. }
  35.  

Código
  1. /// PUNTEROS ///
  2.  
  3. #include <iostream>
  4.  
  5. using std::cout;
  6. using std::cin;
  7. using std::endl;
  8.  
  9. int main()
  10. {
  11.   cout << "Recorrer cadena de caracteres con punteros:\n\n";
  12.  
  13.   cout << "Cadena = PUNTEROS \n";
  14.  
  15.   char cadena[] = {'P','U','N','T','E','R','O','S','\0'};
  16.  
  17.   char *p1 = cadena; // Declaro un puntero que apunte a cadena
  18.  
  19.   while(*p1 != '\0')  // Cilo mientras que llegamos al final de la cadena
  20.   {
  21.      cout << *p1 << endl;  // Imprimo cada caracter de la cadena
  22.      p1++;                 // incremento en cada iteracion la direccion de memoria de cada caracter.
  23.   }
  24.  
  25.   return 0;
  26. }
  27.  


De antemano. Muchas Gracias por su colaboracion

34  Programación / Programación C/C++ / Agenda en c++ con estructura en: 28 Octubre 2014, 20:52 pm
Buenas, estoy realizando una agenda en c++ con menu....que me guarde los datos en un archivo .txt y hasta ahora llevo la primera opcion del menu...(Adicionar un contacto)...Estoy haciendo la 2da opcion del menu...(encontrar o buscar contacto)...pero tengo problemas en la funcion, cuando quiero leer los datos del archivo para comprarlo con el nombre dado por el usuario...No tengo claro como leer los datos del archivo....o si los estoy guardando de manera correcta... aca dejo el codigo quien pueda darme algun consejo le agradeceria....

Código
  1. /*_____LIBRARIES______*/
  2.  
  3. #include <iostream>
  4. #include <iomanip>   // setw()
  5. #include <fstream>   // read and write outfile .txt
  6. #include <string>
  7.  
  8. using std::setw;      // tab
  9. using std::ofstream;  // write outfile .txt
  10. using std::ifstream;  // read outfile .txt
  11. using std::cout;
  12. using std::cin;
  13. using std::endl;
  14. using std::string;
  15.  
  16.  
  17. /*_____GLOBAL VARIABLS______*/
  18.  
  19. const int LEN = 2;
  20.  
  21. /*_____FUNTIONS______*/
  22.  
  23. void menu();
  24.  
  25. void ADD_friend (struct FRIENDS people[], int);
  26.  
  27. void LOOK_FOR (struct FRIENDS people[], int);
  28.  
  29. /*_____STRUCTS________*/
  30.  
  31. struct FRIENDS
  32. {
  33.  string Naame, email, Adress, phone;
  34. };
  35.  
  36. /*_____MAIN FUNTION_____*/
  37.  
  38. int main()
  39. {
  40.  cout << "\t *************---------------****************\n";
  41.  cout << "\t *************  MY CONTACTS  ****************\n";
  42.  cout << "\t *************---------------****************\n\n";
  43.  
  44.  int option;       // options of switch case loop
  45.  int index = 0;    //Position of each contact.
  46.  
  47.  struct FRIENDS Data[LEN];     // STRUCT //
  48.  
  49.  do
  50.  {
  51.    menu(); // call funtion => show the MENU
  52.  
  53.    while(true)    // CHOOSE OPTION //
  54.    {
  55.      cout << "Enter your option: ";
  56.      cin >> option;
  57.      cin.ignore();
  58.  
  59.      if(option >= 1 && option <= 7)
  60.      {
  61.      break;
  62.      }
  63.      else
  64.      {
  65.        cout << "ERROR, Enter correct value.\n\n";
  66.      }
  67.    }
  68.  
  69.    switch(option)  // OPTIONS FUNTIONS //
  70.    {
  71.      case 1:
  72.        ADD_friend (Data,index);
  73.        break;
  74.  
  75.      case 2:
  76.        cout << "Find a contact \n";
  77.        LOOK_FOR(Data,index);
  78.        break;
  79.  
  80.      case 3:
  81.        cout << "Edit funtion";
  82.        break;
  83.  
  84.      case 4:
  85.        cout << "Clear funtion";
  86.        break;
  87.  
  88.      case 5:
  89.        cout << "show all contacts";
  90.        break;
  91.  
  92.      case 6:
  93.        cout << "GOOD BYE" << endl;
  94.        break;
  95.    }
  96.  }while(option != 6);
  97.  
  98.  cin.get();
  99.  return 0;
  100. }
  101.  
  102. /// MENU FUNTION ///
  103.  
  104. void menu()
  105. {
  106.  cout << "\n/////////  MENU  //////////" << endl;
  107.  cout << "---------------------------" << endl;
  108.  cout << "Choose an option:" << endl << endl;
  109.  
  110.  cout << "1. Add friend." << endl;
  111.  cout << "2. find a friend." << endl;
  112.  cout << "3. Edit." << endl;
  113.  cout << "4. Clear." << endl;
  114.  cout << "5. Show all friends." << endl;
  115.  cout << "6. Exit." << endl << endl;
  116. }
  117.  
  118. /// ADD_FRIEND_outFile.txt FUNTION ///
  119.  
  120. void ADD_friend (FRIENDS people[], int index)
  121. {
  122.  cout << "Name: ";
  123.  getline(cin,people[index].Naame);
  124.  
  125.  cout << "Phone: ";
  126.  getline(cin,people[index].phone);
  127.  
  128.  cout << "E-mail: ";
  129.  getline(cin,people[index].email);
  130.  
  131.  cout << "Address: ";
  132.  getline(cin,people[index].Adress);
  133.  
  134.  index++;     // increment the index for the next position to add a contact
  135.  cout << endl;
  136.  
  137.  ofstream out_data("CONTACTS.txt"); //Out-file information in CONTACTS.txt
  138.  
  139.  out_data << "\t ***************** MY CONTACTS *****************\n\n";
  140.  
  141.  for(int i=0 ; i<index; i++)
  142.  {
  143.    out_data << setw(5); out_data  << people[i].Naame;
  144.    out_data << setw(30); out_data << people[i].phone;
  145.    out_data << setw(30); out_data << people[i].email;
  146.    out_data << setw(30); out_data << people[i].Adress << endl;
  147.  }
  148.  out_data.close();
  149. }
  150.  
  151. /// LOOK_FOR a FRIEND FUNTION ////
  152.  
  153. void LOOK_FOR (struct FRIENDS people[], int index)
  154. {
  155.  ifstream read_data("CONTACTS.txt");
  156.  
  157.  if(read_data.is_open())
  158.  {
  159.    string NN;               // Nombre ingresado por el usuario para comprar con datos del archivo .txt
  160.  
  161.    cout << "Enter a name: ";
  162.    getline(cin,NN);
  163.  
  164.    for(int i=0 ; i<index ; i++)
  165.    {
  166.      if(NN.compare(people[i].Naame) == 0)
  167.      {
  168.        cout << "Name: "   << people[i].Naame << endl;
  169.        cout << "Phone"    << people[i].phone << endl;
  170.        cout << "E-mail: " << people[i].email << endl;
  171.        cout << "Address: "<< people[i].Adress<< endl;
  172.      }
  173.    }
  174.  }
  175.  read_data.close();
  176. }
  177.  
35  Programación / Programación C/C++ / Re: Ordenar alfabeticamente Nombres (Struct) en: 22 Octubre 2014, 19:10 pm
Bueno si tienes toda la razon, igual para identificar en el codigo puedo poner un simple comentario, creo que seria mas adecuado.... Nuevamente gracias por tus consejos, creo que estos pequenos detalles ayudan mucho.
36  Programación / Programación C/C++ / Re: Ordenar alfabeticamente Nombres (Struct) en: 22 Octubre 2014, 18:23 pm
Muchas gracias eferion tendre encuenta cada situacion que mencionaste....voy a buscar un poco mas de informacion respecto a la funcion 'sort' para seguir implementandola y sobre la opcion de sobrecargar los operadore, creo que es muy util en estos casos....y respecto a el uso de struct ya lo sabia solo que lo hago simplemente para tener claro e identificar la estructura mas facil en el codigo...igual afecta si lo pongo o no??,  tengo entendido que no... Igualmente muchas gracias.  ;-) ;D ;D
37  Programación / Programación C/C++ / Re: Ordenar alfabeticamente Nombres (Struct) en: 22 Octubre 2014, 06:30 am
rir3760 Si tenia la idea tal cual me dices pero estaba cometiendo un error...

Estaba colocando en la asignacion de la variable auxiliar asi....aux =  people.Naame.....tenia demas el .Naame....ahora bien quisiera saber el porque no se puede hacer esto...No tengo claro ese concepto, si me puedes explicar por favor te lo agradeceria.

La funcion qued asi:
Código
  1. /// Sorted_Data FUNTION ///   //Show the employees names sorted alphabetically
  2.  
  3. void Sorted_Data(struct Employees people[], int i)
  4. {
  5.   struct Employees aux;
  6.  
  7.    for(i=0 ; i<LEN; i++)
  8.    {
  9.        for(int j=0 ; j<LEN-1 ; j++)
  10.        {
  11.            if(people[j].Naame > people[i].Naame)
  12.            {
  13.                aux = people[i];
  14.                people[i] = people[j];
  15.                people[j] = aux;
  16.            }
  17.        }
  18.    }
  19. }
  20.  
38  Programación / Programación C/C++ / Ordenar alfabeticamente Nombres (Struct) en: 22 Octubre 2014, 01:51 am
Buenas quiero resolver este ejercicio y esto es lo que llevo... Mi duda es en como ordenar alfabeticamente los nombres de los empleados, (Se que puedo hacerlo por el metodo Burbuja y se como funciona este metodo) como comparo los string Naame.....ya que se hacerlo con strcmp pero esto es con cadenas de caracteres char. Ademas como inserto la variable auxiliar sabiendo que es una structura.... MUCHAS GRACIAS POR SUS RESPUESTAS....

Código
  1. /* Leer 3 estructuras del arreglo "empleado" que contiene la siguiente info:
  2.    nombre
  3.    dirección ( calle, numero, localidad)
  4.    edad
  5.    sexo ( M = masculino, F = femenino)
  6.    a) Listar los empleados menores de 25 anos
  7.    b) Ordenar el vector por nombre y listarlo  */
  8.  
  9. /*---- LIBRARIES ----*/
  10.  
  11. #include <iostream>
  12. #include <string>  
  13.  
  14. #define LEN 3
  15.  
  16. using std::cout;
  17. using std::cin;
  18. using std::endl;
  19. using std::string;
  20.  
  21. /*---- FUNTIONS ----*/
  22.  
  23. void Read_Data(struct Employees people[],int);    //Read input data
  24.  
  25. void Less_25years(struct Employees people[],int); //Show the employees under 25 years old
  26.  
  27. //--------------------------------------------------//
  28. //void Sorted_Data();  //sorted alphabetically       <<<<----| Funtion
  29. //--------------------------------------------------//
  30.  
  31. void Show_Data(struct Employees people[],int);    //Show the employees names
  32.  
  33. /*---- STRUCTS -----*/
  34.  
  35. struct Direction
  36. {
  37.    char street[15];
  38.    char Number[15];
  39.    string local;
  40. };
  41.  
  42. struct Employees
  43. {
  44.    string Naame;
  45.    unsigned int age;
  46.    char sex;
  47.  
  48.    struct Direction home;
  49. };
  50.  
  51. /*---- Main Funtion -----*/
  52.  
  53. int main()
  54. {
  55.    cout << "********* STRUCT, INFO - EMPLOYEES **********\n\n";
  56.  
  57.    struct Employees Data[LEN];
  58.  
  59.    int i;
  60.  
  61.    Read_Data(Data,i);
  62.  
  63.    cout << "-------EMPLOYEES UNDER 25 YEARS OLD-------- \n\n";
  64.  
  65.    Less_25years(Data,i);
  66.  
  67.    cout << "-------EMPLOYEES SORTED ALPHABETICALLY----- \n\n";
  68.  
  69.    //---------------------------------------------------------//
  70.    // funtion //sorted alphabetically  (BUBBLE SORT)            <<<----Here Funtion
  71.    //--------------------------------------------------------//
  72.  
  73.  
  74.    Show_Data(Data,i);  //Show the employees names
  75.  
  76.    return 0;
  77. }
  78.  
  79. /// READ_DATA FUNTION ///
  80.  
  81. void Read_Data(struct Employees people[], int i)
  82. {
  83.    for(i=0 ; i<LEN ; i++)
  84.    {
  85.        cout << "Employee Name: ";
  86.        getline(cin,people[i].Naame);
  87.  
  88.        cout << "Age: ";
  89.        cin >> people[i].age;
  90.        cin.ignore();
  91.  
  92.        cout << "Sex (M)-(F): ";
  93.        cin >> people[i].sex;
  94.        cin.ignore();
  95.  
  96.        cout << "\nDIRECTION \n";
  97.  
  98.        cout << "Street: ";
  99.        cin.getline (people[i].home.street, 15);
  100.  
  101.        cout << "Number: ";
  102.        cin.getline(people[i].home.Number, 15);
  103.  
  104.        cout << "Location: ";
  105.        getline(cin,people[i].home.local);
  106.  
  107.        cout << endl;
  108.    }
  109. }
  110.  
  111. /// LESS_25years FUNTION ///
  112.  
  113. void Less_25years(struct Employees people[],int i)
  114. {
  115.   for(i=0 ; i<LEN ; i++)
  116.   {
  117.        if(people[i].age < 25)
  118.        {
  119.            cout << "Name: " << people[i].Naame << endl;
  120.            cout << "Age: " << people[i].age<< endl;
  121.            cout << "Sex: " << people[i].sex << endl;
  122.            cout << "Street: " << people[i].home.street << endl;
  123.            cout << "Number: " << people[i].home.Number << endl;
  124.            cout << "Location: " << people[i].home.local << endl;
  125.        }
  126.    }
  127.    cout << endl;
  128. }
  129.  
  130. /// Sorted_Data FUNTION ///   //Show the employees names sorted alphabetically
  131.  
  132.  
  133.  
  134. /// SHOW_DATA FUNTION ///
  135.  
  136. void Show_Data(struct Employees people[],int i)
  137. {
  138.    for(i=0 ; i<LEN ; i++)
  139.    {
  140.        cout << "Name: " << people[i].Naame << endl;
  141.        cout << "Age: " << people[i].age<< endl;
  142.        cout << "Sex: " << people[i].sex << endl;
  143.        cout << "Street: " << people[i].home.street << endl;
  144.        cout << "Number: " << people[i].home.Number << endl;
  145.        cout << "Location: " << people[i].home.local << endl;
  146.    }
  147. }
  148.  
  149.  

Sugerencias sobre el programa, como mejorarlo o simplificarlo si es posible.....

PD: Que no sea con vectores ya que todavia no he visto el tema....jejeje estoy de autodidacta y no he llegado alli...   ;D ;D ;D ;D
39  Programación / Programación C/C++ / Re: Ejercicio simple estructuras en: 13 Octubre 2014, 20:33 pm
Muchas gracias por sus respuestas, lo corregi utilizando el cin.ignore();.....gracias ivancea96

rir3760 ...Aun no he visto vectores...estoy de autodidacta, asi que cuando llegue alli hare uso de lo que me dices....Ademas creo que podre ver la diferencia entre usar ambos, espero...Igualmente muchas gracias por tus consejos.

YuseTist...Creo que no era lo que estaba buscando, igualmente gracias por tu respuesta y la verdad no uso system("PAUSE") ya que no tiene portabilidad, lo hacia cuando usaba Windows, ahora en linux es totalmente inutil, me da error, por eso ya asi lo haga en Windows no lo utilizo.

Muchas gracias.
40  Programación / Programación C/C++ / Ejercicio simple estructuras en: 13 Octubre 2014, 09:33 am
Buenas, ando por aca queriendo aclarar el porque no me ejecuta de manera correcta este codigo.

 Aclaro: En el codigo las variables estan en ingles por que necesito practicar mi ingles ;D

Código
  1. #include <iostream>
  2. #include <string>
  3.  
  4. using std::cout;
  5. using std::cin;
  6. using std::endl;
  7. using std::string;
  8.  
  9. struct Employees   // struct's name
  10. {
  11.    string name;
  12.    string sex;
  13.    float pay;
  14. };
  15.  
  16. int main()
  17. {
  18.    int number;  // # employees  
  19.  
  20.    cout << "Enter # Employees: ";
  21.    cin >> number;
  22.  
  23.    struct Employees data[number];  // declare data type of Employees
  24.  
  25.    int i;
  26.  
  27.    for(i=0 ; i<number ; i++)   // Loop to save all data
  28.    {
  29.        cout << "Name: ";
  30.        getline(cin,data[i].name);
  31.        cout << "Sex: ";
  32.        getline(cin,data[i].sex);
  33.        cout << "Payment: ";
  34.        cin >> data[i].pay;
  35.    }
  36.  
  37.   //Loop to print out
  38.  
  39.    for(i=0 ; i<number ; i++)
  40.    {
  41.        cout << data[i].name << endl;
  42.        cout << data[i].sex << endl;
  43.        cout << data[i].pay <<"\n\n";
  44.    }
  45.  
  46.    return 0;
  47. }
  48.  

Cuando lo ejecuto me sale esto:
------------------------------------------

Enter # Employees: 2   // (coloco el #)

Name: Sex:

----------------------------------
No me deja ingresar el Nombre, sino que me sale seguido Sex cuando deberia salir en la siguiente linea luego de yo digitar el nombre y que quede guardado en:
Código
  1. data[i].name
  2.  
Muchas gracias por su colaboracion, cualquier consejo, critica constuctiva bienvenida sea.
Páginas: 1 2 3 [4] 5 6
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines