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: 12520
  • 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 1163 korisnika na forumu :: 36 registrovanih, 6 sakrivenih i 1121 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: airsuba, babaroga, bojan_t, bokisha253, BraneS, darkangel, darkojbn, Duh sa sekirom, dule10savic, Excalibur13, FOX, Goran 0000, goxin, Još malo pa deda, Kaplar2, kikisp, Kubovac, KUZMAR, mercedesamg, Metanoja, Mi lao shu, Milija.00, Milos ZA, MiroslavD, mocnijogurt, nemkea71, nesa1962, oldtimer, Oscar, radoznao, robertino, vaso1, vathra, VJ, yrraf, šumar bk2