From 94f8f4bb46185cc528f97eefb6c25569f197c3ce Mon Sep 17 00:00:00 2001 From: flo Date: Mon, 10 Apr 2017 17:50:10 +0200 Subject: [PATCH] Periodiq --- Makefile | 70 ++++ Makefile.config | 50 +++ font/modern.bmp | 0 font/system.bmp | 0 img/Tableau.png | Bin 0 -> 1378 bytes img/actane.png | Bin 0 -> 961 bytes img/alkalin.png | Bin 0 -> 963 bytes img/alkalino.png | Bin 0 -> 963 bytes img/detail.png | Bin 0 -> 962 bytes img/famille.png | Bin 0 -> 962 bytes img/find.png | Bin 0 -> 952 bytes img/fleche.png | Bin 0 -> 962 bytes img/g rare.png | Bin 0 -> 962 bytes img/halogene.png | Bin 0 -> 957 bytes img/lanthan.png | Bin 0 -> 960 bytes img/maxi.png | Bin 0 -> 962 bytes img/metal-trans.png | Bin 0 -> 961 bytes img/metalloide.png | Bin 0 -> 960 bytes img/mini.png | Bin 0 -> 954 bytes img/n metal.png | Bin 0 -> 961 bytes img/post.png | Bin 0 -> 961 bytes img/select.jpg | Bin 0 -> 805 bytes include/periodiq.h | 45 +++ obj/periodiq.c.o | Bin 0 -> 12224 bytes src/periodiq.c | 855 ++++++++++++++++++++++++++++++++++++++++++++ 25 files changed, 1020 insertions(+) create mode 100755 Makefile create mode 100755 Makefile.config create mode 100644 font/modern.bmp create mode 100644 font/system.bmp create mode 100644 img/Tableau.png create mode 100644 img/actane.png create mode 100644 img/alkalin.png create mode 100644 img/alkalino.png create mode 100644 img/detail.png create mode 100644 img/famille.png create mode 100644 img/find.png create mode 100644 img/fleche.png create mode 100644 img/g rare.png create mode 100644 img/halogene.png create mode 100644 img/lanthan.png create mode 100644 img/maxi.png create mode 100644 img/metal-trans.png create mode 100644 img/metalloide.png create mode 100644 img/mini.png create mode 100644 img/n metal.png create mode 100644 img/post.png create mode 100644 img/select.jpg create mode 100644 include/periodiq.h create mode 100644 obj/periodiq.c.o create mode 100644 src/periodiq.c diff --git a/Makefile b/Makefile new file mode 100755 index 0000000..ab436ce --- /dev/null +++ b/Makefile @@ -0,0 +1,70 @@ +#!/usr/bin/make -f +# INCLUDE CONFIGURATION +include $(CURDIR)/Makefile.config + +# DEDUCED VARS +ALLOBJ = $(patsubst %,$(OBJDIR)/%.o,$(SRC)) +ALLINC = $(INC:%=$(INCDIR)/%) + +# RULES +## Make it all (default rule) +all: $(NAME).g1a + +## Make the object directory +$(OBJDIR): + mkdir -p $(OBJDIR) + +## Compile sprites +$(OBJDIR)/%.bmp.o: $(IMGDIR)/%.bmp + fxconv $< -o $@ -n $(patsubst %.bmp,img_%,$(notdir $<)) + +## Compile fonts +$(OBJDIR)/%.bmp.o: $(FONTDIR)/%.bmp + fxconv $< -o $@ -n $(patsubst %.bmp,font_%,$(notdir $<)) + +## Make an object file out of an ASM source file +$(OBJDIR)/%.s.o: $(SRCDIR)/%.s + $(AS) -c -o $@ $< + +## Make an object file out of a C source file +$(OBJDIR)/%.c.o: $(SRCDIR)/%.c $(ALLINC) + $(CC) -c -o $@ $< $(CFLAGS) + +## Make the ELF file +$(NAME).elf: $(OBJDIR) $(ALLOBJ) + $(LD) -o $@ $(ALLOBJ) $(LFLAGS) + +## Make the BIN file +$(NAME).bin: $(NAME).elf + $(OBJCPY) -R .comment -R .bss -R '$$iop' -O binary $< $@ + +## Make the G1A file +$(NAME).g1a: $(NAME).bin + $(WRAPR) $< -o $(NAME).g1a -i $(ICON) + @stat -c "Build finished -- output size is %s bytes." $(NAME).g1a + +## Clean up your mess +clean: + $(RM) $(OBJDIR) + $(RM) $(NAME).elf + $(RM) $(NAME).bin + +## Clean up everything +fclean: clean + $(RM) $(NAME).g1a + $(RM) $(NAME).txt + +dump: + $(OBJDUMP) -d $(NAME).elf > $(NAME).txt + @stat -c "Dump file -- dump file put in %n ." $(NAME).txt + +## Remake +re: fclean all + +## Send to calc +send: + $(SENDR) send $(NAME).g1a -f + +## Phuneral phuture ? +.PHONY: all clean fclean dump re send +# END OF FILE diff --git a/Makefile.config b/Makefile.config new file mode 100755 index 0000000..9d50496 --- /dev/null +++ b/Makefile.config @@ -0,0 +1,50 @@ +#!/usr/bin/make -f +# PROJECT INFORMATION +NAME = periodiq +ICON = misc/icon.bmp +LIB = gcc + +## DIRECTORIES +SRCDIR = ./src +INCDIR = ./include +OBJDIR = ./obj +LIBDIR = ./lib +SCPTDIR = ./scripts +IMGDIR = ./img +FONTDIR = ./font + +# TOOLCHAIN +## Directory maker +MD = mkdir -p +## File remover +RM = rm -f -r +## Assembler +AS = sh3eb-elf-as +## C compiler +CC = sh3eb-elf-gcc +CFLAGS = -m3 -mb -Os -nostdlib -Wall -Wextra -Wno-main -pedantic -std=c11 -I $(INCDIR) `fxsdk --cflags` +## Linker +LD = sh3eb-elf-gcc +LFLAGS = `fxsdk --cflags` `fxsdk --libs` +## Object copier +OBJCPY = sh3eb-elf-objcopy +## Object dump +OBJDUMP = sh3eb-elf-objdump +## G1A Wrapper +WRAPR = g1a-wrapper +## Sender +SENDR = p7 + +# SOURCES +SRC = $(notdir $(wildcard $(SRCDIR)/*.[cs])) + +# INCLUDES +INC = $(notdir $(wildcard $(INCDIR)/*.h)) + +# SPRITES +IMG = $(notdir $(wildcard $(IMGDIR)/*.bmp)) + +# FONTS +FONT = $(notdir $(wildcard $(FONTDIR)/*.bmp)) + +# END OF FILE diff --git a/font/modern.bmp b/font/modern.bmp new file mode 100644 index 0000000..e69de29 diff --git a/font/system.bmp b/font/system.bmp new file mode 100644 index 0000000..e69de29 diff --git a/img/Tableau.png b/img/Tableau.png new file mode 100644 index 0000000000000000000000000000000000000000..13eae05a55aac8b562d0c937c473ee6694362388 GIT binary patch literal 1378 zcmeAS@N?(olHy`uVBq!ia0vp^(Lij#!3-olZ+|laQY`6?zK#qG8~eHcB(gFvFf#=B zgt!9585tP`1O)#7{|{u3g3%BdQ6aFeCU+Vz3ow)f`2_>Bz(@uR!Qa_cfsxNy;1OBO zz`%D9gc)~C%zg_LlqhkHC<)F_D=AMbN@XZW%*-p%%S$a$Fwry6GwyjdJpicYgr|#R zNQC>_$*08*D{!#pe*XVIW=CVk3>}^eQ#VU^U+|V&{`ScU*C4^!^LXFpbf=XURI*xr z=P`?oIyCp|t(%*5Y7#k-`B^WEH*MXVe)ZDxls+>e zvD|aRNNe`lhx_C&PMG^|-`V`ATKh#o6;6V7(Q3~WW_DG^CLZJx-6t=&Cg9<3!Gm0( z+h@mdnVkqf;b_DtnwAr>VZy)tDcpZVK*C~L?`Qw4J9l1S`BwSFlghJ~ifdPaa)PI; KpUXO@geCx*GL9es literal 0 HcmV?d00001 diff --git a/img/actane.png b/img/actane.png new file mode 100644 index 0000000000000000000000000000000000000000..113d2b4d2f286b08974de1df224762248fa61fc6 GIT binary patch literal 961 zcmeAS@N?(olHy`uVBq!ia0vp^qCm{S!3-o78(kg(DVB6cUq=Rpjs4tz5?L7-m>B|m zLR^93|Ns97lA~ZW1V&&8q?f%(26~&bz$3Dlfr0M;2s36~>*NFqN|d-plmzFem6RtI zr7{#GX6BXX<)xM=nCKbk8TUM!9spEh?CIhdA`zb2#mL2Az`^wT|NOY!Q<`+1YB|m zLR^93|Ns97lA~ZW1V&&8q?f%(26~&bz$3Dlfr0M;2s36~>*NFqN|d-plmzFem6RtI zr7{#GX6BXX<)xM=nCKbk8TUM!9spEh>gnPbA`zb2?I^^cz`^wO|9rogH8WfI4n*ms zp8U9qEsWJx@{^X}g{fC_uYKD!)$xzfFVRW{L0tx8kITu%Km!;&UHx3vIVCg!0Ix|q A{Qv*} literal 0 HcmV?d00001 diff --git a/img/alkalino.png b/img/alkalino.png new file mode 100644 index 0000000000000000000000000000000000000000..06b1fbe609bb43faf50d738089e7716868d8f309 GIT binary patch literal 963 zcmeAS@N?(olHy`uVBq!ia0vp^qCm{S!3-o78(kg(DVB6cUq=Rpjs4tz5?L7-m>B|m zLR^93|Ns97lA~ZW1V&&8q?f%(26~&bz$3Dlfr0M;2s36~>*NFqN|d-plmzFem6RtI zr7{#GX6BXX<)xM=nCKbk8TUM!9spEh>gnPbA`zb3)yd0Xz`<1df9cW5YQ7>L89Q4= zYW^Ll4e@-WP;fQp(z?X{ZKV_KH*a3BUwR^|Fb{)8&-VGpfd(*my85}Sb4q9e0Mn^G AX#fBK literal 0 HcmV?d00001 diff --git a/img/detail.png b/img/detail.png new file mode 100644 index 0000000000000000000000000000000000000000..03fc08f2cb3539aeda71c17cbc7b5713f4ee0852 GIT binary patch literal 962 zcmeAS@N?(olHy`uVBq!ia0vp^qCm{S!3-o78(kg(DVB6cUq=Rpjs4tz5?L7-m>B|m zLR^93|Ns97lA~ZW1V&&8q?f%(26~&bz$3Dlfr0NJ2s7@OnEe(gC{f}XQ4*Y=R#Ki= zl*&+$n3-3imzP?iV4`QBXWa8_dH_(3iKmNWh(vhu0frt2hEyfy2^tu#?+!6dc^1u6{1-oD!MB|m zLR^93|Ns97lA~ZW1V&&8q?f%(26~&bz$3Dlfr0M;2s36~>*NFqN|d-plmzFem6RtI zr7{#GX6BXX<)xM=nCKbk8TUM!9spEh;_2cTA`zb3$;icEz`^wT|NMF4s*b@EPe0O7 y)e5?^?3z-G)|@!Q%o+Z&annyW#0u7k{A7^yVQ}RaRdfgHXYh3Ob6Mw<&;$Sn#5fTE literal 0 HcmV?d00001 diff --git a/img/find.png b/img/find.png new file mode 100644 index 0000000000000000000000000000000000000000..dd2861ba017e520e08fc57cc6512bbf11cbbfcfb GIT binary patch literal 952 zcmeAS@N?(olHy`uVBq!ia0vp^qCm{S!3-o78(kg(DVB6cUq=Rpjs4tz5?L7-m>B|m zLR^93|Ns97lA~ZW1V&&8q?f%(26~&bz$3Dlfr0NJ2s7@OnEe(gC{f}XQ4*Y=R#Ki= zl*&+$n3-3imzP?iV4`QBXWa8_dH_(3mZytjh(vgD1B06eFH4UDgW5tH4Mss$?nZ$* m4M`z^9L+I-68ypj222bh(;3VvU#2Ytg|erspUXO@geCx9E-=9W literal 0 HcmV?d00001 diff --git a/img/fleche.png b/img/fleche.png new file mode 100644 index 0000000000000000000000000000000000000000..c005124097a8d6844f49f425dcaa4ad92fd89414 GIT binary patch literal 962 zcmeAS@N?(olHy`uVBq!ia0vp^qCm{S!3-o78(kg(DaPU;cPEB*=VV?2IV|apzK#qG z8~eHcB(gFvFf#=Bgt!95|Ns9FBuBw$2#mlGNH2Sn4D>cmdKI;Vst0Qo^QfB*mh literal 0 HcmV?d00001 diff --git a/img/g rare.png b/img/g rare.png new file mode 100644 index 0000000000000000000000000000000000000000..a41f100f16b89cdd7df67534773a08d8ff8358ed GIT binary patch literal 962 zcmeAS@N?(olHy`uVBq!ia0vp^qCm{S!3-o78(kg(DVB6cUq=Rpjs4tz5?L7-m>B|m zLR^93|Ns97lA~ZW1V&&8q?f%(26~&bz$3Dlfr0M;2s36~>*NFqN|d-plmzFem6RtI zr7{#GX6BXX<)xM=nCKbk8TUM!9spEh;_2cTA`zb2&B(`Kz{33V|MKnGoSj@NwF{@j yr*3zddV{x-aoL{CN#Wmn=e>zk&@SzabF~v*&R`Yfxbh-UKZB>MpUXO@geCw_bvqgW literal 0 HcmV?d00001 diff --git a/img/halogene.png b/img/halogene.png new file mode 100644 index 0000000000000000000000000000000000000000..49440b094aedf558ef08028fdf9b026b76e19b48 GIT binary patch literal 957 zcmeAS@N?(olHy`uVBq!ia0vp^qCm{S!3-o78(kg(DVB6cUq=Rpjs4tz5?L7-m>B|m zLR^93|Ns97lA~ZW1V&&8q?f%(26~&bz$3Dlfr0M;2s36~>*NFqN|d-plmzFem6RtI zr7{#GX6BXX<)xM=nCKbk8TUM!9spFM@9E+gA`zZ^fT72MAytWaf(D0@KmbS2Ma2kH s7u!iXAtKC+I+{2-b|$c~B_yyg2&Xbw&CC)H1ZrjQboFyt=akR{07X$UVgLXD literal 0 HcmV?d00001 diff --git a/img/lanthan.png b/img/lanthan.png new file mode 100644 index 0000000000000000000000000000000000000000..857e876df499db2dfe4bc578122600e0ae888343 GIT binary patch literal 960 zcmeAS@N?(olHy`uVBq!ia0vp^qCm{S!3-o78(kg(DVB6cUq=Rpjs4tz5?L7-m>B|m zLR^93|Ns97lA~ZW1V&&8q?f%(26~&bz$3Dlfr0M;2s36~>*NFqN|d-plmzFem6RtI zr7{#GX6BXX<)xM=nCKbk8TUM!9spEhxoAtT3Yyup9A6dnvqTf(j+FWk&vC1P?!5vZHN)78&qol`;+01opyWB>pF literal 0 HcmV?d00001 diff --git a/img/maxi.png b/img/maxi.png new file mode 100644 index 0000000000000000000000000000000000000000..30c21d7c93b615ac5b9d1137712e53794f121adf GIT binary patch literal 962 zcmeAS@N?(olHy`uVBq!ia0vp^qCm{S!3-o78(kg(DVB6cUq=Rpjs4tz5?L7-m>B|m zLR^93|Ns97lA~ZW1V&&8q?f%(26~&bz$3Dlfr0N32s4Umcr^e8B}!Z)N`mv#O3D+9 zQW**oGxJLH@={9_O!N%&jC-C<4*;q$@pN$vkqFQ2a^z!B;5hu?|NOGqPZJ7euvup< y6%9O`+%K9D^F->ks!^-1amCvI(~sSM7a}ie!eDvK<832QKZB>MpUXO@geCw#6+9aN literal 0 HcmV?d00001 diff --git a/img/metal-trans.png b/img/metal-trans.png new file mode 100644 index 0000000000000000000000000000000000000000..f6c24473a58bc8e1f2d0af2227bffffc9610d881 GIT binary patch literal 961 zcmeAS@N?(olHy`uVBq!ia0vp^qCm{S!3-o78(kg(DVB6cUq=Rpjs4tz5?L7-m>B|m zLR^93|Ns97lA~ZW1V&&8q?f%(26~&bz$3Dlfr0M;2s36~>*NFqN|d-plmzFem6RtI zr7{#GX6BXX<)xM=nCKbk8TUM!9spEh?CIhdA`zb2#mL2Az`^wS|NOWpPaW?Ihb^2| yJ)WjfQ4>97;$)-K7uN6U%~rT}(e!cP14hv`40bm-KTHK`XYh3Ob6Mw<&;$TaD?ID~ literal 0 HcmV?d00001 diff --git a/img/metalloide.png b/img/metalloide.png new file mode 100644 index 0000000000000000000000000000000000000000..b18eb35aa766b0604e6653404e5ef81e6f3492f8 GIT binary patch literal 960 zcmeAS@N?(olHy`uVBq!ia0vp^qCm{S!3-o78(kg(DVB6cUq=Rpjs4tz5?L7-m>B|m zLR^93|Ns97lA~ZW1V&&8q?f%(26~&bz$3Dlfr0M;2s36~>*NFqN|d-plmzFem6RtI zr7{#GX6BXX<)xM=nCKbk8TUM!9spEhB|m zLR^93|Ns97lA~ZW1V&&8q?f%(26~&bz$3Dlfr0N32s4Umcr^e8B}!Z)N`mv#O3D+9 zQW**oGxJLH@={9_O!N%&jC-C<4*;ss@pN$vkqA$2V04o>$-xq!*TGPDAZLRH%VC8G piH?a!6;2&olrW1a(C5Gb4hB(92J^Z-eUU(Y44$rjF6*2UngGpYG>HHJ literal 0 HcmV?d00001 diff --git a/img/n metal.png b/img/n metal.png new file mode 100644 index 0000000000000000000000000000000000000000..b8f6c684e2aff6fd7393a9bda64515d56d459462 GIT binary patch literal 961 zcmeAS@N?(olHy`uVBq!ia0vp^qCm{S!3-o78(kg(DVB6cUq=Rpjs4tz5?L7-m>B|m zLR^93|Ns97lA~ZW1V&&8q?f%(26~&bz$3Dlfr0M;2s36~>*NFqN|d-plmzFem6RtI zr7{#GX6BXX<)xM=nCKbk8TUM!9spEh?CIhdA`zb3<;cfiz;Woy|M~MuW=zP5@w!-b xN%(qC7$37}jPYSDCDRHQ-fP{dN?#|xViuKPu)Cab>jqFegQu&X%Q~loCIC2^J1PJG literal 0 HcmV?d00001 diff --git a/img/post.png b/img/post.png new file mode 100644 index 0000000000000000000000000000000000000000..7f1911fa4ed256196228414301190918a23ff543 GIT binary patch literal 961 zcmeAS@N?(olHy`uVBq!ia0vp^qCm{S!3-o78(kg(DVB6cUq=Rpjs4tz5?L7-m>B|m zLR^93|Ns97lA~ZW1V&&8q?f%(26~&bz$3Dlfr0M;2s36~>*NFqN|d-plmzFem6RtI zr7{#GX6BXX<)xM=nCKbk8TUM!9spEh?CIhdA`zb2#mUFuz{33V|MFb^utk$rU9>o* yeq1+broJ!(Z@m42M}gBDSM$GFmi&2NmyR$igXzvwr89uq89ZJ6T-G@yGywn*=Q`{F literal 0 HcmV?d00001 diff --git a/img/select.jpg b/img/select.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2a0da0edde684e4a334bea419d939bfe705be13e GIT binary patch literal 805 zcmex=20@@F8CaMZl^B==8JPtc{~uwH2fCdV7%HHEfdWP*W)@a9pp&?` zfeN+?0G-dw%mj2SD+>!ybuCbyfklv2NYT)dO*k--U8zvSsBz*#4rQl}2StM}eo!$^ zDr(~75)+q@lu}hw*U;25F*P%{u(Wb^admU|@bn4}2@MO6h>S{3Nli=7$jmA(DJ?6n zsH|#kX>Duo=vZp zgZ#zFR1U<5-{Ab9r=R5l0^@H^8J+U8*AN*%HqAyhA z^rQao>gwuM{~7W!>yv(~?OgrhVs!M;C9lE)xeNKGi*(9#{Bxg^`}T~O*|)H;r6K|B H|8D{SB+K#V literal 0 HcmV?d00001 diff --git a/include/periodiq.h b/include/periodiq.h new file mode 100644 index 0000000..740f92f --- /dev/null +++ b/include/periodiq.h @@ -0,0 +1,45 @@ +#ifndef _PERIODIQ_H + #define _PERIODIQ_H + + + unsigned int key; + + struct Element + { + unsigned char nom[14]; // le nom + unsigned char symbol[4]; // le symbole + float masse_mol; // la masse molaire // que l'on divise par 1000 + unsigned char config_electro [18]; // la config électronique + unsigned int groupe : 3; //le groupe //x + unsigned int periode : 5; // la période // y + unsigned char valence; // le nombre de valence + float electro_neg; // electro negativité + unsigned char dessus; // element au dessus de celui actuel + unsigned char dessous; // element en dessous de celui actuel +}; + +//1 : 1 +//11 : 3 +//111 : 7 +//1111 : 15 +//11111 : 31 +//111111 : 63 +//1111111 : 127 +//11111111 : 255 + +struct Detail +{ + short annee ; + unsigned int famille : 4; + unsigned int etat : 4; +}; + +int detailsElement(int); //chang //a +int tableauElement(int); //chang +int tableauEleMini(int); //chang +int find(int); // int : pour le return +void choix_famille(int); +void Mini(char* c, int n); +void calcul_mole(void); + +#endif diff --git a/obj/periodiq.c.o b/obj/periodiq.c.o new file mode 100644 index 0000000000000000000000000000000000000000..74a16bb8bf242f94de1977dc2b0dd2bb35a51b02 GIT binary patch literal 12224 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 TfDm*Hh~(40s}vF*w%-2&&!&B& literal 0 HcmV?d00001 diff --git a/src/periodiq.c b/src/periodiq.c new file mode 100644 index 0000000..1f9654e --- /dev/null +++ b/src/periodiq.c @@ -0,0 +1,855 @@ +/*****************************************************************/ +/* */ +/* CASIO fx-9860G SDK Library */ +/* */ +/* File name : [ProjectName].c */ +/* */ +/* Copyright (c) 2006 CASIO COMPUTER CO., LTD. */ +/* */ +/*****************************************************************/ +#include "periodiq.h" + +#include "display.h" +#include "stdlib.h" +#include "stdio.h" +#include "ctype.h" +#include "keyboard.h" + + +//#include +//#include + +int atoi(const char *str) +{ + // Variables declaration. + int n=0, sign=1; + + // Parsing string until the first glyph. + while(isspace(*str)) str++; + + // Checking sign. + if(*str=='-') sign=-1, str++; + else if(*str=='+') sign=+1, str++; + + // Reading digits. + while(isdigit(*str)) + { + n += *str - '0'; + if(*++str) n *= 10; + } + + // Returning the final value. + return n*sign; +} + +//**************************************************************************** +// AddIn_main (Sample program main function) +// +// param : isAppli : 1 = This application is launched by MAIN MENU. +// : 0 = This application is launched by a strip in eACT application. +// +// OptionNum : Strip number (0~3) +// (This parameter is only used when isAppli parameter is 0.) +// +// retval : 1 = No error / 0 = Error +// +//**************************************************************************** + +struct Element elements[] = +{ + { /*1, */"Hydrogene","H",1.008,"1",1,1,1,2.20,0,2}, + { /*2, */"Helium","He",4.003,"2",18,1,0,0,1,9}, + { /*3, */"Lithium","Li",6.940,"2-1",1,2,1,0,0,10}, + { /*4, */"Beryllium","Be",9.012,"2-2",2,2,2,1.57,0,11}, + { /*5, */"Bore","B",10.810,"2-3",13,2,2,2.04,1,12}, + { /*6, */"Carbone","C",12.011,"2-4",14,2,3,2.55,1,13}, + { /*7, */"Azote","N",14.007,"2-5",15,2,4,3.04,1,14}, + { /*8, */"Oxygene","O",15.999,"2-6",16,2,5,3.44,1,15}, + { /*9, */"Fluor","F",18.998,"2-7",17,2,2,3.98,1,16}, + {/*10, */"Neon","Ne",20.178,"2-8",18,2,0,0,1,17}, + {/*11, */"Sodium","Na",22.990,"2-8-1",1,3,1,0.93,2,18}, + {/*12, */"Magnesium","Mg",24.305,"2-8-2",2,3,2,1.31,3,19}, + {/*13, */"Aluminium","Al",26.982,"2-8-3",13,3,3,1.61,4,30}, + {/*14, */"Silicium","Si",28.085,"2-8-4",14,3,4,1.90,5,31}, + {/*15, */"Phosphore","P",30.974,"2-8-5",15,3,5,2.19,6,32}, + {/*16, */"Soufre","S",32.060,"2-8-6",16,3,6,2.58,7,33}, + {/*17, */"Chlore","Cl",35.450,"2-8-7",17,3,7,3.16,8,34}, + {/*18, */"Argon","Ar",39.948,"2-8-8",18,3,2,0,9,35}, + {/*19, */"Potassium","K",39.098,"2-8-8-1",1,4,1,0.82,10,36}, + {/*20, */"Calcium","Ca",40.078,"2-8-8-2",2,4,2,1.0,11,37}, + {/*21, */"Scandium","Sc",44.956,"2-8-9-2",3,4,3,1.36,20,38}, + {/*22, */"Titane","Ti",47.867,"2-8-10-2",4,4,4,1.54,21,39}, + {/*23, */"Vanadium","Va",50.941,"2-8-11-2",5,4,5,1.63,22,40}, + {/*24, */"Chrome","Cr",51.996,"2-8-13-1",6,4,6,1.66,23,41}, + {/*25, */"Manganese","Mn",54.380,"2-8-13-2",7,4,7,1.55,24,42}, + {/*26, */"Fer","Fe",55.845,"2-8-14-2",8,4,6,1.83,25,43}, + {/*27, */"Cobalt","Co",58.933,"2-8-15-2",9,4,5,1.88,26,44}, + {/*28, */"Nickel","Ni",58.693,"2-8-16-2",10,4,4,1.91,27,45}, + {/*29, */"Cuivre","Cu",63.546,"2-8-18-1",11,4,4,1.90,28,46}, + {/*30, */"Zinc","Zn",65.380,"2-8-18-2",12,4,2,1.65,29,47}, + {/*31, */"Gallium","Ga",69.723,"2-8-18-3",13,4,3,1.81,12,48}, + {/*32, */"Germanium","Gr",72.630,"2-8-18-4",14,4,4,2.01,13,49}, + {/*33, */"Arsenic","As",74.921,"2-8-18-5",15,4,5,2.18,14,50}, + {/*34, */"Selenium","Se",78.971,"2-8-18-6",16,4,6,2.55,15,51}, + {/*35, */"Brome","Br",79.904,"2-8-18-7",17,4,7,2.96,16,52}, + {/*36, */"Krypton","Kr",83.798,"2-8-18-8",18,4,2,3.00,17,53}, + {/*37, */"Rubidium","Rb",85.468,"2-8-18-8-1",1,5,1,0.82,18,54}, + {/*38, */"Strontium","Sr",87.620,"2-8-18-8-2",2,5,2,0.95,19,55}, + {/*39, */"Yttrium","Y",88.906,"2-8-18-9-2",3,5,3,1.22,20,56}, + {/*40, */"Zirconium","Zr",91.224,"2-8-18-10-2",4,5,4,1.33,21,71}, + {/*41, */"Niobium","Nb",92.906,"2-8-18-12-1",5,5,5,1.6,22,72}, + {/*42, */"Molybdene","Mo",95.950,"2-8-18-13-1",6,5,6,2.16,23,73}, + {/*43, */"Technetium","Tc",98.000,"2-8-18-13-2",7,5,7,1.9,24,74}, + {/*44, */"Ruthenium","Ru",101.070,"2-8-18-15-1",8,5,8,2.2,25,75}, + {/*45, */"Rhodium","Rh",102.906,"2-8-18-16-1",9,5,6,2.28,26,76}, + {/*46, */"Palladium","Pd",106.420,"2-8-18-18",10,5,4,2.20,27,77}, + {/*47, */"Argent","Ag",107.869,"2-8-18-18-1",11,5,4,1.93,28,78}, + {/*48, */"Cadmium","Cd",112.414,"2-8-18-18-2",12,5,2,1.69,29,79}, + {/*49, */"Indium","In",114.818,"2-8-18-18-3",13,5,3,1.78,30,80}, + {/*50, */"Etain","Sn",118.710,"2-8-18-18-4",14,5,4,1.96,31,81}, + {/*51, */"Antimoine","Sb",121.760,"2-8-18-18-5",15,5,5,2.05,32,82}, + {/*52, */"Tellure","Te",127.600,"2-8-18-18-6",16,5,6,2.55,33,83}, + {/*53, */"Iode","I",126.904,"2-8-18-18-7",17,5,7,2.66,34,84}, + {/*54, */"Xenon","Xe",130.293,"2-8-18-18-8",18,5,8,2.6,35,85}, + {/*55, */"Cesium","Cs",132.905,"2-8-18-18-8-1",1,6,1,0.79,36,86}, + {/*56, */"Baryum","Ba",137.327,"2-8-18-18-8-2",2,6,2,0.89,37,87}, + {/*57, */"Lanthane","La",138.910,"2-8-18-18-9-2",4,6,3,1.10,103,88}, // lanthanides + {/*58, */"Cerium","Ce",140.116,"2-8-18-19-9-2",5,6,4,1.12,104,89}, + {/*59, */"Praseodyme","Pr",140.907,"2-8-18-21-8-2",6,6,4,1.13,105,90}, + {/*60, */"Neodyme","Nd",144.242,"2-8-18-22-8-2",7,6,3,1.14,106,91}, + {/*61, */"Promethium","Pm",145.000,"2-8-18-23-8-2",8,6,3,0,107,92}, + {/*62, */"Samarium","Sm",150.360,"2-8-18-24-8-2",9,6,3,1.17,108,93}, + {/*63, */"Europium","Eu",151.964,"2-8-18-25-8-2",10,6,3,0,109,94}, + {/*64, */"Gadolinium","Gd",157.250,"2-8-18-25-9-2",11,6,3,1.20,110,95}, + {/*65, */"Terbium","Tb",158.925,"2-8-18-27-8-2",12,6,4,0,111,96}, + {/*66, */"Dysprosium","Dy",162.500,"2-8-18-28-8-2",13,6,3,1.22,112,97}, + {/*67, */"Holmium","Ho",164.930,"2-8-18-29-8-2",14,6,3,1.23,113,98}, + {/*68, */"Erbium","Er",167.259,"2-8-18-30-8-2",15,6,3,1.24,114,99}, + {/*69, */"Thulium","Tm",168.934,"2-8-18-31-8-2",16,6,3,1.25,115,100}, + {/*70, */"Yttrebium","Yb",173.054,"2-8-18-32-8-2",17,6,3,0,116,101}, + {/*71, */"Lutecium","Lu",174.967,"2-8-18-32-9-2",18,6,3,1.27,117,102},//fin des lanthanides + {/*72, */"Hafnium","Hf",178.490,"2-8-18-32-10-2",4,6,4,1.3,39,103}, + {/*73, */"Tantale","Ta",180.948,"2-8-18-32-11-2",5,6,5,1.5,40,104}, + {/*74, */"Tungstene","W",183.840,"2-8-18-32-12-2",6,6,6,2.36,41,105}, + {/*75, */"Rhenium","Re",186.207,"2-8-18-32-13-2",7,6,7,1.9,42,106}, + {/*76, */"Osmium","Os",190.230,"2-8-18-32-14-2",8,6,8,2.2,43,107}, + {/*77, */"Iridium","Ir",192.217,"2-8-18-32-15-2",9,6,8,2.20,44,108}, + {/*78, */"Platine","Pt",195.084,"2-8-18-32-17-1",10,6,6,2.28,45,109}, + {/*79, */"Or","Au",196.967,"2-8-18-32-18-1",11,6,5,2.54,46,110}, + {/*80, */"Mercure","Hg",200.590,"2-8-18-32-18-2",12,6,4,2.0,47,111}, + {/*81, */"Thallium","Tl",204.380,"2-8-18-32-18-3",13,6,3,1.62,48,112}, + {/*82, */"Plomb","Pb",207.200,"2-8-18-32-18-4",14,6,4,2.33,49,113}, + {/*83, */"Bismuth","Bi",208.980,"2-8-18-32-18-5",15,6,5,2.02,50,114}, + {/*84, */"Polonium","Po",209.000,"2-8-18-32-18-6",16,6,6,2.0,51,115}, + {/*85, */"Astate","At",210.000,"2-8-18-32-18-7",17,6,7,2.2,52,116}, + {/*86, */"Radon","Rn",212.000,"2-8-18-32-18-8",18,6,6,0,53,117}, + {/*87, */"Francium","Fr",223.000,"2-8-18-32-18-8-1",1,7,1,0.7,54,86}, + {/*88, */"Radium","Ra",226.000,"2-8-18-32-18-8-2",2,7,2,0.9,55,87}, + {/*89, */"Actinium","Ac",227.000,"2-8-18-32-18-9-2",4,7,3,1.1,56,88}, // actinide + {/*90, */"Thorium","Th",232.038,"2-8-18-32-18-10-2",5,7,4,1.3,57,89}, + {/*91, */"Protactinium","Pa",231.036,"2-8-18-32-20-9-2",6,7,5,1.5,58,90}, + {/*92, */"Uranium","U",238.029,"2-8-18-32-21-9-2",7,7,6,1.38,59,91}, + {/*93, */"Neptunium","Np",237.000,"2-8-18-32-22-9-2",8,7,7,1.36,60,92}, + {/*94, */"Plutonium","Pu",244.000,"2-8-18-32-24-8-2",9,7,8,1.28,61,93}, + {/*95, */"Americum","Am",243.000,"2-8-18-32-25-8-2",10,7,6,1.3,62,94}, + {/*96, */"Curium","Cm",247.000,"2-8-18-32-25-9-2",11,7,4,1.3,63,95}, + {/*97, */"Berkelium","Bk",247.000,"2-8-18-32-27-8-2",12,7,4,1.3,64,96}, + {/*98, */"Californium","Cf",251.000,"2-8-18-32-28-8-2",13,7,4,1.3,65,97}, + {/*99, */"Einsteinium","Es",252.000,"2-8-18-32-29-8-2",14,7,3,1.3,66,98}, + {/*100,*/"Fermium","Fm",257.000,"2-8-18-32-30-8-2",15,7,3,1.3,67,99}, + {/*101,*/"Mendelevium","Md",258.000,"2-8-18-32-31-8-2",16,7,3,1.3,68,100}, + {/*102,*/"Nobelium","No",259.000,"2-8-18-32-32-8-2",17,7,3,1.3,69,101}, + {/*103,*/"Lawrencium","Lr",262.000,"2-8-18-32-32-8-3",18,7,3,0,70,102},// fin des actinides + {/*104,*/"Rutherfordium","Rf",267.000,"2-8-18-32-32-10-2",4,7,4,0,71,56}, + {/*105,*/"Dubnium","Db",268.000,"2-8-18-32-32-11-2",5,7,5,0,72,57}, + {/*106,*/"Seaborg","Sg",271.000,"2-8-18-32-32-12-2",6,7,6,0,73,58}, + {/*107,*/"Bohrium","Bh",272.000,"2-8-18-32-32-13-2",7,7,7,0,74,59}, + {/*108,*/"Hassium","Hs",270.000,"2-8-18-32-32-14-2",8,7,8,0,75,60}, + {/*109,*/"Meitnerium","Mt",276.000,"2-8-18-32-32-15-2",9,7,-1,0,76,61}, // -1 corespond à "inconnu" + {/*110,*/"Darmstadium","Ds",281.000,"2-8-18-32-32-17-1",10,7,-1,0,77,62}, + {/*111,*/"Roengenium","Rg",280.000,"2-8-18-32-32-18-1",11,7,-1,0,78,63}, + {/*112,*/"Copernicium","Cn",285.000,"2-8-18-32-32-18-2",12,7,-1,0,79,64}, + {/*113,*/"Ununtrium","Uut",284.000,"2-8-18-32-32-18-3",13,7,-1,0,80,65}, + {/*114,*/"Flerovium","Fl",289.000,"2-8-18-32-32-18-4",14,7,-1,0,81,66}, + {/*115,*/"Ununpentium","Uup",288.000,"2-8-18-32-32-18-5",15,7,-1,0,82,67}, + {/*116,*/"Livermorium","Lv",288.000,"2-8-18-32-32-18-6",16,7,-1,0,83,68}, + {/*117,*/"Ununseptium","Uus",294.000,"2-8-18-32-32-18-7",17,7,-1,0,84,69}, + {/*118,*/"Ununoctium","Uun",294.000,"2-8-18-32-32-18-8",18,7,-1,0,85,70} +}; + +struct Detail ajout[] = { +{1766,0,1}, +{1895,2,1}, +{1817,4,0}, +{1797,5,0}, +{1808,3,0}, +{-3750,0,0}, +{1772,0,1}, +{1774,0,1}, +{1886,1,1}, +{1898,2,1},//10 +{1807,4,0}, +{1755,5,0}, +{1825,9,0}, +{1824,3,0}, +{1669,0,0}, +{-500,0,0}, +{1774,1,1}, +{1894,2,1}, +{1807,4,0}, +{1808,5,0},//20 +{1879,8,0}, +{1791,8,0}, +{1801,8,0}, +{1797,8,0}, +{1774,8,0}, +{-2000,8,0}, +{1735,8,0}, +{1751,8,0}, +{-8000,8,0}, +{1500,8,0},//30 +{1875,9,0}, +{1886,3,0}, +{1250,3,0}, +{1817,0,0}, +{1826,1,2}, +{1898,2,1}, +{1861,4,0}, +{1790,5,0}, +{1794,8,0}, +{1789,8,0},//40 +{1801,8,0}, +{1781,8,0}, +{1937,8,0}, +{1844,8,0}, +{1803,8,0}, +{1803,8,0}, +{-3000,8,0}, +{1817,8,0}, +{1863,9,0}, +{-3000,9,0},//50 +{-3000,3,0}, +{1783,3,0}, +{1811,1,0}, +{1898,2,1}, +{1860,4,0}, +{1808,5,0}, +{1839,6,0}, +{1803,6,0}, +{1885,6,0}, +{1885,6,0},//60 +{1945,6,0}, +{1879,6,0}, +{1901,6,0}, +{1880,6,0}, +{1843,6,0}, +{1886,6,0}, +{1878,6,0}, +{1842,6,0}, +{1879,6,0}, +{1878,6,0},//70 +{1907,6,0}, +{1923,8,0}, +{1802,8,0}, +{1783,8,0}, +{1925,8,0}, +{1803,8,0}, +{1803,8,0}, +{1735,8,0}, +{-2500,8,0}, +{-1500,8,2},//80 +{1861,9,0}, +{-4000,9,0}, +{1400,9,0}, +{1898,3,0}, +{1940,1,0}, +{1900,2,1}, +{1939,4,0}, +{1898,5,0}, +{1899,7,0}, +{1829,7,0},//90 +{1913,7,0}, +{1789,7,0}, +{1940,7,0}, +{1940,7,0}, +{1944,7,0}, +{1944,7,0}, +{1949,7,0}, +{1950,7,0}, +{1952,7,0}, +{1950,7,0},//100 +{1955,7,0}, +{1958,7,0}, +{1961,7,0}, +{1964,8,3}, +{1967,8,3}, +{1974,8,3}, +{1981,8,3}, +{1984,8,3}, +{1982,8,3}, +{1994,8,3},//110 +{1994,8,3}, +{1996,8,3}, +{2004,9,3}, +{1998,9,3}, +{2004,9,3}, +{2000,9,3}, +{2010,1,3}, +{2006,2,3} +}; + +char *family[25] ={ +{"non metaux"},//0 +{"halogene"},//1 +{"gaz rare"},//2 +{"metalloide"},//3 +{"metal alcalin"},//4 +{"metal alcalino terreux"},//5 +{"lanthanide"},//6 +{"actinide"},//7 +{"metal de transition"},//8 +{"post transition metal"}//9 +}; + +char *etat[9]={ + {"solide"},//0 + {"gaz"},//1 + {"liquide"},//2 + {"inconnu"},//3 +}; + +extern Font font_modern; + +//text_configure(font_modern, color_black); + +int main() +{ +tableauElement(0); + return 1; +} + + +void Mini(char* chaine, int n ) // fonc defini le numero de la fonction +{ + + short j; + + drect(n*21+2, 56, n*21+20, 63, color_black); + + dtext(n*21+strlen(chaine), 58, chaine); + //ML_display_vram(); +} + +int tableauElement(int chang) +{ + + short decalx=0,decaly=0; + short x,y; + short i; + + + + while(1) + { + dclear(); + + chang=(chang>=118 ? 0 : chang<=-1 ? 117 : chang); + + decalx=-(((12*elements[chang].groupe)-13)*108)/240; // on fait un decalage lorsque l'on bouge + decaly=(elements[chang].periode==5 ? -7 : elements[chang].periode>5 ? -14 : 0); + + for(i=0;i<118;i++) + { + x=elements[i].groupe; + y=(i>55 && i<71 ? 9 : i>87 && i<103 ? 10 : elements[i].periode); + + + dtext(12*x+decalx-12,7*y+decaly-6,elements[i].symbol); + + dtext(12*3-11+decalx,7*6-7+decaly,"1"); + dtext(12*3-11+decalx,7*7-7+decaly,"2"); + + dtext(12*3-11+decalx,7*9+decaly-5,"1"); + dtext(12*3-11+decalx,7*10+decaly-5,"2"); + } + + if (chang>55 && chang<71) + { + drect(12*elements[chang].groupe-13+decalx,7*9-7+decaly,12*elements[chang].groupe-1+decalx,7*9+decaly,color_black); + } + else if (chang>87 && chang<103) + { + drect(12*elements[chang].groupe-13+decalx,7*10-7+decaly,12*elements[chang].groupe-1+decalx,7*10+decaly,color_black); + } + else + { + drect(12*elements[chang].groupe-13+decalx,7*elements[chang].periode-7+decaly,12*elements[chang].groupe+decalx,7*elements[chang].periode+decaly,color_black); + } + + drect(0,56,128,64,color_white); // on fait un rectangle blanc pour qu'il n'y ait rien + + Mini("mini",0); + Mini("find",1); + Mini("mol",2); + + Mini("det",5); + + key=getkey(); + + switch(key) + { + case KEY_LEFT : chang+=1; break; + case KEY_RIGHT : chang-=1; break; + case KEY_DOWN : chang=elements[chang].dessous; break; + case KEY_UP : chang=elements[chang].dessus; break; + + case KEY_F4 : chang=tableauEleMini(chang); break; + case KEY_F2 : chang=find(chang); break; + case KEY_F3 : calcul_mole(); break; + + case KEY_F6 : case KEY_EXE : chang=detailsElement(chang); break; + + case KEY_EXIT : return; + } + } +} + +int tableauEleMini(int chang) +{ +char buffer[50]; +char y; +char menu=0; +char choix=-1; + +while(1) + { + dclear(); + +// ML_bmp_or(TABLEAU_MINI,0,0,91,48); + choix_famille(choix); // on met en place le choix sur les familles + + chang=(chang>=118 ? 0 : chang<=-1 ? 117 : chang); + + y=(chang>55 && chang<71 ? 9 : chang>87 && chang<103 ? 10 : elements[chang].periode); + + if (chang>55 && chang<71 || chang>87 && chang<103) + { + drect(5*elements[chang].groupe-4,5*y-7,5*elements[chang].groupe-1,5*y-4,color_black); + } + else + { + drect(5*elements[chang].groupe-4,5*y-4,5*elements[chang].groupe-1,5*y-1,color_black); + } + + + dtext(110-3*strlen(elements[chang].symbol),13,elements[chang].symbol); + + sprintf(buffer,"%d",chang+1); // détail des éléments sur la droite + dtext(110-2*strlen(buffer),5,buffer); + + sprintf(buffer,"%.3f",elements[chang].masse_mol); + dtext(110-2*strlen(buffer),23,buffer); + + + + if(menu==0) + { + + Mini("maxi",0); + Mini("find",1); + Mini("mol",2); + + Mini("fami",4); + Mini("det",5); + + key=getkey(); + + switch(key) + { + case KEY_F1 : case KEY_EXIT : return chang; + case KEY_F2 : chang=find(chang); break; + case KEY_F3 : calcul_mole(); break; + + case KEY_F5 : menu=1; break; + case KEY_F6 : chang=detailsElement(chang); break; + } + } + else if (menu==1) + { + Mini("n-me",0); + Mini("halo",1); + Mini("g-ra",2); + Mini("m-ti",3); + Mini("m-al",4); + Mini(" -->",5); + + key=getkey(); + + switch(key) + { + case KEY_EXIT : menu=0; choix=-1; break; + + case KEY_F1 : choix=0; break; + case KEY_F2 : choix=1; break; + case KEY_F3 : choix=2; break; + case KEY_F4 : choix=3; break; + case KEY_F5 : choix=4; break; + case KEY_F6 : menu=2; break; // on change dans les 2 menus + } + } + else if (menu==2) + { + Mini("m-at",0); + Mini("lant",1); + Mini("acta",2); + Mini("m-tr",3); + Mini("p-tr",4); + Mini(" -->",5); + + key=getkey(); + + switch(key) + { + case KEY_EXIT : menu=0; choix=-1;break; + + case KEY_F1 : choix=5; break; + case KEY_F2 : choix=6; break; + case KEY_F3 : choix=7; break; + case KEY_F4 : choix=8; break; + case KEY_F5 : choix=9; break; + case KEY_F6 : menu=1; break; // on change dans les 2 menus + + } + } + + switch(key) // pour les touches principales à chaque fois + { + case KEY_LEFT : chang+=1; break; + case KEY_RIGHT : chang-=1; break; + case KEY_DOWN : chang=elements[chang].dessous; break; + case KEY_UP : chang=elements[chang].dessus; break; + + case KEY_EXE : chang=detailsElement(chang); break; + + } + } +} + +void choix_famille(int choix) + { + /* +char i=0,y; + + for(i;i<118;++i) + { + if (choix==ajout[i].famille) + { + y=(i>55 && i<71 ? 9 : i>87 && i<103 ? 10 : elements[i].periode); + + (i>55 && i<71 || i>87 && i<103 ? ML_bmp_or(select,5*elements[i].groupe-4,5*y-7,4,4) : ML_bmp_or(select,5*elements[i].groupe-4,5*y-4,4,4)); + + ML_bmp_or(select,20,50,4,4); + dtext(30,50,family[choix]); + } + }*/ +} + +int detailsElement(int a) +{ + const char buffer[50]; + char descente=-9; + +while (1) + { + + dclear(); + + dprint(20,descente+13,elements[a].symbol,0); + sprintf(buffer,"%s",elements[a].nom); + dtext(40,descente+13,buffer); + + sprintf(buffer,"%d",a+1); // détail des éléments + dtext((10-a/25),descente+15,buffer); + + sprintf(buffer,"masse molaire %.3f g/mol",elements[a].masse_mol); + dtext(1,descente+23,buffer); + + dtext(20,descente+40,"propriete de base :"); // + + if (elements[a].groupe>=1) + { + sprintf(buffer,"groupe : %d ",elements[a].groupe); + dtext(1,descente+50,buffer); + } + + if ((a>55 && a<71) || (a>87 && a<103)) + dtext(1,descente+50,"pas de groupe"); + + sprintf(buffer,"periode : %d ",elements[a].periode); + dtext(1,descente+60,buffer); + + sprintf(buffer,"couch electro %s",elements[a].config_electro); + dtext(1,descente+70,buffer); + + sprintf(buffer,"famille %s",family[ajout[a].famille]); + dtext(1,descente+80,buffer); + + sprintf(buffer,"decouvert en %d",ajout[a].annee); + dtext(1,descente+90,buffer); + + sprintf(buffer,"etat a 293.15 K : %s",etat[ajout[a].etat]); + dtext(1,descente+100,buffer); + + dtext(20,descente+120,"reactivite :"); // + + if (elements[a].electro_neg==0) + { + dtext(1,descente+130,"electro neg inconnue"); + } + else + { + sprintf(buffer,"electro neg : %f ",elements[a].electro_neg); + dtext(1,descente+130,buffer); + } + + if (elements[a].valence>=0) + { + sprintf(buffer,"valence : %d ",elements[a].valence); + dtext(1,descente+140,buffer); + } + else + { + dtext(1,descente+140,"valence inconnue"); + } + + Mini("ret",5); + + key=getkey(); + + switch (key) + { + case KEY_RIGHT : a-=1,descente=-9; break; + case KEY_LEFT : a+=1,descente=-9; break; + case KEY_DOWN : descente-=4; break; + case KEY_UP : descente+=4; break; + case KEY_F6 : case KEY_EXE : case KEY_EXIT : return a; + } + + a=(a<0 ? 117 : a>117 ? 0 : a); + descente=(descente>-9 ? -9 : descente<-85 ? -85 : descente); // on fixe les limites de la page + } +} + +int find(chang) +{/* +char *numero=NULL; + +char i=0,j; + +const char buffer[50]; + +Bdisp_AllClr_DDVRAM(); +dtext(10,1,"Vous cherchez :"); +dtext(10,15,"1. numero de l'element"); +dtext(10,25,"2. masse molaire"); +dtext(10,35,"3. Symbole de l'element"); +dtext(10,45,"4. Nom de l'element"); + +while (1) + { + + EI_init(); + + EI_manage_config(EI_SET_COLUMN, 1); + EI_manage_config(EI_SET_ROW, 3); + EI_manage_config(EI_SET_START_MODE, EI_NORMAL); + + GetKey(&key); + + switch(key) + { + case 72 : + { + while(1) + { + Bdisp_AllClr_DDVRAM(); + dtext(1,1,"Vous cherchez l'element n :"); + + numero=EI_input_string(3,(const char*)"0123456789"); + // ça coupe ici + if (atoi(numero)>0 && atoi(numero)<119) // ça arrête le curseur + { + return atoi(numero)-1; + } + } + } + + case 62 : + { + while(1) + { + Bdisp_AllClr_DDVRAM(); + dtext(1,1,"Vous cherchez une masse"); + dtext(1,7,"molaire de :"); + + numero=EI_input_string(3,(const char*)"0123456789"); + + for (i=0;i<118;i++) + { + if (atoi(numero)==floor(elements[i].masse_mol+0.5)) + { + return i; + } + } + } + } + + case 52 : + { + while(1) + { + Bdisp_AllClr_DDVRAM(); + dtext(1,1,"Vous cherchez le symbole ?",0); + + EI_manage_config(EI_SET_START_MODE, EI_ALPHA_LOCKED); + + numero=EI_input_string(3,(const char*)"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"); + numero[0]=toupper (numero[0]); // on met le 1er caractère en majuscule + for (i=0;i<118;i++) + { + for (j = 1 ; numero[j] != '\0' ; j++) + { + numero[j] = tolower(numero[j]); // on met certains caractères en minuscule pour la recherche + } + + if (!strcmp(numero,elements[i].symbol)) + { + return i; + } + } + } + } + + case 73 : + { + while(1) + { + Bdisp_AllClr_DDVRAM(); + dtext(1,1,"Vous cherchez le nom ?",0); + + EI_manage_config(EI_SET_START_MODE, EI_ALPHA_LOCKED); + + numero=EI_input_string(13,(const char*)"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"); + numero[0]=toupper(numero[0]); // on met le 1er caractère en majuscule + for (i=0;i<118;i++) + { + for (j = 1 ; numero[j] != '\0' ; j++) + { + numero[j] = tolower(numero[j]);// on met certains caractères en minuscule pour la recherche + } + + if (!strcmp(numero,elements[i].nom)) + { + return i; + } + } + } + } + + case 47 : return chang; + + } + }*/ +} + +void calcul_mole() +{/* +char *str = NULL, *p=str; +char characts[20]={'\0'}; +char i=0; +float result=0, masse; +const char buffer[50]={0}; +char cap; + +while(1) +{ +Bdisp_AllClr_DDVRAM(); + +dtext(1,1,"Entrez votre formule : "); + +Mini("A a",0); + +EI_init(); + +EI_manage_config(EI_SET_COLUMN, 1); +EI_manage_config(EI_SET_ROW, 2); +EI_manage_config(EI_SET_START_MODE, EI_NORMAL); + +str=EI_input_string(25,(const char*)"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"); + +Bdisp_AllClr_DDVRAM(); + +sprintf(buffer,"%s",str); +PrintXY(64-3*strlen(str),10,buffer,36); + +while(*str) // on va jusqu'a la fin de la chaine + { + i=0; + + while(isalpha(*str)) // on prends seulement les lettres + { + characts[i]=tolower(*str); // on copie la lettre en minuscule directement dans characts + ++i; + ++str; + } + + characts[0]=toupper(characts[0]); // on met le 1er caractère en majuscule + + for(i=0;i<118;i++) // on se déplace dans les éléments de la structure + { + if(!strcmp(characts,elements[i].symbol)) + { + masse=elements[i].masse_mol; // on a la masse molaire + break; + } + } + + for(i=0;i<20;++i) // on remet tout à zéro : évite les erreurs + characts[i]='\0'; + + i=0; + + while(isdigit(*str)) // on prends seulement les chiffres + { + characts[i]=*str; // on copie la lettre dans characts + ++i; + ++str; + } + + result += atoi(characts)*masse; + + for(i=0;i<4;++i) // on remet tout à zéro : évite les erreurs + characts[i]='\0'; + } + +free(p); + +dtext(1,30,"la masse molaire est de"); + +sprintf(buffer,"%.3f g/mol",result); +dtext(1,40,buffer); + +Mini("calc",0); +Mini("ret",5); + +result=0; + +GetKey(&key); + +switch(key) + { + case 29 : return; + } + +}*/ +}