PROGRAMA EN PASCAL PARA SABER EL NUMERO DE ATOMOS QUE TIENE UNA FORMULA QUIMICA INTRODUCIDA
Publicado por carlos (12 intervenciones) el 16/04/2012 20:49:37
Hola, he hecho el siguiente programa para que el programa lea una formula quimica y diga el numero de atomos que tiene cada elemento en dicha formula. El problema esta en que si se mete por ejemplo C4H10, dice que hay solo 1 atomo de H, es decir, solo lee el primer digito a la derecha de la letra que representa el elmemento, y al darle a intro para cerrar, siguen saliendo cosas sin parar (en concreto sale cada vez que le doy: '1 atomo de' , 2 veces). Me podeis ayudar? Gracias.
Algoritmo que lea una fórmula química y diga el número de átomos que hay
en dicha molécula de cada elemento
PROGRAM PreguntarFormula;
CONST chFin= '.';
VAR ch, simb1, simb2: char; numAtomos: integer;
BEGIN
write(' Escriba una formula quimica: '); read(ch);
while ch<>chFin do begin {reconocer un elemento}
simb1:= ch; read(ch);
if (ch<='z') and (ch>='a') then begin simb2:= ch; read(ch) end
else simb2:=' ';
if (ch<='9') and (ch>='0') then begin numAtomos:= ord(ch)-ord('0'); read(ch) end
else numAtomos:= 1;
if numAtomos>1 then write (numAtomos:1, ' atomos de ')
else write (1:1, ' atomos de ');
write (simb1);
if simb2<>' ' then write (simb2);
writeln;
end;
readln(numAtomos);
END.
Algoritmo que lea una fórmula química y diga el número de átomos que hay
en dicha molécula de cada elemento
PROGRAM PreguntarFormula;
CONST chFin= '.';
VAR ch, simb1, simb2: char; numAtomos: integer;
BEGIN
write(' Escriba una formula quimica: '); read(ch);
while ch<>chFin do begin {reconocer un elemento}
simb1:= ch; read(ch);
if (ch<='z') and (ch>='a') then begin simb2:= ch; read(ch) end
else simb2:=' ';
if (ch<='9') and (ch>='0') then begin numAtomos:= ord(ch)-ord('0'); read(ch) end
else numAtomos:= 1;
if numAtomos>1 then write (numAtomos:1, ' atomos de ')
else write (1:1, ' atomos de ');
write (simb1);
if simb2<>' ' then write (simb2);
writeln;
end;
readln(numAtomos);
END.
Valora esta pregunta


0