Reglamento general de los foros   •   FAQ   •   Buscar en el foro •  Registrarse | Iniciar sesión 



Foros Linux » Desarrollo » Programación


Nuevo tema Responder al tema
 [ 14 mensajes ] 
Patrocinadores

Autor
Buscar:
Mensaje

Desconectado
Forista Nuevo
Forista Nuevo
Avatar de Usuario

Registrado: Dom Jun 10, 2007 11:00 pm
Mensajes: 44

Nota Publicado: Mié Dic 14, 2011 3:42 pm 
Arriba  
Hola a todos.

Tengo un ejercicio en pseudocodigo y en una parte del mismo se pide ingresar un nombre de usuario con un maximo de 30 caracteres y un mínimo de 5 y ademas el nombre de usuario debe contener obligatoriamente un simbolo arroba (@).

Se que lo que tengo que hacer (una forma de hacerlo) es recorrer el vector letra por letra y luego poner un condicional para que se cumpla la condición que pide el ejercicio, pero ya lo he intentado y no se me ocurre como hacerlo. He estado viendo varios ejemplos, pero ya están codificados en algún lenguaje de programación y en la mayoría se utiliza algun comando nativo como ser (len,strlen,etc) para medir la longitud de la cadena y lo que yo quiero es utilizar comandos que pueda expresar en pseudocodigo.

Agradecería cualquier sugerencia. Gracias.

 Perfil  

Desconectado
Moderador
Moderador
Avatar de Usuario

Registrado: Dom Abr 18, 2010 4:30 pm
Mensajes: 2790
Ubicación: En una de las nalgas del culo del mundo (según la Bersuit Vergarabat)

Nota Publicado: Mié Dic 14, 2011 4:37 pm 
Arriba  
pásalos aun array y luego cuéntalos http://itico.wordpress.com/2007/02/22/arrays-en-bash/

_________________
... reinstalar un SO cuando produce un error es como tirar un bebe a la basura cuando se hace caca..

Trusted Network and Developer | Reglamento General de los Foros |WIKI-EL | Twitter @SISIAM
Debian| ArchLinux |Linux User #508809

 Perfil WWW  

Desconectado
Forista Nuevo
Forista Nuevo
Avatar de Usuario

Registrado: Dom Jun 10, 2007 11:00 pm
Mensajes: 44

Nota Publicado: Mié Dic 14, 2011 5:17 pm 
Arriba  
mcun escribió:
pásalos aun array y luego cuéntalos http://itico.wordpress.com/2007/02/22/arrays-en-bash/


Sigo sin que se me ocurra otra cosa, en la pagina que me das de ejemplo, habla de recorrer un array cuando ya se sabe el valor del vector, y aparte no realiza ninguna operación con los datos, solo los muestra. Yo lo que necesito es saber la cantidad de letras del usuario ingresado para así poder poner un condicional que me permita un ingreso de datos condicionado. Pongo solo hasta donde llegue:

Código:
Proceso Ejercicio
   i<-1;
   Dimension linea[30];
   Escribir "Ingrese nombre de usuario: ";
   Repetir
      Leer nombre;
      linea[i]<-nombre;
      i<-i+1;
   Hasta Que (i<30) y (i<5)
FinProceso

 Perfil  

Desconectado
Moderador
Moderador
Avatar de Usuario

Registrado: Dom Abr 18, 2010 4:30 pm
Mensajes: 2790
Ubicación: En una de las nalgas del culo del mundo (según la Bersuit Vergarabat)

Nota Publicado: Mié Dic 14, 2011 5:23 pm 
Arriba  
Bueno en el caso los muestra tu los puedes contar ... según yo lo interpreto es el 80 % de lo que precisas osea solo tienes que implementar una variable e incrementarla por cada iteración para luego chequearla con un if o case mejor el maximo admisible para el string ... no lo veo difícil a no ser que no comprenda lo que quieres ..

_________________
... reinstalar un SO cuando produce un error es como tirar un bebe a la basura cuando se hace caca..

Trusted Network and Developer | Reglamento General de los Foros |WIKI-EL | Twitter @SISIAM
Debian| ArchLinux |Linux User #508809

 Perfil WWW  

Desconectado
Forista Distinguido
Forista Distinguido
Avatar de Usuario

Registrado: Sab Oct 09, 2004 11:00 pm
Mensajes: 1299

Nota Publicado: Mié Dic 14, 2011 10:19 pm 
Arriba  
El problema con el pseudocódgido, es que si no te dan antes las "palabras reservadas", como en cualquier lenguaje, no sabes con qué cuentas.

Hace muchos años, llevábamos dos meses trabajando con pseudocódigo, hasta que, hartos hasta la coronilla, decidimos resolver el ejercicio así:
Código:
Inicio ();
   resolver ejercicio;
Fin;


Y ante el primer cuestionamiento, sostuvimos que se trataba de pseudocódigo de alto nivel.

Al final, el profesor comprendió que era mejor reprobarnos en un lenguaje real.

En cuanto a tu problema, no sé qué pueden haber visto en pseudocódigo (¿se nota que me parece una estupidez?). Imagino que no vieron pilas. Una pila es, grosso modo, un array cuyos elementos se extraen en orden inverso. Lo primero que se me ocurre es meter todo en una pila, e ir sacando hasta que se termine, utilizando un contador y un if que busque una arroba.


A falta de pila, tu script podría hacer algo así:

Código:
arroba=0
contador=0
while (mientras) (no sé cómo lees el array por elementos, eso iría aquí: leer un elemento del array; Esto es la condición del while)
  {
        $contador++;
    si [elemento array== @]; entonces $arroba++;
}

//Acá ya se salió del bucle.

Si [$contador>30] or [$contador<5]; mensaje de error;
Si [$arroba != 1]; mensaje de error;
  else ¡congratulations, ha terminado el programa que no hace nada!
echo ¡hola, mundo! // Esto es por tradición.

 Perfil  

Desconectado
Forista Nuevo
Forista Nuevo
Avatar de Usuario

Registrado: Dom Jun 10, 2007 11:00 pm
Mensajes: 44

Nota Publicado: Lun Dic 19, 2011 7:47 am 
Arriba  
Citar:
El problema con el pseudocódgido, es que si no te dan antes las "palabras reservadas", como en cualquier lenguaje, no sabes con qué cuentas.


Bueno, y llevando el problema a un lenguaje que mas o menos vi como Ruby como lo podría implementar. Se que el problema no es tan complicado, en teoría, pero no se como abordar el mismo.

 Perfil  

Desconectado
Forista Distinguido
Forista Distinguido
Avatar de Usuario

Registrado: Sab Oct 09, 2004 11:00 pm
Mensajes: 1299

Nota Publicado: Lun Dic 19, 2011 1:24 pm 
Arriba  
¿Es un chiste, verdad?
¿No tienes ninguna pista sobre cómo abordar el problema?
Es más, ¿no está resuelto el problema?.

 Perfil  

Desconectado
Forista Nuevo
Forista Nuevo
Avatar de Usuario

Registrado: Dom Jun 10, 2007 11:00 pm
Mensajes: 44

Nota Publicado: Mié Dic 21, 2011 10:04 am 
Arriba  
Perdon por molestar de nuevo. Finalmente lo codifique directamente en Ruby y logre hacerlo funcionar en parte. El problema con el pseudocodigo, es que suelo utilizar un interprete de pseudocodigo llamado Pseint que funciona bien, pero cuando hay que utilizar estructuras de datos un poco mas complejas se complica un poco. Bueno volviendo nuevamente al codigo, logre hacer funcionar la parte que pide el usuario con un determinado numero maximo de elementos, pero ahora no se como hacer que me valide el nombre de usuario al ingresar un simbolo arroba.

Aca va el codigo:
Código:
nombre=[];
i=1;
cont=0;

begin
   print "Ingrese nombre de usuario: "
   nombre[i]=gets.chomp.to_s;
   acum=nombre[i].length
   for i in 1..acum
      if nombre[i]=="@" then
         cont=cont+1;
      end
   end
end until (acum>=5) and (acum<=10) and (cont>=1)


y de nuevo perdon por molestar, se que son dudas tontas para el ya lleva un rato programando, pero yo recién empiezo en esto.

 Perfil  

Desconectado
Forista Ancestral
Forista Ancestral
Avatar de Usuario

Registrado: Mié Abr 11, 2007 11:00 pm
Mensajes: 8550
Ubicación: tras la pantalla (...)

Nota Publicado: Mié Dic 21, 2011 11:37 am 
Arriba  
pseudocodigo:

Código:
blablabla
contar_elementos nombre
blablabla


puesto que es un comando que tiene TODOS los lenguajes, no veo por que no se puede poner asi. yo he visto pseudocodigos bastante menos explicitos ultimamente,

ruby:

GPLeo escribió:
pero ahora no se como hacer que me valide el nombre de usuario al ingresar un simbolo arroba.


en que falla tu codigo exactamente?? digo, que dice, que hace, para que digas que no funcione?? (puede no ejecutarse, o pasar de una condicion, o.... simplemente, dar un resultado incorrecto)

digo, yo lo que veo (que no se ruby) me parece correcto.

:)

_________________
#446716

--Not me, guys. I read the Bash man page each day like a Jehovah's Witness reads the Bible. No wait, the Bash man page IS the bible. Excuse me...
(from comp.os.linux.misc)
[ DNFD ] - [ F4A ] - [ dotfiles ]

 Perfil Email WWW  

Desconectado
Forista Distinguido
Forista Distinguido
Avatar de Usuario

Registrado: Sab Oct 09, 2004 11:00 pm
Mensajes: 1299

Nota Publicado: Mié Dic 21, 2011 1:33 pm 
Arriba  
1) Está mal la sintaxis del if. Es Ruby, no Pascal.
2) Luego de decir que no tenías idea de por dónde empezar, implementaste el mismo algoritmo que yo había armado arriba.
3) No sería mala idea especificar un poco más allá del "no funciona". Digo, para poder darle un descanso a las bolas. Las de cristal, claro.

 Perfil  

Desconectado
Forista Nuevo
Forista Nuevo
Avatar de Usuario

Registrado: Dom Jun 10, 2007 11:00 pm
Mensajes: 44

Nota Publicado: Mié Dic 21, 2011 2:57 pm 
Arriba  
niky45 escribió:
pseudocodigo:

Código:
blablabla
contar_elementos nombre
blablabla


puesto que es un comando que tiene TODOS los lenguajes, no veo por que no se puede poner asi. yo he visto pseudocodigos bastante menos explicitos ultimamente,

ruby:

GPLeo escribió:
pero ahora no se como hacer que me valide el nombre de usuario al ingresar un simbolo arroba.


en que falla tu codigo exactamente?? digo, que dice, que hace, para que digas que no funcione?? (puede no ejecutarse, o pasar de una condicion, o.... simplemente, dar un resultado incorrecto)

digo, yo lo que veo (que no se ruby) me parece correcto.

:)

niki45 escribió:
en que falla tu codigo exactamente?? digo, que dice, que hace, para que digas que no funcione?? (puede no ejecutarse, o pasar de una condicion, o.... simplemente, dar un resultado incorrecto)


Falla en que el nombre de usuario ingresado tiene que tener una longitud máxima de 30 caracteres y una minima de 5 pero ademas debe contener obligatoriamente un simbolo arroba (@) y cuando lo ejecuto asi como esta, el ciclo no termina mas y se queda pidiendo un nombre de usuario. O sea que el error esta al querer ingresar ese simbolo arroba (@).

neurus escribió:
Es Ruby, no Pascal.


que novedad.
neurus escribió:

no es pseudocodigo es ruby, ademas tu pseudocodigo esta poco elaborado, por que los condicionales los pusiste sueltos y deben ir dentro de un ciclo, dado que si no ingreso el nombre de usuario tal y como me lo pide el problema el programa me lo tendria que volver a pedir y esa era mi pregunta.

neurus escribió:
No sería mala idea especificar un poco más allá del "no funciona". Digo, para poder darle un descanso a las bolas. Las de cristal, claro.


No seria mala idea que si no tenes ganas de ayudar simplemente no escribieras nada en lugar de mostranos lo inteligente que sos y dejaras a los que de verdad quieran ayudar. Digo, para poder darle un descanso a las bolas. Las de verdad, claro.

 Perfil  

Desconectado
Forista Distinguido
Forista Distinguido
Avatar de Usuario

Registrado: Sab Oct 09, 2004 11:00 pm
Mensajes: 1299

Nota Publicado: Mié Dic 21, 2011 3:12 pm 
Arriba  
Caramba, y yo que pensé que te había ayudado, construyéndote la solución desde cero.

Los demás cuestionamientos, no son hacia tus conocimientos de programación. Todos hemos pasado por la etapa de aprendizaje.
Son cuestionamientos a tus pocas ganas de ser específico en el planteo del problema.

Y te recuerdo que empezaste preguntando por pseudocódigo, y la solución allí está. Luego lo cambiaste por Ruby. Y está mal planteado el if, insisto. Pero dado tu desgano para describir un problema que es tuyo (no mío), supongo que haría bien en seguir tu consejo, y no ayudar en absoluto, al menos en este hilo. Porque pedirte que seas específico es también ayudarte. Y lo hago gratis.

Finalmente, digo yo, si no tienes ganas de describir el problema, y hay que sacártelo con tirabuzón, ¿para qué preguntas?.

Por si no está claro:

Citar:
deben ir dentro de un ciclo, dado que si no ingreso el nombre de usuario tal y como me lo pide el problema el programa me lo tendria que volver a pedir y esa era mi pregunta.


Pero resulta que no, que no era tu pregunta:

Citar:
Tengo un ejercicio en pseudocodigo y en una parte del mismo se pide ingresar un nombre de usuario con un maximo de 30 caracteres y un mínimo de 5 y ademas el nombre de usuario debe contener obligatoriamente un simbolo arroba (@).


¿Te das cuenta de las dificultades de adivinar el pensamiento?. Mis poderes, a veces fallan.

 Perfil  

Desconectado
Moderador
Moderador
Avatar de Usuario

Registrado: Mié Nov 28, 2007 12:00 am
Mensajes: 1361
Ubicación: En la X del explorer (pulse para llamar)

Nota Publicado: Mié Dic 21, 2011 3:43 pm 
Arriba  
Relájense un poco y dejen descansar las bolas (las mías, claro). Ni para preguntar ni para responder hace falta ser tan borde.

Llendo al tema que nos ocupa, y partiendo de la base que no tengo ni idea de ruby, hay una cosa que me extraña
Código:
nombre=[];
....
   nombre[i]=gets.chomp.to_s;
   acum=nombre[i].length
....
      if nombre[i]=="@" then
         cont=cont+1;
      end

Supongo que "nombre[i]" contiene la cadena que has escrito (por ejemplo "micorreo@foo.bar"). Luego obtienes la longitud de la cadena, ¿y compruebas que la cadena "micorreo@foo.bar" (variable nombre[i]) es igual a "@"?

Creo que has perdido un poco de vista lo que estas haciendo. La variable "nombre" debe ser un string, y luego tienes que recorrer los caracteres de dicha variable buscando la @

Simplemente tienes que sustituir las siguientes líneas:
Código:
nombre[i]=gets.chomp.to_s;      ----->>    nombre=gets.chomp.to_s;
   acum=nombre[i].length     ----->>   acum=nombre.length

No tengo claro si ruby necesita declarar variables, pero de no ser así también puedes quitar la línea "nombre=[]"

_________________
Descargue el gestor de mp3 "Music Manager" -> (mmlf)
Última versión del gestor "Music Manager" -> (jmmm)

 Perfil  

Desconectado
Forista Distinguido
Forista Distinguido
Avatar de Usuario

Registrado: Sab Oct 09, 2004 11:00 pm
Mensajes: 1299

Nota Publicado: Mié Dic 21, 2011 3:48 pm 
Arriba  
Un último detalle: el primer índice de un array es siempre cero.

 Perfil  
Mostrar mensajes previos:  Ordenar por  
 [ 14 mensajes ] 
Nuevo tema Responder al tema

Saltar a:  


¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 5 invitados

No puede abrir nuevos temas en este Foro
No puede responder a temas en este Foro
No puede editar sus mensajes en este Foro
No puede borrar sus mensajes en este Foro
No puede enviar adjuntos en este Foro

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group :: Style based on FI Subice by phpBBservice.nl :: Todos los horarios son UTC - 6 horas
Traducción al español por Huan Manwë
phpBB SEO