1825 - Creating Passwords I

Discussion around the problems of the COJ.
Forum rules
Remember that posting AC code is not allowed here. If you are going to ask a question or to post a solution, describe your algorithm instead. Posting AC code will be penalized.
humbertodiaz
Posts: 97
Joined: 6 years ago
Gender: None specified

Re: 1825 - Creating Passwords I

Post by humbertodiaz » 5 years ago

Estuve pensando en lo que Jose dijo y sospecho que su problema no tiene que ver con getline() directamente. Jose, podrias poner el codigo que usas para leer datos aqui? Tengo una idea de lo que quizas querias decir cuando decias que estabas leyendo las lineas anteriores.



User avatar
Jose132
Posts: 47
Joined: 5 years ago
Location: Matanzas - Cuba
Gender: None specified
Contact:

Re: 1825 - Creating Passwords I

Post by Jose132 » 5 years ago

@humbertodiaz gracias por invertir un poco de tiempo en esto :D , este es mi código para leer con el getline:

Code: Select all

string s;
getline(cin,s);
y en este problema lo que hago es lo siguiente:

Code: Select all

int t;
cin>>t;
for(int k=1;k<=t;k++){
    string s;
    getline(cin,s);
}
:-) "Behind every code is an enigma" :-)

humbertodiaz
Posts: 97
Joined: 6 years ago
Gender: None specified

Re: 1825 - Creating Passwords I

Post by humbertodiaz » 5 years ago

Eso es lo que me imagine. Tu problema es cuando usas cin para leer la cantidad de casos. Esa operacion no elimina el caracter que marca el final de una linea, "\n", o potencialmente los multiples caracteres si todavia no se ha resuelto lo de "\r\n" en algunos ejercicios. Cuando usas getline() por primera vez, se lee el resto de la linea donde estaba la cantidad de casos, y por eso ves que tu programa actua de una manera extraña. Hay varias soluciones. Una seria utilizar cin.ignore() para descartar la linea vacia y "\n". Tambien puedes poner una llamada a getline() que se ignorara, con el mismo proposito que cin.ignore().

Aqui esta un ejemplo:

Code: Select all

int t;
string s;
cin>>t;
getline(cin, s);
for(int k=1;k<=t;k++){
    getline(cin,s);
}

User avatar
Jose132
Posts: 47
Joined: 5 years ago
Location: Matanzas - Cuba
Gender: None specified
Contact:

Re: 1825 - Creating Passwords I

Post by Jose132 » 5 years ago

@humbertodiaz gracias por responderme tan rápido, pero quisiera si no te es molestia que me respondieras 3 cosas: :D
1-Dijiste que el problema es por leer la línea con cin; ¿hay alguna otra forma de leer la línea?, ¿cuál? :idea:
2-¿Qué función hace el cin.ignore() y dónde tendría que ponerlo? :idea:
3-¿Si leo como el ejemplo que pones me pincharía bien la lectura? :idea:

PD: @ymondelo20 gracias también por decirme cómo lees, lo implementaré para ver si me trabaja, pero quisiera seguir indagando sobre otras implementaciones del getline(). :D
:-) "Behind every code is an enigma" :-)

User avatar
Jose132
Posts: 47
Joined: 5 years ago
Location: Matanzas - Cuba
Gender: None specified
Contact:

Re: 1825 - Creating Passwords I

Post by Jose132 » 5 years ago

Estoy obteniendo WA y no sé por qué, lo que hago es básico, este es mi código:

Code: Select all

    ...
¿Qué está mal? :?

I'm getting WA and I don't know why, I do it with a basic algorith, this is my code:

Code: Select all

    ...
What's wrong? :?
Last edited by Jose132 on Wed Apr 22, 2015 12:52 am, edited 2 times in total.
:-) "Behind every code is an enigma" :-)

User avatar
ymondelo20
Posts: 1968
Joined: 8 years ago
Location: Universidad de las Ciencias Informáticas
Gender: None specified
Contact:

Re: 1825 - Creating Passwords I

Post by ymondelo20 » 5 years ago

Simplemente asumir algo que no te dicen.
"Every problem has a simple, fast and wrong solution" OJ's Main Law. ;)

User avatar
Jose132
Posts: 47
Joined: 5 years ago
Location: Matanzas - Cuba
Gender: None specified
Contact:

Re: 1825 - Creating Passwords I

Post by Jose132 » 5 years ago

@ymondelo20 :D :D :D Finalmente optimicé un poco el ejercicio en C# y logré aceptar este y el 1905 que es casi lo mismo, gracias ymondelo20, quizás mañana sea yo el que te pueda ayudar si tienes una duda, quién sabe, pero gracias, en serio. :D :D :D

PD: ahora que quité mi código y no hay forma de que nadie lo vea, ¿pudieras decirme que tenía mal?, porque denegué mi solución y vi entre las soluciones aceptadas en C++ que muchas hacían algo parecido a lo que intentaba yo, y aprendí otra forma de leer la línea entera(scanf("%[^\n]")) :roll:
:-) "Behind every code is an enigma" :-)

User avatar
ymondelo20
Posts: 1968
Joined: 8 years ago
Location: Universidad de las Ciencias Informáticas
Gender: None specified
Contact:

Re: 1825 - Creating Passwords I

Post by ymondelo20 » 5 years ago

"You can safely assume that all elements in the input are separated by a single space, there are no trailing or leading spaces." :D
"Every problem has a simple, fast and wrong solution" OJ's Main Law. ;)

Post Reply

Return to “Problem set”