Pascal, ayuda!!

YcaR

Buenas gente, yo no soy muy asiduo a estar por estos foros porque mas q nada no se sobre estos temas vengo a pediros ayuda sobre un lenguaje de programacion el cual utilizamos en la escuela de ingenieros. El idioma es el pascal como el del titulo y mi problema esq no tengo ni puta idea y necesitaria ayuda para poder terminar una practica de diseño q cuenta para nota. He resuelto la mayoria del programa pero me falla en unas historias q no consigo sacarla.Espero q seais compasivos y me ayudeis es para mañana.

P.D. Antes de nada ya se que es mogollon de facil segun me ha dixo todo el mundo pero la historia es q no me entra ni a patadas.

YcaR

bueno casi q os copio aki todo lo q he ehcho para q lo veais. si kereis y sino pues nada.
program monedas;
var
car,car_ant,continua:char;
contador_caras,contador_cruces,contador_trama:integer;
error:boolean;
begin
repeat
writeln('Introduce la cadena de 10 tiradas por favor')
repeat
leer(car);
car:=upCase(car);
If car<>'c' or car<>'x' or car<>'' then error=true;
If car='c' then contador_caras:=contador_caras+1
else If car='x' then contador_cruces:=contador_cruces+1;
If car=car_ant then contador_trama:=contador_trama+1
else contador_trama:=0;
If (contador_caras>=(contador_caras+contador_cruces)
0.8)
or (contador_cruces>=(contador_caras+contador_cruces)0.8)
or contador_trama>=8 then writeln ('Tu moneda esta trucada')
else writeln ('Tu moneda no esta trucada');
until car='
' or error=true;
readln;
writeln('Quiere seguir probando monedas? (S) ¢ (N): ');
readln(continuar);
until (continuar='N') or (continuar='n');
end.

P.D: el programa consiste en determinar ssi una moneda esta trucada tirando a cara o cruz.

LURTZ

no creo q esta web es la mas indicada para preguntar sobre el pascal.
busca tutoriales de pascal en google

PD: tb encontraras algo en Universia

ReMaTxEs

var
car,car_ant,continua:char;
contador_caras,contador_cruces,contador_trama:integer;
error:boolean;
begin
repeat
begin
writeln('Introduce la cadena de 10 tiradas por favor')
repeat
begin
readln/u;
car:=upCase(car);
If car<>'c' or car<>'x' or car<>'' then error=true;
If car='c' then contador_caras:=contador_caras+1
else If car='x' then contador_cruces:=contador_cruces+1;
If car=car_ant then contador_trama:=contador_trama+1
else contador_trama:=0;
If (contador_caras>=(contador_caras+contador_cruces)
0.8)
or (contador_cruces>=(contador_caras+contador_cruces)0.8)
or contador_trama>=8 then writeln ('Tu moneda esta trucada')
else writeln ('Tu moneda no esta trucada');
end;
until car='
' or error=true;
readln;
writeln('Quiere seguir probando monedas? (S) ¢ (N): ');
readln(continuar);
end;
until (continuar='N') or (continuar='n');
end.

Si no pones esos begin y esos end, el until te lo asocia con el primer repeat que pille (Mirando desde abajo haci arriba) Y m parece que no es lo q quieres hacer... Lo que esta subrayado es que esta "corregido"

P.D: 1 Consejo, supongo que aquí no veremos el programa tabulado xq la web no lo permite, pero cuando programas por favor... TABULA!!!!! Ayuda muchísimo para ver todo mas rapidamente

Desde el año pasao no he vuelto apenas a mirar PASCAl xo supongo que al menos esta decente

Carcass

program&nbsp;monedas;

var
&nbsp;&nbsp;car,car_ant,continua:char;
&nbsp;&nbsp;contador_caras,contador_cruces,contador_trama:integer;
&nbsp;&nbsp;error:boolean;
begin
&nbsp;&nbsp;repeat
&nbsp;&nbsp;&nbsp;&nbsp;writeln('Introduce&nbsp;la&nbsp;cadena&nbsp;de&nbsp;10&nbsp;tiradas&nbsp;por&nbsp;favor')
&nbsp;&nbsp;&nbsp;&nbsp;repeat
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;leer(car);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;car:=upCase(car);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;car<>'c'&nbsp;and&nbsp;car<>'x'&nbsp;and&nbsp;car<>'*'&nbsp;then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;error=true;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;car='c'&nbsp;then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;contador_caras:=contador_caras+1
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;If&nbsp;car='x'&nbsp;then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;contador_cruces:=contador_cruces+1;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;if

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;car=car_ant&nbsp;then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;contador_trama:=contador_trama+1
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;contador_trama:=0;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;if

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If(contador_caras>=(contador_caras+contador_cruces)0.8)&nbsp;or&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (contador_cruces>=(contador_caras+contador_cruces)
0.8)&nbsp;or
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;contador_trama>=8&nbsp;then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writeln ('Tu&nbsp;moneda&nbsp;esta&nbsp;trucada')
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writeln ('Tu&nbsp;moneda&nbsp;no&nbsp;esta&nbsp;trucada');
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;if
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;if
&nbsp;&nbsp;&nbsp;&nbsp;until&nbsp;car='*'&nbsp;or&nbsp;error=true;

&nbsp;&nbsp;&nbsp;&nbsp;readln;

&nbsp;&nbsp;&nbsp;&nbsp;writeln('Quiere&nbsp;seguir&nbsp;probando&nbsp;monedas? (S)&nbsp;¢ (N):&nbsp;');
&nbsp;&nbsp;&nbsp;&nbsp;readln(continuar);
&nbsp;&nbsp;until (continuar='N')&nbsp;or (continuar='n');
end.

Además de lo de la indentación, que vaya pecado... Va a ser que la comprobación para ver si la tecla es errónea es con And y no con Or... Está mal si es distinto de c Y x Y *. Con Or siempre te va a salir que está mal la tecla...

PD: Falta la funcion "leer" ¿no?

YcaR

muxas gracias gente ahora lo acabare de mirar con esas correcciones q habeis hecho. muxas gracias.

YcaR

no me dice mas q todo el rato q la moneda esta trucada nose q cojones le pasa.

NoSHeL

hay un momento que haces un if car=car_ant
Y car_ant no lo estas ni inicializando ni usando en todo el programa... La verdad que aun no me quedo bastante claro que se supone que hace el programa :P

Carcass

#8 Anda, no me fijé... Es verdad, hay que poner:

Después de:

    If car=car_ant then
      contador_trama:=contador_trama+1
    else
      contador_trama:=0;
    end if

Esto:

car_ant=car;

El programa, por lo que se ve... comprueba si un lado de la moneda sale un 80% de veces u ocho veces seguidas. Si es así, dice que la moneda está trucada. Si no, supone que está bien... Está un poco limitadito porque se supone que tienen que tender al 50% con muchas tiradas, pero bueno. Algo es algo jeje

YcaR

muxas gracias a todos pero el programa esta mal resulta q hay q expresar mogollon de cosas mas. asi que q entregare lo q tengo y santas pascuas gracias por todo. Si a alguien se le ha qdado el gusanillo de como hacerlo le envio el enunciado de esta practica y de alguna mas q tengo q hacer.jejejeje. venga asias

DarkKonum

Pues a mi me interesa, que estoy haciendo sistemas, y aunk con la programacion no tengo problemas (ya lo traia sabido a la carrera y esoa yuda muchisimo) me gusta meter mano a la programacion.

ReMaTxEs

#11 Yo tngo que hacer un analizador sintactico xD Si te interesa puedes empezar!!!!! xD

DarkKonum

La programacion se me da bien, pero cálculo y fisica son más jodidillas XD. Ademas, la lengua no es lo mio, si sabes mas de analisis sintactico el Word que yo XD

Carcass

#13 Supongo que será un analizador sintáctico para un compilador, no uno de lenguaje natural X-)

Y sin cálculo y física mal vas para programar cosas divertidas. A esforzarse, joven :-P

Usuarios habituales

  • Carcass
  • DarkKonum
  • ReMaTxEs
  • YcaR
  • NoSHeL
  • LURTZ