Witam.
#include <iostream> #include <time.h> #include <windows.h> using namespace std; int losowa[22]; int i; int main() { srand(time(NULL))
Właśnie jestem w trakcie zmieniania tak jak mówisz, tylko zatrzymałem się na tym etapie i nie jestem pewien co tutaj zrobić.
cin>>a;//wczytuje liczbe do stringa len = a.length(); //dlugosc stringa, czyli ilosc cyfr w liczbie cyfra = atoi(a.c_str());//string do char i char do int. } int* temp = new int[len];//tablica o dlugosci cyfr w liczbie
Chodzi dokładnie o cyfra = atoi(a.c_str()). W C nie ma stringow, wiec mam po prostu zmienic to na tablice char?
@MuratPasza, jak się uda to daj znać i jeżeli masz wolną chwilę to zajrzyj na moją stronkę. Starałem się tam opisać podstawy C w jak najprostszy sposób, więc może Cię to zainteresuje. www.trzykody.pl
Zatrzymalem sie jeszcze w jednym momencie, mianowicie przesunięciach.
cout<<setki[temp[0]]<<dziesiatki[temp[1]]<<jednosci[temp[2]];
Jak moge to zmienic? Szukam w internecie i nie moge nic znalezc na ten temat
Zmieniłem według tego jak mówiłes, ale nie dziala to do konca dobrze. Po wybraniu czy chce skonwertowac liczby z arabskiego na rzymskie lub na odwrot, cmd wyłącza się.
#include <stdio.h> #include <string.h> #include <stdlib.h> int trans(char a){ switch ( a ){ case 'X':return 10;break; case 'I':return 1;break; case 'V':return 5;break; case 'L':return 50;break; case 'C':return 100;break; case 'D':return 500;break; case 'M':return 1000;break; default: return 0; break; } } int main() { char jednosci[12][255] = {" ", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", '\0'}; char dziesiatki[12][255] = {" ", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC", '\0'}; char setki[12][255] = {" ", "C", "CC", "CCC", "CD", "M", "MC", "MCC", "MCCC", "CM", '\0'}; char tysiace[12][255] = {" ", "M", "MM", "MMM", '\0'}; printf("Wybierz 1 dla konwersji arabska->rzymska i 2 dla rzymska->arabska: "); int wybor=0; scanf("%d", &wybor); if(wybor==1){ printf("Podaj cyfre arabska (nie wieksza niz 3999): "); char a[10]; int cyfra=0; int len; while(!cyfra){ // sprawdzenie czy podana jest liczba scanf("%c",&a);//wczytuje liczbe do stringa len = strlen(a); //dlugosc stringa, czyli ilosc cyfr w liczbie cyfra = atoi(a[10]);//string do char i char do int. } int* temp = (char *) malloc(sizeof(char) * 10);;//tablica o dlugosci cyfr w liczbie int i=len-1;// iterator pomniejszony o jeden (zaczynamy od o tablica) int modul=10;// dzielenie przez 10 do { temp[i] = cyfra%modul; cyfra = cyfra/modul; i--; } while (cyfra>0); //petla przepisuje po jednej cyfrze z liczby i wrzuca je do tablicy printf("Liczba arabska zapisana w systemie rzymskim: "); //4 mozliwosci dlugosci liczby, wiec 4 ify. Mozna to zrobic tez petla. if(len == 4) printf("%c<<%c<<%c<<%c", tysiace[temp[0]], setki[temp[1]], dziesiatki[temp[2]], jednosci[temp[3]] ); if(len == 3) printf("%c<<%c<<%c", setki[temp[0]], dziesiatki[temp[1]], jednosci[temp[2]]); if(len == 2) printf("%c<<%c", dziesiatki[temp[0]], jednosci[temp[1]]); if(len == 1) printf("%c", jednosci[temp[1]]); free (temp); } if(wybor==2){ char a[10]; printf("Podaj cyfre w systemie rzymskim: "); scanf("%c", &a); int element=0, wynik=0, temp=0, i=0; for (i=0;i<strlen(a);++i) { element = trans(a[i]); if(i<strlen(a)-1){ temp=trans(a[i+1]); } if (temp>element) { element =0-element; } wynik=element+wynik; } printf("%d", wynik); } return 0; }
@MuratPasza, W tym kontekście << to nie przesunięcie bitowe, to właśnie wypisanie i należy to zamienić na printf.
printf("%s%s%s", setki[temp[0]], dziesiatki[temp[1]], jednosci[temp[2]]);
A jeśli chodzi o zamianę wartości na "cyfry rzymskie", to ostatnio pojawił się taki temat i tam podano kod który w tą stronę działał. Kluczem jest wydzielenie kilku dodatkowych wartości takich jak 9, 90, 900 itp, które konwertowane są jako dwa znaki w notacji rzymskiej.
to ostatnio pojawił się taki temat
Zamiana liczb rzymskich na arabskie
93,628 zapytań
142,551 odpowiedzi
323,051 komentarzy
63,133 pasjonatów
Top 15 użytkowników
Motyw:
Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡
Oto polecana książka warta uwagi.Pełną listę książek znajdziesz tutaj