Menú

Mostrar Mensajes

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

Mostrar Mensajes Menú

Mensajes - bdoX

#21
Scripting / Re: Expresion regular en Perl
11 Enero 2012, 03:23 AM
Veo que nunca supiste lo que yo queria resolver. Yo quiero validar la entrada de solo combinaciones en {a, b}, y me diga que pertenezca al lenguaje. Si aparece al menos una letras que no sean {a, b} o vacio, automaticamente quiero que me diga que no pertenece al lenguaje.

yo quiero esto

"3}p2aa-0" --> No pertenece al lenguaje
"abababababaaabbaababa" ----> si pertenece al lenguaje

saludos!!
#22
Scripting / Re: Espresion regular en Perl
10 Enero 2012, 23:28 PM
Cita de: ~ Yoya ~ en 10 Enero 2012, 23:20 PM
Esta parte

[yoya@Fedora Escritorio]$ perl a.pl
Ingrese nombre de usuario: c
No pertenece al lenguaje
[yoya@Fedora Escritorio]$ perl a.pl
Ingrese nombre de usuario: a
Si pertenece
[yoya@Fedora Escritorio]$


Fue con tu código, creo que el tema esta volviendo complicado cuando el problema es muy simple.

Segun yo, los resultados que te da son buenos, con tu codigo me dan resultados que no espero tener. Aun sigo sin entenderte.

Bueno, segun yo, ya está solucionado mi duda.

Si aun crees que está malo mi codigo, dame un string en el alfabeto donde el programa se caiga.

saludos!

#23
Scripting / Re: Espresion regular en Perl
10 Enero 2012, 17:05 PM
Cita de: ~ Yoya ~ en 10 Enero 2012, 15:39 PM
La expresión regular que estas usando es valida solo si no existe el carácter a o b, en el string. Ej:

Código (perl) [Seleccionar]
#!/usr/bin/perl

print "Ingrese nombre de usuario: ";
$nombre=<STDIN>;
chomp($nombre);

#analiso si la cadena no contiene a,b y analiso si la cadena es vacia
if($nombre =~ m/^[a-z\ñ]+$/i) {
print 'Si pertenece', "\n";
}else{
print 'No pertenece', "\n";
}


Con esta compruebo que en la cadena entera debe existir solo las letras del alfabeto, desde el inicio al final.

Saludos.

Con tu code, me aparece esto:


C:\>tucode.pl
Ingrese nombre de usuario: c
Si pertenece

C:\>tucode.pl
Ingrese nombre de usuario: a
Si pertenece

C:\>


Como te darás cuenta, estoy bajo windows. No me aparece como a ti


[yoya@Fedora Escritorio]$ perl a.pl
Ingrese nombre de usuario: c
No pertenece al lenguaje
[yoya@Fedora Escritorio]$ perl a.pl
Ingrese nombre de usuario: a
Si pertenece
[yoya@Fedora Escritorio]$


Por eso no entiendo lo que dices. Lo que hice anteriormente me valida bien el string en el alfabeto {a,b}.

Es solo una validacion, para resolver este tipo de expresiones regulares

"L = {w|w contiene las substring aa o bb pero no ambas}"
"L = {w|w no hay tres a′s consecutivas}"
"L = {w|w tiene numero par de a's}" // ese no se me ocurre com hacerlo

saludos!
#24
Scripting / Re: Espresion regular en Perl
10 Enero 2012, 03:15 AM
Para no salir del hilo, modifiqué lo del operador m// arriba. También modifique lo de chop(), por chomp(), pero los resultados son iguales


EDITADO

solucionado, acá dejo el code, era mas facil de lo que me esperaba jajajaj.

Código (perl) [Seleccionar]

print "Ingrese nombre de usuario: ";
$nombre=<STDIN>;
chomp($nombre);

#analiso si la cadena no contiene a,b y analiso si la cadena es vacia
if ($nombre =~ m/[^ab]/ | $nombre =~ m/^$/)
{
   print "No pertenece al lenguaje\n";
}
else
{
   print "Si pertenece\n";
}


Gracias por su ayuda, saludos!
#25
Scripting / Re: Espresion regular en Perl
10 Enero 2012, 02:45 AM
Hola ~ Yoya ~:

Gracias por responder, solo entiendo esta parte de tu code.


my $nombre = <>;

chomp($nombre); #Borro el salto de linea del final del string si existe

if($nombre =~ m/[a-z]/i) {
print "Si\n";


La verdad es que no se que tan importante colocarle la m if($nombre =~ m/[a-z]/i) , porque sin él, me funciona igual. A lo mejor es para hacerlo mas portable. (Estoy bajo windows)

No se si me explique bien, pero voy a dar unos ejemplos que lo quiero.

Código (perl) [Seleccionar]

string = "abababababababba"; # deberia tomarlo
string = "ababaaabbb+.-aba"; # No deberia tomarlo
string = "ok23iaajij3o+i23jaabv"; #No deberia tomarlo
string = "a"; #deberia tomarlo;
string = "b"; #deberia tomarlo;
string = " "; #No deberia tomarlo;
string = ""; #No deberia tomarlo;
string = "+"; #No deberia tomarlo;
string = "a+b"; #No deberia tomarlo;
#... etc

#26
Scripting / Expresion regular en Perl
9 Enero 2012, 23:39 PM
Hola a todos:

Les cuento mi duda, pasa que quiero validar una espresion regular  y quiero que solo me reconozca el string en el alfabeto= {a, b}.

acá dejo el code. No se en que estoy fallando.

Código (perl) [Seleccionar]

print "Ingrese nombre de usuario: ";
$nombre=<STDIN>;
chomp($nombre);

if ($nombre =~ m/[c-z]/ | $nombre !~ m/\w/ | $nombre =~ m/[0-9]/)
{
print "No pertenece al lenguaje\n";
}
else
{
print "Si pertenece\n";
}


Con esto solo me acepta el alfabeto [a,b] + caracteres especiales como por ejemplo +, - {. } !, --. Pero eso no es lo que quiero. Ayuda please!

Código (perl) [Seleccionar]

print "Ingrese nombre de usuario: ";
$nombre=<STDIN>;
chomp($nombre);

if ($nombre =~ m/[c-z]/ | $nombre =~ /m[0-9]/)
{
print "No pertenece al lenguaje\n";
}
else
{
print "Si pertenece\n";
}
#27
Cita de: chinopapi en 22 Diciembre 2011, 02:28 AM
hola un profe me dejo un programa pero no me queda alguin me puede decir que puedo hacer es urgente,... gracias y suerte.

Podrías por empezar a leerte un libro de C++, o buscar manuales en google : - ).

PD:

No creo que nadie del foro te haga la tarea. Muestra un avance y yo te ayudaré.
#28
Perimetro no está declarado dentro de la main(). No se como es que te compiló

Ecá está en C++ con referencia

Código (cpp) [Seleccionar]

#include <iostream>

unsigned calcular_area (unsigned base, unsigned lado, unsigned &perimetro);

using namespace std;

int main ( )
{
   unsigned lado, base, p;
   
   cout << "Dime la base de tu rectangulo: ";
   cin >> base;
   
   cout << "Dame el lado de tu rectangulo: ";
   cin >> lado;
   
   cout << "Tu area es: " << calcular_area (base, lado, p) << " y su perimetro es: " << p << endl;
   
   cin.ignore ( );
   cin.get ();

   return 0;
}

unsigned calcular_area (unsigned base, unsigned lado, unsigned &perimetro)
{
   unsigned area;

   area = (base * lado);
   perimetro = (lado * 2) + (base * 2);

   return area;
}


En C++ pero con desreferencia

Código (cpp) [Seleccionar]

#include <iostream>

unsigned calcular_area (unsigned base, unsigned lado, unsigned *perimetro);

using namespace std;

int main ( )
{
   unsigned lado, base, p;
   
   cout << "Dime la base de tu rectangulo: ";
   cin >> base;
   
   cout << "Dame el lado de tu rectangulo: ";
   cin >> lado;
   
   cout << "Tu area es: " << calcular_area (base, lado, &p) << " y su perimetro es: " << p << endl;
   
   cin.ignore ( );
   cin.get ();
   return 0;
}

unsigned calcular_area (unsigned base, unsigned lado, unsigned *perimetro)
{
   unsigned area;

   area = (base * lado);
   *perimetro = (lado * 2) + (base * 2);

   return area;
}


Y acá está en C


#include <stdio.h>

unsigned calcular_area (unsigned base, unsigned lado, unsigned *perimetro);

int main( )
{
   unsigned lado, base, p;
   
   printf ( "Dime la base de tu rectangulo: " );
   scanf ( "%u", &base );

   printf ( "Dame el lado de tu rectangulo: " );
   scanf ( "%u", &lado );

   printf ( "Tu area es: %u y su perimetro %u", calcular_area (base, lado, &p), p );
   
   setbuf (stdin, NULL)
   getchar ( );
   return 0;
}

unsigned calcular_area (unsigned base, unsigned lado, unsigned *perimetro)
{
   unsigned area;

   area = (base * lado);
   *perimetro = (lado * 2) + (base * 2);

   return area;
}


Saludos!!
#29

#include <stdio.h>

int EsPrimo (int numero);
//int EsPrimo (int); // también se puede de esta forma

int main ( )
{
   int numero;

   printf("Dame un numero: ");
   scanf("%d", &numero);

   if (EsPrimo (numero) == 1)
       printf("Es un numero primo");

   else
       printf("No es un numero primo");
   
   setbuf (stdin, NULL);
   getchar ( );
   return 0;

}

int EsPrimo (int numero)
{
   int i, divisor, v;
   
   v = 1;
   i = (numero - 1);

   do
   {
       divisor = (numero % i);
       i--;
   } while ((i > 1) && (divisor != 0));
   
   if ( divisor == 0 )
       v = 0;

   return v;
}
#30
C no admite void Intercambiar(int &x, int &y);, C++ si. A eso se le llama referencia, y de esta forma void Intercambiar(int *x, int *y); se le llama desreferencia. Fijate que el archivo sea guardado con *.cpp cuando lo hagas de esta forma void Intercambiar(int &x, int &y);.

Yo uso Dev-c++, si guardo tu programa *.c (Es de C) y compilo tu programa me da ese error, y si lo guardo con *.cpp (Es de c++) no me da error. No conozco todos los IDE's pero como todos saben, Dev-c++ puedo compilar codigo de C y de C++, pero tienes que tener cuidado con la extensión con la que guardas

PD: C++ también admite con *

La idea de la programación es que sea portable tu codigo, y que pueda compilar con cualquier IDE sin ningun problema (No quiero hablar de las plataformas). Si tu compilas un codigo en un IDE y ese IDE te admite cosas como por ejemplo que puedas compilar codigo C con extensión *.cpp despues vas a tener problemas cuando uses otro IDE. No puedes mezclar cosas, o programas en C, o en c++, no en ambos.

Saludos