home *** CD-ROM | disk | FTP | other *** search
- #include <stdio.h>
-
- int ara=0;
- char rom[20];
-
- static int aratab[] = {0,1,5,10,50,100,500,1000};
- static char romtab[] = "0IVXLCDM";
-
- int addrom (siffra)
- int siffra;
- {
- static int r;
-
- rom[r]=romtab[siffra];
- rom[r+1]='\0';
- r++;
- return(aratab[siffra]);
- }
-
- ararom()
- {
- int i, g=7, h, flag=0, dec=ara;
-
- do
- if (aratab[g]<=dec)
- dec=dec-addrom(g);
- else
- {
- for (i=6 ; i>1 ; i=i-2)
- if (g>i-1)
- {
- h=(g-i)|1;
- if (aratab[g]-aratab[h]<=dec)
- {
- dec=dec+addrom(h);
- dec=dec-addrom(g);
- flag=1;
- }
- }
- flag ? flag=0 : g--;
- }
- while (dec>0);
- }
-
- romara()
- {
- int i, j, g=0;
-
- for (i=18 ; i>(-1) ; i--)
- for (j=1 ; j<8 ; j++)
- if (romtab[j]==rom[i])
- {
- if (j<g)
- ara=ara-aratab[j];
- else
- ara=ara+aratab[j];
- g=j;
- }
- }
-
- main()
- {
- printf("\n1. Arabiska till romerska siffror");
- printf("\n2. Romerska till arabiska siffror");
- printf("\nAnge procedur: ");
-
- if (getchar()=='1')
- {
- printf("\nArabiska siffror: ");
- scanf("%d",&ara);
- ararom();
- }
- else
- {
- printf("\nRomerska siffror: ");
- scanf("%s",&rom);
- romara();
- }
- printf(" Arabisk: %d\n Romersk: %s\n\n",ara,rom);
- }
-
-