![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 53 Pomógł: 0 Dołączył: 3.01.2004 Skąd: Iława Ostrzeżenie: (0%) ![]() ![]() |
Na wstępie przeproszęgdyż prosze o gotowe rozwiązanie. Jestem zdesperowany, jeśli łamie zasady to zrozumiem krytykę i usuniecie tematu.
Na końcu dam gotowy program, jaki już posiadam. Realizuje on konwersje w każdą stronę miedzy systemami liczbowymi z zakresu od 2 do 36. I wszystko działa. Dodatkowo jest zaimplementowana została detekcja błędów i sprawdzanie czy wpisano cyfrę a nie cokolwiek innego. Prezentuje program: Kod #include <iostream> #include <string> #include <sstream> using namespace std; bool Koniec() { string s; cout << "\nSkonczyc przeliczena ? (T = TAK)"; cin >> s; return ((s != "") && (toupper(s[0]) == 'T')); } int NaLiczbe(const char *n) { int i; for(i=0; isdigit(*n); n++) i = i *10 +(*n - '0'); if(*n) { printf("\nZle dane. Obliczenia przerwane. Jako liczbe do zamiany wpisano znak.\nWprowadz liczbe z zakresu 0 - 9!!\nWybierz N i ponownie wprowadz dane.\n"); } return i; } int NaLiczbe2(const char *n) { int i; for(i=0; isdigit(*n); n++) i = i *10 +(*n - '0'); if(*n) { printf("\nZle dane. Obliczenia przerwane. Jako podstawe wpisano znak.\nWprowadz liczbe z zakresu 2 - 10!!\nWybierz N i ponownie wprowadz dane.\n"); } return i; } int main(void) { string s; unsigned long c,L,p; char buf[256] = {0}; do { cout << "\n========================================================================== ====\n" " Zamian liczby decymalnej na zapis w systemie pozycyjnym o podstawie p" "\n========================================================================== =====\n" "(C)2005 Siemiatkowska Dorota, Slomiany Jaroslaw, Szczuplinski Tomasz SWPW Plock" "\n========================================================================== =====\n" "\nPodaj liczbe do zamiany = "; cin >> buf; cin.ignore(1024, '\n'); if(!(L = NaLiczbe(buf))) { continue; } cout << "\nPodaj podstawe z zakresu (2..10) = "; cin >> buf; cin.ignore(1024, '\n'); if(!(p = NaLiczbe2(buf))) { continue; } else if ((p<2)|(p>10)) {printf("\n\nZle dane. Obliczenia przerwane. Podano podstawe nie zawarta w przedziale 2 - 10\n" "Wybierz N i ponownie wprowadz dane.\n"); continue; } cout << "\n" << L << "(10) = "; s = ""; do { c = L % p; s = char(c + 48) + s; L = L / p; } while(L != 0); cout << s << "(" << p << ")\n\n"; } while(!Koniec()); return 0; } A teraz napisze, o co bardzo Was Prosze. O takie zmodyfikowanie w/w kodu, aby możliwa była konwersja jak do tej pory jednak wzbogacona jeszcze o konwersje u1 i u2 do i z w/w formatów kodowania. Jednak l i p są sprawdzane czy są znakiem. To daje ze nie można zamienić -10 w dec na np. liczbę bin. Chciałbym wzbogacić program, aby pozwalał: Liczbę ujemna zamienić na dowolna, i dowolna na ujemna. I do tego jest mi właśnie potrzebna u1 i u2. Oczywiście zamiana z u1 na u1 i na odwrót tez jest potrzebna. Nie wiem czy wszystko odpowiednio opisałem. Jeśli będą pytania odpowiem na nie. Pozdrawiam. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 00:37 |