Discussion:
Impresión de carácteres en pantalla.
(demasiado antiguo para responder)
MANTERO
2004-04-06 03:00:48 UTC
Permalink
Acabo de empezar a aprender C y estoy haciendo pequeñas pruebas. Una
de las pruebas es mostrar un mensaje de texto que te dice que
introduzcas una palabra de máximo diez letra, pero para esto estoy
utilizando la función getc() y me gustaría abreviar un poco el
conjunto de los diez carácteres de la función getc().

Tal como lo tengo puesto está así:

c1 = getchar();
c2 = getchar();
c3 = getchar();
c4 = getchar();
c5 = getchar();
c6 = getchar();
c7 = getchar();
c8 = getchar();
c9 = getchar();
c10= getchar();

Pero me gustaría ponerlo de una manera más sencilla pero sin utilizar
otras funciones o instrucciones. He probado a ponerlo así:

c1, c2, c3, c4, c5, c6, c7, c8, c9, c10 = getc(stdin);

Pero de ésta manera me manda 9 mensajes de atención y a la hora de
ejecutarlo en lugar de letras se muestran simblos raros. ¿Alguien me
puede guiar o tiene alguna pista?

Saludos,
MANTERO.
J.A. Gutierrez
2004-04-06 06:49:38 UTC
Permalink
MANTERO <***@yahoo.es> wrote:
: Acabo de empezar a aprender C y estoy haciendo pequeñas pruebas. Una
: de las pruebas es mostrar un mensaje de texto que te dice que

no seria mas logico que las pruebas las hicieras a la vez
que aprendes, y no antes?

: Pero me gustaría ponerlo de una manera más sencilla pero sin utilizar
: otras funciones o instrucciones. He probado a ponerlo así:

: c1, c2, c3, c4, c5, c6, c7, c8, c9, c10 = getc(stdin);

eso no tiene sentido. (O mejor dicho, no tiene un sentido
ni remotamente parecido a lo que pretendes)

: Pero de ésta manera me manda 9 mensajes de atención y a la hora de
: ejecutarlo en lugar de letras se muestran simblos raros. ¿Alguien me
: puede guiar o tiene alguna pista?

pista 1: estudiate el C primero, que lo que preguntas es muy basico.
pista 2: mirate los arrays
--
finger ***@shiva.cps.unizar.es for PGP /
.mailcap tip of the day: / La vida es una carcel
application/ms-tnef; cat '%s' > /dev/null / con las puertas abiertas
text/x-vcard; cat '%s' > /dev/null / (A. Calamaro)
RETECAL nos tima - MechaKaiser
2004-04-06 09:37:14 UTC
Permalink
Post by MANTERO
c1 = getchar();
c2 = getchar();
c3 = getchar();
c4 = getchar();
c5 = getchar();
c6 = getchar();
c7 = getchar();
c8 = getchar();
c9 = getchar();
c10= getchar();
Cuando una cosa la repites más de 2 veces (algunos dicen más de 1) hay
que usar un bucle.
Post by MANTERO
Pero me gustaría ponerlo de una manera más sencilla pero sin utilizar
c1, c2, c3, c4, c5, c6, c7, c8, c9, c10 = getc(stdin);
Primera cosa sobre los compiladores: Son estúpidos, tan estúpidos como un
ordenador. En la línea anterior haces una sola llamada a getc, y se lo
asignas a c1..c10, luego el compilador hace una sóla llamada y se lo
asigna a c10 (en este caso, creo, pero no podría asegurar qué hace). A
los compiladores hay que dejarles las cosas muy claras, queremos que lo
hagan sólo a nuestra manera, y si hay dudas de cómo deben hacerlo, lo
harán mal (Ley de Murphy).

El código correcto para lo anterior sería al principio, donde habrás
declarado char c1, c2... poner char c[10], y en lugar de las
instrucciones anteriores poner un bucle. Más o menos quedaría así:

char c[10]; //Un array de 10 elementos de tipo char, desde c[0] hasta c
[9]
int contador; //Un contador para recorrer el array

//Lectura:
for(contador=0; contador<10; contador++)
//contador vale 0,1,2,3,4,5,6,7,8,9
{
c[contador]=getchar();
}

//Escritura
for(contador=0; contador<10; contador++)
//contador vale 0,1,2,3,4,5,6,7,8,9
{
putchar(c[contador]);
}

Antes de seguir asegúrate de comprender lo que he hecho en estas líneas.
TIM
2004-04-06 19:56:21 UTC
Permalink
Yo no creo que los compìladores sean estupidos, nada mas lejos de la
realidad. Prueba a escribir uno ...
--
---------------------------------------------------------------------
"Are you still wasting your time with spam?...
There is a solution!"

Protected by GIANT Company's Spam Inspector
The most powerful anti-spam software available.
http://mail.spaminspector.com
Post by RETECAL nos tima - MechaKaiser
Post by MANTERO
c1 = getchar();
c2 = getchar();
c3 = getchar();
c4 = getchar();
c5 = getchar();
c6 = getchar();
c7 = getchar();
c8 = getchar();
c9 = getchar();
c10= getchar();
Cuando una cosa la repites más de 2 veces (algunos dicen más de 1) hay
que usar un bucle.
Post by MANTERO
Pero me gustaría ponerlo de una manera más sencilla pero sin utilizar
c1, c2, c3, c4, c5, c6, c7, c8, c9, c10 = getc(stdin);
Primera cosa sobre los compiladores: Son estúpidos, tan estúpidos como un
ordenador. En la línea anterior haces una sola llamada a getc, y se lo
asignas a c1..c10, luego el compilador hace una sóla llamada y se lo
asigna a c10 (en este caso, creo, pero no podría asegurar qué hace). A
los compiladores hay que dejarles las cosas muy claras, queremos que lo
hagan sólo a nuestra manera, y si hay dudas de cómo deben hacerlo, lo
harán mal (Ley de Murphy).
El código correcto para lo anterior sería al principio, donde habrás
declarado char c1, c2... poner char c[10], y en lugar de las
char c[10]; //Un array de 10 elementos de tipo char, desde c[0] hasta c
[9]
int contador; //Un contador para recorrer el array
for(contador=0; contador<10; contador++)
//contador vale 0,1,2,3,4,5,6,7,8,9
{
c[contador]=getchar();
}
//Escritura
for(contador=0; contador<10; contador++)
//contador vale 0,1,2,3,4,5,6,7,8,9
{
putchar(c[contador]);
}
Antes de seguir asegúrate de comprender lo que he hecho en estas líneas.
RETECAL nos tima - MechaKaiser
2004-04-07 12:46:30 UTC
Permalink
Post by TIM
Yo no creo que los compìladores sean estupidos, nada mas lejos de la
realidad. Prueba a escribir uno ...
Incluso la más cutre bacteria del universo es complicada. Que un compilador
sea difícil de escribir, y lleve un enorme trabajo por detrás, no le quita
que sea completamente estúpido. Es más, la estupidez la hereda de una
máquina estúpida, el ordenador. Por si no te acuerdas, el ordenador no es
más que una calculadora programable muy avanzada, nada más y nada menos.

P.D.: Si los compiladores fueran inteligentes se comunicarían directamente
con el cliente que quiere un programa, y sobrarían programadores, analistas
y demás. Así que más vale que los compiladores sigan siendo estúpidos
muuuucho tiempo :-)
Antoine Leca
2004-04-07 16:02:11 UTC
Permalink
Post by RETECAL nos tima - MechaKaiser
Post by MANTERO
c1, c2, c3, c4, c5, c6, c7, c8, c9, c10 = getc(stdin);
En la línea anterior haces una sola llamada a getc,

Post by RETECAL nos tima - MechaKaiser
y se lo asignas a c1..c10,
¿?
Estamos en C, o ¿hemos cambiado el lenguaje a Ada?
Post by RETECAL nos tima - MechaKaiser
luego el compilador hace una sóla
llamada y se lo asigna a c10
Antes, no luego. C se lee muy a menudo como el árabe.
Sí, se lo asigna a c10


Antoine

Loading...