|
Ver temas sin respuesta | Ver temas activos
Foros Linux » Desarrollo » Programación
Página 1 de 1
|
[ 14 mensajes ] |
|
| Autor |
Mensaje |
GPLeo

Forista Nuevo
Registrado: Dom Jun 10, 2007 11:00 pm Mensajes: 44
|
 Publicado: Mié Dic 14, 2011 3:42 pm |
|
|
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.
|
|
|
|
 |
mcun

Moderador
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)
|
 Publicado: Mié Dic 14, 2011 4:37 pm |
|
|
|
 |
GPLeo

Forista Nuevo
Registrado: Dom Jun 10, 2007 11:00 pm Mensajes: 44
|
 Publicado: Mié Dic 14, 2011 5:17 pm |
|
mcun escribió: 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
|
|
|
|
 |
mcun

Moderador
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)
|
 Publicado: Mié Dic 14, 2011 5:23 pm |
|
|
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
|
|
|
|
 |
neurus

Forista Distinguido
Registrado: Sab Oct 09, 2004 11:00 pm Mensajes: 1299
|
 Publicado: Mié Dic 14, 2011 10:19 pm |
|
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.
|
|
|
|
 |
GPLeo

Forista Nuevo
Registrado: Dom Jun 10, 2007 11:00 pm Mensajes: 44
|
 Publicado: Lun Dic 19, 2011 7:47 am |
|
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.
|
|
|
|
 |
neurus

Forista Distinguido
Registrado: Sab Oct 09, 2004 11:00 pm Mensajes: 1299
|
 Publicado: Lun Dic 19, 2011 1:24 pm |
|
|
¿Es un chiste, verdad? ¿No tienes ninguna pista sobre cómo abordar el problema? Es más, ¿no está resuelto el problema?.
|
|
|
|
 |
GPLeo

Forista Nuevo
Registrado: Dom Jun 10, 2007 11:00 pm Mensajes: 44
|
 Publicado: Mié Dic 21, 2011 10:04 am |
|
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.
|
|
|
|
 |
niky45

Forista Ancestral
Registrado: Mié Abr 11, 2007 11:00 pm Mensajes: 8550 Ubicación: tras la pantalla (...)
|
 Publicado: Mié Dic 21, 2011 11:37 am |
|
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 ]
|
|
|
|
 |
neurus

Forista Distinguido
Registrado: Sab Oct 09, 2004 11:00 pm Mensajes: 1299
|
 Publicado: Mié Dic 21, 2011 1:33 pm |
|
|
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.
|
|
|
|
 |
GPLeo

Forista Nuevo
Registrado: Dom Jun 10, 2007 11:00 pm Mensajes: 44
|
 Publicado: Mié Dic 21, 2011 2:57 pm |
|
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.
|
|
|
|
 |
neurus

Forista Distinguido
Registrado: Sab Oct 09, 2004 11:00 pm Mensajes: 1299
|
 Publicado: Mié Dic 21, 2011 3:12 pm |
|
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.
|
|
|
|
 |
akodo

Moderador
Registrado: Mié Nov 28, 2007 12:00 am Mensajes: 1361 Ubicación: En la X del explorer (pulse para llamar)
|
 Publicado: Mié Dic 21, 2011 3:43 pm |
|
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)
|
|
|
|
 |
neurus

Forista Distinguido
Registrado: Sab Oct 09, 2004 11:00 pm Mensajes: 1299
|
 Publicado: Mié Dic 21, 2011 3:48 pm |
|
|
Un último detalle: el primer índice de un array es siempre cero.
|
|
|
|
 |
|
|
|
Página 1 de 1
|
[ 14 mensajes ] |
|
¿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
|
|