Anormales son cuando son iones o radicales libres.
Para hacer esto hay que saber Química, claro ¿alguno sabe suficiente?
He pensado esto:
Citar
ÁtomosEnMolecula = 2
// Valencia del átomo 1:
VA1 = 1
// Identificador del átomo 1:
A1 = 1
// Eso se convierte en un átomo de la lista que la valencia marque, por ejemplo si VA1 es 1 y A1 es 1 entonces es H)
// Datos del átomo 2:
VA2 = 1
A2 = 1
Apuntador = ÁtomosEnMolecula
// Frame 2.
Si la fórmula molecular es normal, mostrarla (mostraría HH, no H_2, eso es secundario).
Si el átomo que indica el Apuntador (2: A2) puede ser otro (mayor que su anterior si hay, A1), modificarlo e ir a Frame 2.
Si hay un átomo anterior (sí: A1), disminuir el Apuntador e ir al párrafo anterior.
Resetear átomos (A1=1 y A2=1)
Apuntador = ÁtomosEnMolecula
Si la valencia del átomo que el apuntador indica (2: VA2) puede aumentar (sólo si es menor a su anterior si hay, VA1), aumentarla e ir a Frame 2.
Si hay un átomo anterior (sí: A1), disminuir el Apuntador e ir al párrafo anterior.
// Creo que en este punto habría mostrado todas las moléculas diatómicas.
// Agregar un átomo
ÁtomosEnMolecula+1
VA3=1 y A3=1 (o VA4 y A4, etc)
Apuntador = ÁtomosEnMolecula
ir a Frame 2.
Con eso se producirían fórmulas químicas hasta el aburrimiento.
Puede que el código ese tenga alguna falla, pero lo que necesito más urgentemente es:// Valencia del átomo 1:
VA1 = 1
// Identificador del átomo 1:
A1 = 1
// Eso se convierte en un átomo de la lista que la valencia marque, por ejemplo si VA1 es 1 y A1 es 1 entonces es H)
// Datos del átomo 2:
VA2 = 1
A2 = 1
Apuntador = ÁtomosEnMolecula
// Frame 2.
Si la fórmula molecular es normal, mostrarla (mostraría HH, no H_2, eso es secundario).
Si el átomo que indica el Apuntador (2: A2) puede ser otro (mayor que su anterior si hay, A1), modificarlo e ir a Frame 2.
Si hay un átomo anterior (sí: A1), disminuir el Apuntador e ir al párrafo anterior.
Resetear átomos (A1=1 y A2=1)
Apuntador = ÁtomosEnMolecula
Si la valencia del átomo que el apuntador indica (2: VA2) puede aumentar (sólo si es menor a su anterior si hay, VA1), aumentarla e ir a Frame 2.
Si hay un átomo anterior (sí: A1), disminuir el Apuntador e ir al párrafo anterior.
// Creo que en este punto habría mostrado todas las moléculas diatómicas.
// Agregar un átomo
ÁtomosEnMolecula+1
VA3=1 y A3=1 (o VA4 y A4, etc)
Apuntador = ÁtomosEnMolecula
ir a Frame 2.
Con eso se producirían fórmulas químicas hasta el aburrimiento.
- Entender qué átomos pueden formar 1 enlace, cuales 2, cuales 3 y cuales 4. Quizá hay más, pero es raro así que no lo consideraré. Se supone que eso es indicado por la valencia y que está en la tabla periódica, pero hay casos en que ponen muchos números y entonces no sé.
- Entender qué condiciones cumple una molécula normal.
Por ejemplo H3O no es normal porque la suma de las valencias no es par: 3+2=5
Pero eso no basta, por ejemplo CH6 tiene suma par pero no es normal, es un radical libre, normal sería esto:
H
HCH
H
El C con 4 enlaces y los H con 1, así que los 2H restantes no pueden formar parte de la molécula. Pensé que alcanzaba con decir que la suma de valencias de átomos con más de 1 debía ser mayor o igual que los con valencia 1 (en este caso 4<6 por lo que no sería normal), pero hay casos como NOH5 en que eso se cumple y aún así no es normal:
3+2+5=10, par, bien
3+2=<5, bien.
Pero la molécula sería: 2H-N-O-H y no hay forma de enlazar los 2H que faltan.