tp1

112 views
Skip to first unread message

kevin.spasiuk

unread,
Sep 28, 2016, 1:03:29 PM9/28/16
to fiuba-7541rw-alu
Buenas! podrían subir el enunciado del tp1? Muchas Gracias.

Mati Scakosky

unread,
Sep 28, 2016, 1:10:43 PM9/28/16
to fiuba-75...@googlegroups.com
No des ideas kevin!!

Enviado desde mi iPhone

El 28 sept 2016, a las 2:03 p.m., kevin.spasiuk <kevin....@gmail.com> escribió:

Buenas! podrían subir el enunciado del tp1? Muchas Gracias.

--
Cómo usar esta lista: https://tiny.cc/algo2-lista-doc
---
Has recibido este mensaje porque estás suscrito al grupo "fiuba-7541rw-alu" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a fiuba-7541rw-a...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Federico Barrios

unread,
Sep 28, 2016, 2:58:57 PM9/28/16
to fiuba-75...@googlegroups.com

Un saludo.

2016-09-28 14:03 GMT-03:00 kevin.spasiuk <kevin....@gmail.com>:
Buenas! podrían subir el enunciado del tp1? Muchas Gracias.

--
Cómo usar esta lista: https://tiny.cc/algo2-lista-doc
---
Has recibido este mensaje porque estás suscrito al grupo "fiuba-7541rw-alu" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a fiuba-7541rw-alu+unsubscribe@googlegroups.com.

Ricardo Brandan

unread,
Sep 28, 2016, 8:31:37 PM9/28/16
to fiuba-75...@googlegroups.com
Hola, una consulta, cuando quiero imprimir las dos palabras una al lado de la otra en el programa PASTE me hace un salto de linea. Por ejemplo

Huevo
              6
Carne
              28

Usando tanto fprintf como fputs. ¿Alguna idea de por qué será?


El mié. 28 28e sept. 28e 2016 a las 15:58, Federico Barrios
<fbar...@live.com.ar> escribió:
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a fiuba-7541rw-a...@googlegroups.com.

Federico Esteban

unread,
Sep 28, 2016, 11:02:02 PM9/28/16
to fiuba-75...@googlegroups.com
Ricardo, es muy díficil saberlo si no sabemos cómo lo estas implementando, pero seguramente estas copiando el string de la linea del archivo con el \n que tiene incluído al final. Si es así, deberías ver la forma de omitir ese caracter.

Si no, volvé a postear con mas información y te intentamos ayudar.

Saludos.

Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a fiuba-7541rw-alu+unsubscribe@googlegroups.com.

Para acceder a más opciones, visita https://groups.google.com/d/optout.

--
Cómo usar esta lista: https://tiny.cc/algo2-lista-doc
---
Has recibido este mensaje porque estás suscrito al grupo "fiuba-7541rw-alu" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a fiuba-7541rw-alu+unsubscribe@googlegroups.com.

Ricardo Brandan

unread,
Sep 29, 2016, 3:20:54 PM9/29/16
to fiuba-75...@googlegroups.com
Ahh, yo pensé que era problema de fprintf o fputs. Ya pude sacarle el \n. Ahora me lo imprime bien. Muchas gracias Federico.

Saludos


El jue. 29 29e sept. 29e 2016 a las 0:02, Federico Esteban
<fede...@gmail.com> escribió:
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a fiuba-7541rw-a...@googlegroups.com.

Ricardo Brandan

unread,
Oct 1, 2016, 6:49:32 PM10/1/16
to fiuba-75...@googlegroups.com
Hola, buenas tardes,

Una consulta, en el TP1, para la función dc cuando dice que si se pasan varias lineas se tienen que tomar como operaciones por separado se refiere a pasar varias operaciones de esta forma echo "1 1 +" " 1 2 3 + *" | ./dc? porque traté de pasar eso a mi programa pero no me la toma como operaciones por separado sino todo junto... aunque con operaciones como echo "1 2 2 + *"  | ./dc funciona bien.

Yo tomo las lineas por stdin con getline y lo que puedo hacer si quiero tirar varias lineas es cuando pongo ./dc me deja en la siguiente linea en blanco y puedo poner varias operaciones así

ricardo@zao-945gcm-s2c:~/Escritorio/TP1$ ./dc
1 1 1 + *
2
2 2 1 + *
6
1 1 +
2
2 2 *
4
^Z
[11]+  Detenido                ./dc
ricardo@zao-945gcm-s2c:~/Escritorio/TP1$

¿Esta bien así o no es la forma a la que se refiere en el enunciado?

Gracia de antemano.

Saludos.


Federico Barrios

unread,
Oct 1, 2016, 10:04:41 PM10/1/16
to fiuba-75...@googlegroups.com
Hola Ricardo:

Veo que tenés dos problemas: el primero es que

echo "1 1 +" " 1 2 3 + *"

no produce dos líneas. Las líneas en unix se separan con '\n'. Para producir lo que buscás deberías hacer:

echo "1 1 +\n1 2 3 + *"

Lo otro es que getline agrega un \0 para terminar la línea pero sin borrar el \n de separación. Por eso te aparecen las líneas separadas por una en blanco. 
Para borrarlas tenés que usar el valor de retorno de la función y cambiarlas manualmente.

Un saludo.


2016-10-01 19:49 GMT-03:00 'Ricardo Brandan' via fiuba-7541rw-alu <fiuba-75...@googlegroups.com>:
Hola, buenas tardes,

Una consulta, en el TP1, para la función dc cuando dice que si se pasan varias lineas se tienen que tomar como operaciones por separado se refiere a pasar varias operaciones de esta forma echo "1 1 +" " 1 2 3 + *" | ./dc? porque traté de pasar eso a mi programa pero no me la toma como operaciones por separado sino todo junto... aunque con operaciones como echo "1 2 2 + *"  | ./dc funciona bien.

Yo tomo las lineas por stdin con getline y lo que puedo hacer si quiero tirar varias lineas es cuando pongo ./dc me deja en la siguiente linea en blanco y puedo poner varias operaciones así

ricardo@zao-945gcm-s2c:~/Escritorio/TP1$ ./dc
1 1 1 + *
2
2 2 1 + *
6
1 1 +
2
2 2 *
4
^Z
[11]+  Detenido                ./dc
ricardo@zao-945gcm-s2c:~/Escritorio/TP1$

¿Esta bien así o no es la forma a la que se refiere en el enunciado?

Gracia de antemano.

Saludos.


El Jueves, 29 de septiembre, 2016 16:20:55, 'Ricardo Brandan' via fiuba-7541rw-alu <fiuba-7541rw-alu@googlegroups.com> escribió:


Ahh, yo pensé que era problema de fprintf o fputs. Ya pude sacarle el \n. Ahora me lo imprime bien. Muchas gracias Federico.

Saludos


El jue. 29 29e sept. 29e 2016 a las 0:02, Federico Esteban
<fede...@gmail.com> escribió:
Ricardo, es muy díficil saberlo si no sabemos cómo lo estas implementando, pero seguramente estas copiando el string de la linea del archivo con el \n que tiene incluído al final. Si es así, deberías ver la forma de omitir ese caracter.

Si no, volvé a postear con mas información y te intentamos ayudar.

Saludos.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a fiuba-7541rw-alu+unsubscribe@googlegroups.com.

Para acceder a más opciones, visita https://groups.google.com/d/optout.
--
Cómo usar esta lista: https://tiny.cc/algo2-lista-doc
---
Has recibido este mensaje porque estás suscrito al grupo "fiuba-7541rw-alu" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a fiuba-7541rw-alu+unsubscribe@googlegroups.com.

Para acceder a más opciones, visita https://groups.google.com/d/optout.

--
Cómo usar esta lista: https://tiny.cc/algo2-lista-doc
---
Has recibido este mensaje porque estás suscrito al grupo "fiuba-7541rw-alu" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a fiuba-7541rw-alu+unsubscribe@googlegroups.com.

Ricardo Brandan

unread,
Oct 3, 2016, 9:30:54 PM10/3/16
to fiuba-75...@googlegroups.com
Ya pude sacarle el \n que ponía getline. Y lo de dc también aclaró mi duda. Muchas gracias.

Otra consulta, con respecto a la función More que hay que implementar. En el enunciado de More no especifíca pero lo que se le pasa es un archivo ¿no?

Gracias


El Sábado, 1 de octubre, 2016 23:04:41, Federico Barrios <fbar...@live.com.ar> escribió:


Hola Ricardo:

Veo que tenés dos problemas: el primero es que

echo "1 1 +" " 1 2 3 + *"

no produce dos líneas. Las líneas en unix se separan con '\n'. Para producir lo que buscás deberías hacer:

echo "1 1 +\n1 2 3 + *"

Lo otro es que getline agrega un \0 para terminar la línea pero sin borrar el \n de separación. Por eso te aparecen las líneas separadas por una en blanco. 
Para borrarlas tenés que usar el valor de retorno de la función y cambiarlas manualmente.

Un saludo.

2016-10-01 19:49 GMT-03:00 'Ricardo Brandan' via fiuba-7541rw-alu <fiuba-75...@googlegroups.com>:
Hola, buenas tardes,

Una consulta, en el TP1, para la función dc cuando dice que si se pasan varias lineas se tienen que tomar como operaciones por separado se refiere a pasar varias operaciones de esta forma echo "1 1 +" " 1 2 3 + *" | ./dc? porque traté de pasar eso a mi programa pero no me la toma como operaciones por separado sino todo junto... aunque con operaciones como echo "1 2 2 + *"  | ./dc funciona bien.

Yo tomo las lineas por stdin con getline y lo que puedo hacer si quiero tirar varias lineas es cuando pongo ./dc me deja en la siguiente linea en blanco y puedo poner varias operaciones así

ricardo@zao-945gcm-s2c:~/ Escritorio/TP1$ ./dc

1 1 1 + *
2
2 2 1 + *
6
1 1 +
2
2 2 *
4
^Z
[11]+  Detenido                ./dc
ricardo@zao-945gcm-s2c:~/ Escritorio/TP1$

¿Esta bien así o no es la forma a la que se refiere en el enunciado?

Gracia de antemano.

Saludos.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a fiuba-7541rw-a...@googlegroups.com.

Federico Barrios

unread,
Oct 4, 2016, 10:57:40 AM10/4/16
to fiuba-75...@googlegroups.com
Hola Ricardo:

Lo del more es un error y está rectificado en el correo de errata del TP1 que enviamos ayer.

Un saludo.

2016-10-03 22:30 GMT-03:00 'Ricardo Brandan' via fiuba-7541rw-alu <fiuba-75...@googlegroups.com>:
Ya pude sacarle el \n que ponía getline. Y lo de dc también aclaró mi duda. Muchas gracias.

Otra consulta, con respecto a la función More que hay que implementar. En el enunciado de More no especifíca pero lo que se le pasa es un archivo ¿no?

Gracias


El Sábado, 1 de octubre, 2016 23:04:41, Federico Barrios <fbar...@live.com.ar> escribió:


Hola Ricardo:

Veo que tenés dos problemas: el primero es que

echo "1 1 +" " 1 2 3 + *"

no produce dos líneas. Las líneas en unix se separan con '\n'. Para producir lo que buscás deberías hacer:

echo "1 1 +\n1 2 3 + *"

Lo otro es que getline agrega un \0 para terminar la línea pero sin borrar el \n de separación. Por eso te aparecen las líneas separadas por una en blanco. 
Para borrarlas tenés que usar el valor de retorno de la función y cambiarlas manualmente.

Un saludo.

Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a fiuba-7541rw-alu+unsubscribe@googlegroups.com.

Para acceder a más opciones, visita https://groups.google.com/d/optout.

--
Cómo usar esta lista: https://tiny.cc/algo2-lista-doc
---
Has recibido este mensaje porque estás suscrito al grupo "fiuba-7541rw-alu" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a fiuba-7541rw-alu+unsubscribe@googlegroups.com.

Alejo Acevedo

unread,
Oct 10, 2016, 11:00:58 AM10/10/16
to fiuba-7541rw-alu
Una consulta sobre la calculadora polaca, se hace una cuenta y se cierra el programa? O tiene que ser un bucle infinito? De ser asi, hay alguna forma para que el programa se de cuenta cuando lo cierro con ctrl + c por ejemplo? Xq sino estaría perdiendo memoria.

Federico Barrios

unread,
Oct 10, 2016, 11:40:07 AM10/10/16
to fiuba-75...@googlegroups.com
Hola Alejo:

2016-10-10 12:00 GMT-03:00 Alejo Acevedo <ale.ac...@gmail.com>:
Una consulta sobre la calculadora polaca, se hace una cuenta y se cierra el programa? O tiene que ser un bucle infinito? De ser asi, hay alguna forma para que el programa se de cuenta cuando lo cierro con ctrl + c por ejemplo? Xq sino estaría perdiendo memoria.

No, eso está explícito en el enunciado. Se lee hasta fin de entrada estándar, tomando cada línea como una cuenta diferente.

Un saludo.

Diego Alfonso

unread,
Oct 11, 2016, 12:35:36 PM10/11/16
to fiuba-7541rw-alu
Hola Alejo!
Si bien, como ya te explicó el Ing. Barrios, no aplica al trabajo práctico que están haciendo (se lee hasta que termine la entrada estándar, por ejemplo, cuando se presiona Ctrl+D en el shell de Linux o cuando se cierra el pipe), me parece interesante la pregunta "qué pasa cuando aprieto Ctrl+C?". Si te interesa profundizar en el tema, te dejo una incompleta explicación:

Por un lado, los sistemas operativos modernos tienen mecanismos para protegernos de leaks de recursos. Cuando un proceso termina, el sistema operativo "reclama" la memoria que le cedió. Esto no significa que esté bien depender del sistema operativo y dejar los leaks sueltos, pero en el caso de la memoria no es tan trágico. Es más traumático cuando dejás conexiones de red abiertas o procesos huérfanos (todos temas de materias más avanzadas).

Por otro lado, cuando el usuario presiona Ctrl+C en la terminal, lo que en realidad sucede es que se dispara una señal SIGINT al proceso que está corriendo en primer plano. El proceso puede elegir "atrapar" la señal (para esto el desarrollador programa un signal handler - manejador de señales) y hacer el "cleanup" (liberar los recursos) antes de devolver el control al S.O. Éste sería el caso que mencionás (que el programa "se dé cuenta cuando lo cierro con Ctrl+C"). Si el proceso no atrapa la señal, el S.O. simplemente lo mata.

Espero que te sirva la explicación como base para profundizar un poco más.
Saludos!

--
Reply all
Reply to author
Forward
0 new messages