Pascal/Turbo Pascal - PROGRAMA EN PASCAL PARA SABER EL NUMERO DE ATOMOS QUE TIENE UNA FORMULA QUIMICA INTRODUCIDA

 
Vista:

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.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

PROGRAMA EN PASCAL PARA SABER EL NUMERO DE ATOMOS QUE TIENE UNA FORMULA QUIMICA INTRODUCIDA

Publicado por ramon (2158 intervenciones) el 17/04/2012 19:28:58
{A ver si esto te ayuda son tres formulas las de mas las implementas tu}

program formulas;
uses
crt;
type
string6 = string[6];

CONST
chFin= '.';

VAR
ch : string6;
oxigenoatomos, hidrogenoAtomos : longint;
carbonoatomos : longint;


procedure entrada(var ch : string6);
begin
writeln('Formulas Activas [ H2O, CO2, CH4 ] Ponga[.] al Final');
write('Entre Formula Quimica : ');
readln(ch);
end;

procedure desglose(c : string6);
var
error, i, len : integer;
can : string[2];
formula : string6;
begin
len := length(c);
if c[len] = '.' then
begin
clrscr;
for i := 1 to len - 1 do
begin
formula[i] := upcase(c[i]);
formula[0] := chr(i);
end;
if formula = 'H2O' then
writeln('Formula Quimica del Agua');
if formula = 'CO2' then
writeln('Formula Quimica del Dioxido de Carbono');
if formula = 'CH4' then
writeln('Formula Quimica del Metano');
for i := 1 to len do
begin
if (c[i] = 'H') or (c[i] = 'h') then
begin
if c[i + 1] in[#50..#57] then
begin
can[1] := c[i + 1];
can[0] := chr(1);
val(can,hidrogenoAtomos,error);
end
else
begin
hidrogenoAtomos := 1;
end;
writeln('ATOMOS DE HIDROGENO : ',hidrogenoAtomos);
end;
if (c[i] = 'O') or (c[i] = 'o') then
begin
if c[i + 1] in[#50..#57] then
begin
can[1] := c[i + 1];
can[0] := chr(1);
val(can,oxigenoatomos,error);
end
else
begin
oxigenoatomos := 1;
end;
writeln('ATOMOS DE OXIGENO : ',oxigenoatomos);
end;
if (c[i] = 'C') or (c[i] = 'c') then
begin
if c[i + 1] in[#50..#57] then
begin
can[1] := c[i + 1];
can[0] := chr(1);
val(can,carbonoatomos,error);
end
else
begin
carbonoatomos := 1;
end;
writeln('ATOMOS DE CARBONO : ',carbonoatomos);
end;
end;
readln;
end
else
begin
writeln('Formula Escrita Incorrecta mente Pulse [ENTER]');
readln;
end;
end;

begin
clrscr;
entrada(ch);
desglose(ch);
end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar