• Jueves 18 de Abril de 2024, 07:04

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - meana

Páginas: [1] 2
1
C/C++ / Re:Ignorar señales
« en: Viernes 11 de Mayo de 2012, 18:58 »
Bueno por si le sirve a alguien en algun momento me contestare a mi mismo...
La verdad al final resulto mas sencillo de lo que yo creia y como en casi todas estas cosas son tonterias de las que no te das cuenta en mucho tiempo. Bueno entrando en lo que importa.
Nada mas entrar en el main tienes que capturar la señal SIGINT e ignorarla directamente con el siguiente codigo:
Código: [Seleccionar]
struct sigaction sig;
sig.sa_handler=SIG_IGN;
sig.sa_flags=0;
sigemptyset(&sig.sa_mask);

sigaction(SIGINT, &sig, NULL);

Una vez hecho esto como los procesos hijos se crean mediante un fork debemos volver a colocar la accion a la señal como estaba para ello empleamos el siguiente codigo:
Código: [Seleccionar]
sig.sa_handler=SIG_DFL;
sig.sa_flags=0;
sigemptyset(&sig.sa_mask);

sigaction(SIGINT, &sig, NULL);
Este último trozo de codigo se debe de colocar la parte que ejecuta unicamente el proceso hijo, si no al padre le volveria a afectar el Ctrl+C

Espero que le pueda servir a alguien

2
C/C++ / Ignorar señales
« en: Jueves 10 de Mayo de 2012, 12:23 »
Hola

Estoy programando un pequeño shell y en estos momentos estoy intentando hacer que este sea inmune a ciertas señales como por ejemplo SIGINT (Ctrl+C), pero que no lo sean los procesos que este lanza. Por el momento lo único que consigo es que todos sean inmunes o en su defecto que no lo sea únicamente el primer proceso que lanzo, no se si me estare explicando muy bien sorry, os dejo el codigo de captura y tratamiento de señales que tengo hecho en ambas versiones a ver si alguno de vosotros me puede decir algo

Esta es la version en la que todos los procesos son inmunes
Código: [Seleccionar]
void Manejador(int sig) {
cout << "\n";
signal(sig, SIG_IGN);
}

int main() {
pid_t pid;

struct sigaction act;
act.sa_handler=Manejador;
act.sa_flags=0;
sigemptyset(&act.sa_mask);
sigaction(SIGINT, &act, NULL);
kill(pid, SIGINT);

Esta version son inmunes todos, menos el primer proceso que lanzo
Código: [Seleccionar]
void Manejador(int sig) {
if(sig==SIGINT) signal(SIGINT, SIG_IGN);
}

int main() {

signal(SIGINT, Manejador);


por cierto estoy programando en UNIX

3
Visual Basic 6.0 e inferiores / Sonidos
« en: Miércoles 20 de Abril de 2011, 12:21 »
Hola como puedo hacer para reproducir un sonido con visual?¿ he estado mirnado por internet y no encuentro nada interesante...
aclarar que quiero que el sonido se reproduzca cuando se cumplan unas condiciones, vamos que no quiero hacer unos controles para el play y demas...

4
C/C++ / Re: Lectura desde entrada estándar con iteradores
« en: Sábado 16 de Abril de 2011, 13:32 »
he estado mirando y ahoramismo creo que el problema solo puede estar en el copy que me mete los datos al vector o en el operador de entrada de la clase piloto...
este es el operador de entrada
Código: C++
  1.  
  2. istream & operator >> (istream &in, piloto &p){
  3.   getline(in, p.nombre);
  4.   in >> p.numero;
  5.   in.ignore();
  6.   in >> p.moto >> p.pais;
  7.  
  8.  
  9.   return in;
  10. }
  11.  
  12.  

5
C/C++ / Lectura desde entrada estándar con iteradores
« en: Jueves 14 de Abril de 2011, 20:30 »
Hola estoy haciendo un pequeño programa que debe leer de la entrada estandar una serie de datos para almacenarlos en un vector. La entrada estandar la redirijo desde un fichero, es decir la llamada al ejecutable la hago de la siguiente forma: ./nombre_ejecutable < fichero.txt (uso linux) el problema esta en que solo me lee el primer dato del fichero y llevo toda la tarde mirando y no se que podra ser...
este es el codigo del programa principal la clase Piloto tiene implementado tanto el operador de entrada como el de salida
Código: C++
  1.  
  2. #include"Pilotos.h"
  3. #include<algorithm>
  4. #include<iostream>
  5. #include<iterator>
  6. #include<vector>
  7.  
  8. using namespace std;
  9.  
  10. int main(){
  11.  
  12.   vector<piloto> pilotos;
  13.   istream_iterator<piloto> piloto_in(cin);
  14.   copy(piloto_in, istream_iterator<piloto>(), back_inserter(pilotos));
  15.   for(int i = 0; i<pilotos.size(); i++){
  16.     cout << pilotos[i] << "**********" <<endl;
  17.   }
  18.  
  19.   return 0;
  20. }
  21.  
  22.  

6
Visual Basic 6.0 e inferiores / Re: Mover imagenes
« en: Jueves 24 de Febrero de 2011, 11:49 »
Muxas gracias por la ayuda

7
Visual Basic 6.0 e inferiores / Mover imagenes
« en: Martes 22 de Febrero de 2011, 00:20 »
Hola estoy haciendo una pequeña aplicacion, en la que tengo que mover una imagen a un lugar y si esa es correcta que se quede en el lugar, por el momento lo he conseguido hacer pero de una forma que yo creo un poco cutre, ya que lo que he hecho ha sido que al pulsar sobre la imagen con el raton el cursor se transforma en la imagen. Mi pregunta es si se podria hacer arrastrando la imagen si modificar el cursor.
Lo siento si no me he explicado muy bien y gracias de antemano por las respuestas

8
C/C++ / Re: funcionamiento de las priority queu
« en: Miércoles 15 de Diciembre de 2010, 19:37 »
he estado mirando y ya solucione mis dudas, lo que queria saber era como hacian la ordenacion, osea si necesitaba alguna modificacion en mi clase, ahora ya se que tengo que tener implementado el operador menor... ademas de que funcionan exactamente igual que las queue normales...

9
C/C++ / Re: funcionamiento de las priority queu
« en: Miércoles 15 de Diciembre de 2010, 16:06 »
a ver las priorty_queue ya existen y quiero saber como las usar con un tipo de dato proceso creado por mi y de paso tambien pediros opiniones a ver si se os ocurre alguna estructura de datos mas adecuada...

10
C/C++ / Re: funcionamiento de las priority queu
« en: Martes 14 de Diciembre de 2010, 19:01 »
Con estructura me refiero a una estructura de datos como el vector, lista cola, pila...

11
C/C++ / Re: funcionamiento de las priority queu
« en: Martes 14 de Diciembre de 2010, 18:59 »
Pues no se si existirá pero la mayoría de los libros de sistemas operativos la emplean...
Pero bueno para mi duda esa palabra no importa mucho, a ver yo lo que tengo que hacer es almacenar en una estrucutura una serie de procesos y cada uno tiene una prioridad distinta y esa estructura desbe permanecer ordenada según la prioridad asignada a cada proceso por eso me recomendaron emplear las priority queue ya que se supone que te gestionan  la ordenación automatiamente... Si se os ocurre alguna otra estructura admito sugerencias, porque esta que yo digo tiene buena pinta pero no se como se usa :(

12
C/C++ / funcionamiento de las priority queu
« en: Lunes 13 de Diciembre de 2010, 18:06 »
Hola, estoy haciendo en clase un simulador de un sistema operativo y la política de decisión del planificador a corto plazo es de prioridades estáticas con requisamiento por lo que necesito un estructura de datos que me facilite la ordenación de lo elementos y un compañero me ha hablado de las priorty queue y la verdad nunca habia oido hablar de ellas, ¿alguien sabe como funcionan?

13
C/C++ / porque se cuelga?¿ se sale de algun vector?¿
« en: Sábado 12 de Diciembre de 2009, 23:48 »
Código: C++
  1. #include <iostream>
  2. #include <stdlib.h>
  3. #include <fstream>
  4. #include <vector>
  5. #include <string>
  6.  
  7. using namespace std;
  8.  
  9. string conversion_caracter (vector<int> &v2,  int &i){
  10.     string TC;
  11.         if(v2[i]==2){
  12.             TC="abc";
  13.         }
  14.         else if(v2[i]==3){
  15.            TC="def";
  16.         }
  17.         else if(v2[i]==4){
  18.            TC="ghi";
  19.         }
  20.         else if(v2[i]==5){
  21.            TC="jkl";
  22.         }
  23.         else if(v2[i]==6){
  24.            TC="mno";
  25.         }
  26.         else if(v2[i]==7){
  27.            TC="pqrs";
  28.         }
  29.         else if(v2[i]==8){
  30.            TC="tuv";
  31.         }        
  32.         else if(v2[i]==9){
  33.            TC="wxyz";
  34.         }  
  35.    
  36.     return TC;
  37. }
  38. void eliminar (vector <string> &v3,int &p){
  39.   for (int i=p;i<v3.size()-1;i++)
  40.     v3[i]=v3[i+1];
  41.     v3.pop_back();
  42. }
  43. vector<string> funcion_iterativa (vector<string> &v, vector<int> &v1){
  44.     vector<string> CP(v.size());
  45.     for(int i=0; i<v.size(); i++){
  46.             CP[i]=v[i];
  47.         }
  48.     for(int i=0; i<v1.size(); i++){
  49.         string aux=conversion_caracter(v1,i);
  50.         for(int j=0; j<CP.size(); j++){
  51.             for(int k=0; k<CP[j].size();k++){
  52.                 for(int l=0; l<aux.size(); l++){
  53.                     if(CP[j][k]==aux[l])break;
  54.                     else if(l==aux.size()-1){
  55.                         eliminar(CP,j);
  56.                     }
  57.                 }
  58.             }
  59.         }
  60.     }
  61.     return CP;
  62. }
  63. int main (int argc, char* argv[ ]){
  64.     ifstream f1 (argv[1]);
  65.     ofstream f2 (argv[2]);
  66.     int n;
  67.     f1 >> n;
  68.     vector<int>CD(n);
  69.     for (int i=0; i<n; i++){
  70.         f1 >> CD[i];
  71.     }
  72.     string palabra;
  73.     vector<string>diccionario;
  74.     f1 >> palabra;
  75.     while (!f1.eof()){
  76.         diccionario.push_back(palabra);
  77.         f1 >> palabra;
  78.     }
  79.     for(int i=0; i<funcion_iterativa(diccionario, CD).size(); i++){
  80.         f2 << funcion_iterativa(diccionario, CD)[i] << endl;
  81.     }
  82.     f1.close();
  83.     f2.close();
  84.     return 0;
  85. }
  86.  
  87.  
llevo toda la tarde con el programa y no consigo que funcione, se supone que al programa hace lo siguiente:
le paso un fichero con con unos numeros y unas palabras, el primer numero se corresponde a la cantidad de numeros que te dan, y los siguientes numeros es como si fuesen las teclas del telefono movil del 2 al 9, con el programa lo que debo hacer es que se copien en el segundo fichero aquellas palabras que se puedan formar con los digitos que te dan de inicio y en ese orden por ejemplo si te dan un fichero que contiene
4
4 6 5 2
manuel
inka
sistema
operativo
hola
nika
boligrafo
hotmail
pero

el fichero de salida deberia contener las palabras inka y hola.

GRACIAS

14
C/C++ / conversion vector string
« en: Viernes 11 de Diciembre de 2009, 11:05 »
Código: C++
  1. #include <iostream>
  2. #include <fstream>
  3. #include <vector>
  4. #include <stdlib.h>
  5. #include <string>
  6.  
  7. using namespace std;
  8.  
  9. vector <string> TC (int &m){
  10.        vector <string> TC(10);
  11.        TC[2]="abc";
  12.        TC[3]="def";
  13.        TC[4]="ghi";
  14.        TC[5]="jkl";
  15.        TC[6]="mno";
  16.        TC[7]="pqrs";
  17.        TC[8]="tuv";
  18.        TC[9]="wxyz";
  19.        return TC[m];
  20.        }
  21.  
  22. void borrar(vector <string> &CPF,int k){
  23.   for (int i=k;i<CPF.size()-1;i++)
  24.     CPF[i]=CPF[i+1];
  25.   CPF.pop_back();
  26. }
  27.  
  28. vector <string> recursion(vector <int> &CD, vector <string> &CP,int j){
  29.  
  30.   vector <string> CPF;
  31.  
  32.   if(j==1){                     //CASO TRIVIAL
  33.     for (int i=0;i<CP.size();i++){      
  34.       string aux=TC(CD[i]);
  35.       for (int k=0;k<aux.size();k++)
  36.           if (CP[i][0]==aux[k]){
  37.              CPF.push_back(CP[i]);          
  38.              break;            
  39.           }    
  40.     }
  41.     return CPF;
  42.   }
  43.  
  44.   else {                        //CASO NO TRIVIAL
  45.     CPF=recursion (CD,CP,j-1);              
  46.     for (int i=0;i<CPF.size();i++){    
  47.       string aux2=TC(CD[i]);        
  48.       for (int k=0;k<aux2.size();k++)      
  49.           if(CPF[i][j-1]==aux2[k])          
  50.           break;
  51.           else {
  52.                borrar(CPF,i);
  53.                break;
  54.           }
  55.     }
  56.     return CPF;
  57.   }
  58. }
  59.  
  60. int main(int argc,char *argv[]){
  61.  
  62.   ifstream f1(argv[1]);
  63.   int n;
  64.   f1 >> n;
  65.  
  66.   vector <int> CD(n);
  67.   for (int i=0;i<n;i++) f1 >> CD[i];
  68.  
  69.   vector <string> CP;
  70.   while(!f1.eof()){
  71.     string s;
  72.     f1 >> s;
  73.     CP.push_back(s);
  74.   }
  75.  
  76.   vector <string> CPF;
  77.   CPF=recursion(CD,CP,n);
  78.  
  79.   ofstream f2(argv[2]);
  80.   for (int i=0;i<CPF.size();i++)
  81.     f2 << CPF[i] << endl;
  82.  
  83.   return 0;
  84. }
  85.  

conversion from `std::basic_string<char, std::char_traits<char>, std::allocator<char> >' to non-scalar type `std::vector<std::string, std::allocator<std::string> >' requested ---> en la primera funcion, la funcion TC me da este error al hacer el return (linea 19)

conversion from `std::vector<std::string, std::allocator<std::string> >' to non-scalar type `std::basic_string<char, std::char_traits<char>, std::allocator<char> >' requested ---> dentro de la funcion recursion, en caso trivial y no trivial respectivamnt al asignar al string aux=TC(CD) (lineas 34 y 47)

15
C/C++ / fallo raro
« en: Miércoles 25 de Noviembre de 2009, 16:38 »
hola,  hoy he estado haciendo una practica de la universidad y al compilar el codigo todo bien no me da ningun problema, pero a la hora de ejecutarlo, depues de que el programa hace todos los calculos, que por cierto me los devuelve de forma correcta, cuando me sale lo de presione una tecla para continuar el programa casca, pero sin embargo si el programa lo ejecuto desde la terminal de windows no me da ningun tipo de problema. el codigo del programa es este, alguien me puede echar una mano?¿
Código: C++
  1. #include <iostream>
  2. #include <vector>
  3. #include <cmath>
  4.  
  5. using namespace std;
  6.  
  7. //maximo para lamda
  8. double maxl (vector<double>&p){
  9.     double max1;
  10.     for (int i=0; i<p.size()-1; i++){ //calcula el maximo coeficiente del polinomio sin tener en cuenta al coeficiente director
  11.         if(abs(p[i])>max1) max1=abs(p[i]);
  12.     }
  13.     return max1;
  14. }
  15. //maximo para beta
  16. double maxb (vector<double>&p){
  17.     double max2;
  18.     for (int i=1; i<=p.size(); i++){ //calcula el maximo coeficiente del polinomio sin tener en cuenta el termino independiente
  19.         if(abs(p[i])>max2) max2=abs(p[i]);     
  20.     }
  21.     return max2;
  22. }
  23. //cambios de signo
  24. int cambios_signo (vector<double>&p){
  25.     int cont=0;
  26.     for(int i=0; i<p.size()-1; i++){
  27.         if(p[i]<=0 && p[i+1]>0 || p[i]>0 && p[i+1]<=0) cont++;
  28.     }
  29.     return cont;
  30. }
  31.  
  32.  
  33. int main () {
  34.  
  35.    
  36.     int n;
  37.     cout << "introduce el grado del polinomio" << endl;
  38.     cin >> n;
  39.     vector<double>polinomio(n+1);
  40.     for (int i=0; i<n+1; i++){
  41.             cout << "a(" << i << ") = ";
  42.             cin >> polinomio[i];
  43.             cout << "i = " << i << ", polinomio["<<i<<"] = " << polinomio[i] << endl;
  44.         }
  45.     int cont=0;
  46.     while(polinomio[0]==0){
  47.         for (int i=0; i<=n; i++){
  48.             polinomio[i]=polinomio[i+1];
  49.         }
  50.      cont++;  
  51.     }
  52.     polinomio.resize((polinomio.size())-cont);
  53.     vector<double>polinomio_negativo(n+1);
  54.     for (int i=0; i<=polinomio.size(); i++){
  55.         if (i%2==0){
  56.             polinomio_negativo[i]=polinomio[i];
  57.         }
  58.         else polinomio_negativo[i]=polinomio[i]*(-1);
  59.     }
  60.  
  61.     //acotacion de raices    
  62.     double lamda = maxl (polinomio)/abs(polinomio[polinomio.size()-1]);
  63.     double beta = maxb (polinomio)/abs(polinomio[0]);
  64.     cout << "lamda = " << lamda << endl;
  65.     cout << "beta = " << beta << endl;
  66.     cout <<  (1/(1+beta)) << " <= |z| <= " << 1+lamda << endl;
  67.     cout << "las cotas son" << endl;
  68.     cout << "C.I.R.P = " << (1/(1+beta)) << "   " << "C.S.R.P = " << 1+lamda << endl;
  69.     cout << "C.I.R.N = " << -(1+lamda) << " " << "C.S.R.N = " << -(1/(1+beta)) << endl;
  70.    
  71.     //descartes (cambios de signo)
  72.     cout << "el numero de raices positivas de p(x) es menor o igual en un numero par a " << cambios_signo(polinomio) << endl;
  73.     cout << "el numero de raices negativas de p(x) es menor o igual en un numero par a " << cambios_signo(polinomio_negativo) << endl;
  74.  
  75.     //hua
  76.     int c=1;
  77.     while((polinomio[c]*polinomio[c] > polinomio[c-1]*polinomio[c+1]) && (c<n+1)){
  78.         c++;
  79.     }
  80.     cout << "Para k = " << c << " se verifica que a(k)^2<=a(k-1)*a(k+1) por lo que p(x) tiene al menos un par de raíces complejas conjugadas" << endl;
  81.        
  82.  
  83.     system ("PAUSE");  
  84.     return 0;
  85. }
  86.  
  87.  
por cierto los datos con los que hago la prueba son grado del polinomio 6 y coeficientes -1, 1, 2, 8.3, -3, 0, 5

16
C/C++ / paso por parámetros
« en: Domingo 8 de Noviembre de 2009, 16:21 »
alguien me podría explicar,  pasar un manual o dejarme un ejemplo de como hacer un programa en c++ de modo que se puedan introducir los parámetros de entrada en la línea de comandos al mismo tiempo que se indica el nombre del ejecutable. Lo único que se es que en la cabecera se debe incluir:
int main (unsigned int argc, char* argv[ ])
gracias!!!

17
C/C++ / Re: ¿cual es el error?
« en: Lunes 2 de Noviembre de 2009, 12:48 »
ok gracias!! por cierto aprobexando ya el post, alguien sabe si hay alguna fuincion para calcular la derivada n-esima de una funcion?¿?

18
C/C++ / Re: ¿cual es el error?
« en: Lunes 2 de Noviembre de 2009, 11:24 »
no lo coge en el caso 1 del swich?¿? o se pierde en cuanto sale?¿?¿

19
C/C++ / Re: ¿cual es el error?
« en: Domingo 1 de Noviembre de 2009, 22:29 »
gracias!! en el caso 2 la n no deberia estar inicializada, con el valor que le di fuera del swich?¿?

20
C/C++ / Re: ¿Cual es el problema?
« en: Domingo 1 de Noviembre de 2009, 22:21 »
no me habia dado cuenta de lo de la cabecera xd  :huh:

21
C/C++ / Re: ¿Cual es el problema?
« en: Domingo 1 de Noviembre de 2009, 18:30 »
eso de sin tipo no me suena de nada jeje pero si dices que es un string xk no pones string directamente?¿?

22
C/C++ / ¿cual es el error?
« en: Domingo 1 de Noviembre de 2009, 18:26 »
este programa evalua la derivada de orden m en un punto z mediante el algoritmo de horner, me da errores en las lineas 56 con la declaracion del float, y en las lineas 62 y 65 el error que me da el compilador es el siguiente: "jump to case label", y ya puestos si alguien supiese como obtener el ultimo cociente, y me diese una pista, lo agradeceria xk llevo bastante tiempo y no me sale nada  :hitcomp:
Gracias!!!

23
C/C++ / Re: lectura de ficheros sin formato
« en: Martes 28 de Abril de 2009, 19:33 »
es k como en klse los llamamos de las dos maneras jaja es mas hasta en los apuntes los llama como yo digo jaja

24
C/C++ / Re: lectura de ficheros sin formato
« en: Martes 28 de Abril de 2009, 14:10 »
Cita de: "m0skit0"
No sé a qué te refieres con ficheros sin formato.
sin formato significa, que si abres el fichero con el note pad, no te muestra nada de lo que tu escribiste, si no una serie de caracteres que si no me equivoco van con el codigo asci pero no estoy seguro, sin embargo si tubiese formato, al abrir el note pad verias claramente lo que escribes, ademas si te fijas en la implementacion cambia bastante....

25
C/C++ / lectura de ficheros sin formato
« en: Lunes 27 de Abril de 2009, 21:13 »
Código: C++
  1. #include <iostream>
  2. #include <fstream>
  3.  
  4.  
  5. using namespace std;
  6.  
  7.  
  8. void EscribirFichCONFormato (const char *nombre);
  9. void EscribirFichSINFormato (const char *nombre);
  10. void LeerFichCONFormato (const char *nombre);
  11. void LeerFichSINFormato (const char *nombre);
  12.  
  13.  
  14. //implementacion de las funciones
  15. void EscribirFichCONFormato (const char *nombre){
  16.     int n;
  17.     ofstream f (nombre);
  18.     while (cin>>n){
  19.           f<<n;
  20.     }
  21.     f.close();
  22. }
  23. void EscribirFichSINFormato (const char *nombre){
  24.     int n;
  25.     ofstream f (nombre, ios::binary);
  26.     cin>>n;
  27.     while(cin>>n){
  28.         f.write(reinterpret_cast<const char *>(&nombre),sizeof(nombre));
  29.     }
  30.     f.close();
  31. }
  32. void LeerFichCONFormato (const char *nombre){
  33.     ifstream f (nombre);
  34.     int n;
  35.     while(f>>n){
  36.         cout << n;
  37.         f>>n;
  38.     }
  39.     f.close();
  40. }
  41. void LeerFichSINFormato (const char *nombre){
  42.     int n;
  43.     fstream f(nombre, ios::in | ios::binary);
  44.     f.read(reinterpret_cast<char*>(&n),sizeof(n));
  45.     while (!f.eof()){
  46.         cout << n;
  47.         f.read(reinterpret_cast<char*>(&n),sizeof(n));
  48.     }
  49.     f.close();
  50. }
  51. int main () {
  52.    
  53.     cout << endl << "Introduce numeros para rellenar el fichero CON formato (Ctrl+Z para acabar): ";
  54.     EscribirFichCONFormato("num01.txt");
  55.    
  56.     cout << endl << "El fichero CON formato contiene los siguientes enteros" << endl;
  57.     LeerFichCONFormato("num01.txt");
  58.    
  59.  
  60.     cin.clear();
  61.  
  62.    
  63.     cout << endl << "Introduce numeros para rellenar el fichero SIN formato (Ctrl+Z para acabar): ";
  64.     EscribirFichSINFormato("num01.dat");
  65.    
  66.     cout << endl << "El fichero SIN formato contiene los siguientes enteros" << endl;
  67.     LeerFichSINFormato("num01.dat");    
  68.    
  69.     system("PAUSE");
  70.     return 0;
  71. }
  72.  
  73.  
este es el codigo de un rograma que estamos haciendo en clase para empezar a trabajar con ficheros, el codigo compila perfectamente pero la lectura de ficheros sin formato no hace lo que deberia, simlemente me muestra una serie de numeros sin sentido, no se de que se puede tratar pese a que llebo varias horas intentando arreglarlo...
Gracais

Páginas: [1] 2