program za prevodjenje u rimske cifre

program za prevodjenje u rimske cifre

offline
  • Pridružio: 01 Maj 2007
  • Poruke: 173
  • Gde živiš: Paraćin

Da li neko moze da mi pokaze kako u jeziku C da napravim program za prevodjenje brojeva u rimske cifre



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • bocke  Male
  • Moderator foruma
  • Glavni moderator Linux foruma
  • Veliki Pingvin
  • Guru
  • Pridružio: 16 Dec 2005
  • Poruke: 12488
  • Gde živiš: Južni pol

Pogledaj sledeći link:
http://gwydir.demon.co.uk/jo/numbers/roman/index.htm

Takođe bi bilo dobro da pogledaš sors strane za Javascript algoritam za prevođenje iz dekadnih brojeva u rimski zapis.



offline
  • pixxel  Male
  • Legendarni građanin
  • Pridružio: 21 Jun 2005
  • Poruke: 9091
  • Gde živiš: Tu i tamo...

Google je krcat primerima:
http://www.google.com/search?q=convert+to+roman+numerals+c+code

offline
  • Pridružio: 01 Maj 2007
  • Poruke: 173
  • Gde živiš: Paraćin

Ja sam uspeo nesto da uradim ali mi javlja neke greske.Da li moze nesto slicno da se uradi ali da mi odgovarajuci broj prebacuje u rimski cifru.

/*
Write a general-purpose function to convert any given year into its roman equivalent.
The following table shows the roman equivalents of decimal numbers:

Decimal:.........Roman
1................i
5................v
10...............x
50...............l
100..............c
500..............d
1000.............m

Example:
Roman equivalent of 1988 is mdcccclxxxviii
Roman equivalent of 1525 is mdxxv

*/


#include<stdio.h>
main()
{
int year;
int convert (int year);


while (1)
{

printf("Note:Enter a four year digit year.\n\n");

printf("Enter the year that you wanna convert to Roman: " );
scanf ("%d", &year);

if (year> 1999)
{
printf("Invalid Year.Please enter again.\n\n");
}
}

convert(year);

}



convert(int year);
{


int i;


{
i=(year/1000); //thousands place
if(i==1)
{
printf("m");
}


i=(year%1000)-(year/1000); //hundreds place
switch (i)
{
case 1:
printf("c");
break;

case 2:
printf("cc");
break;

case 3:
printf("ccc");
break;

case 4:
printf("cd");
break;

case 5:
printf("d");
break;

case 6:
printf("dc");
break;

case 7:
printf("dcc");
break;

case 8:
printf("dccc");
break;

case 9:
printf("dcccc");
break;

}



i=(year-((year/100)*100))/10; //tens place
switch(i)
{
case 1:
printf("x");
break;

case 2:
printf("xx");
break;

case 3:
printf("xxx");
break;

case 4:
printf("xl");
break;

case 5:
printf("x");
break;

case 6:
printf("xl");
break;

case 7:
printf("xll");
break;

case 8:
printf("xlll");
break;

case 9:
printf("xllll");
break;

}



i=year%10; //ones place
switch(i);
{
case 1:
printf("i");
break;

case 2:
printf("ii");
break;

case 3:
printf("iii");
break;

case 4:
printf("iv");
break;

case 5:
printf("v");
break;

case 6:
printf("vi");
break;

case 7:
printf("vii");
break;

case 8:
printf("viii");
break;

case 9:
printf("ix");
break;
}
}

return 0;

}

offline
  • Pridružio: 16 Jun 2005
  • Poruke: 2392
  • Gde živiš: Beograd

Mozes ovako:

#include<stdio.h> void convert(int year){ int i; if(year>999) {    printf("M");    year-=1000;    } i=year/100; switch(i){    case 3:printf("C");    case 2:printf("C");    case 1:printf("C");break;    case 4:printf("C");    case 5:printf("D");break;    case 6:printf("DC");break;    case 7:printf("DCC");break;    case 8:printf("DCCC");break;    case 9:printf("CM");break; } year-=(i*100); i=year/10; switch(i){    case 3:printf("X");    case 2:printf("X");    case 1:printf("X");break;    case 4:printf("X");    case 5:printf("L");break;    case 6:printf("LX");break;    case 7:printf("LXX");break;    case 8:printf("LXXX");break;    case 9:printf("XC");break; } i=year%10; switch(i){    case 3:printf("I");    case 2:printf("I");    case 1:printf("I");break;    case 4:printf("I");    case 5:printf("V");break;    case 6:printf("VI");break;    case 7:printf("VII");break;    case 8:printf("VIII");break;    case 9:printf("IX");break; } printf("\n"); } void main() { int year; printf("Unesite broj (mora biti manji od 2000)\n\n"); scanf ("%d", &year); convert(year); }

Video sam da ti neki brojevi nisu bili pravilno napisani (za desetice ima vise gresaka, za stotine 900 nije DCCCC vec CM). Lako mozes dodati i za 2000 i nesto, samo ako su hiljade 2 onda MM, ja sam ti uradio po tvojim pocetnim uslovima (ne sme biti veci od 1999) i nisam stavio proveru broja, to lako mozes da dodas ukoliko smatras potrebnim i da zavrtis u petlju, ja sam stavio samo jedan broj da se konvertuje.

offline
  • Pridružio: 17 Jun 2014
  • Poruke: 1

#include <stdio.h> #include <string.h> void arapski2rimski(int arapski, char *rimski){     // Vrednosti rimskih cifri     int vrednost[] = {1000,900,500,400,100,90,50,40,10,9,5,4,1};     // Simboli rimskih cifri     char* simbol[]={"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"};     int i = 0;     strcpy(rimski,"");                  // praznimo string rimski     while (arapski){                    // dok je arapski broj razlicit od nule         while (arapski/vrednost[i]){    // dok arapski sadrzi najvecu mogucu vrednost rimskih cifri             strcat(rimski, simbol[i]);  // dodajemo simbol za tu vrednost stringu rimski             arapski -= vrednost[i];     // smanjujemo arapski broj za vrednost dodate rimske cifre         }         i++;                            // prelazimo na sledecu vrednost rimske cifre     } } int main(void) {    int arapski=2736;    char rimski[100];    printf("\n Arapski u rimski \n");    arapski2rimski(arapski,rimski);         printf("\n %d = %s \n",arapski,rimski);    return 0; }

Ko je trenutno na forumu
 

Ukupno su 1002 korisnika na forumu :: 39 registrovanih, 5 sakrivenih i 958 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: 357magnum, amaterSRB, babaroga, Bobrock1, bojank, ccoogg123, Denaya, draggan, Georgius, havoc995, ikan, ivica976, kairos, Karla, kihot, krkalon, Lošmi, Luka Blažević, Marko Marković, Mi lao shu, Mixelotti, nemkea71, nikoladim, Nobunaga, panzerwaffe, Parker, Recce, S2M, samsung, Sirius, slonic_tonic, Snorks, Srki94, Sumadija34, suton, Trpe Grozni, Vlada1389, Zikapk, šumar bk2