ďťż

Ładny brzuch

witam chodzi mi mianowicie o to:
1. użytkownik podaje liczbe naturalną n
2. użytkownik liczbę z zakresu (2<=k<=1)
3. liczba n jest zapisywana w systemie pozycyjnym o wartości k

No i właśnie...jak ją zapisać w takim systemie? Szukałem w google ale nie doszukałem się niestety.




2. użytkownik liczbę z zakresu (2<=k<=1)

tak wiem, też to zauważyłem, ale taką mam treść zadania. Sprawdzałem kilka razy. Narazie potrzebuje dowiedzieć się jak liczbę n zmienić na podany system, a potem się będe głowił czy to jestprawidłowe. Masz pomysł?

http://www.it.aplus....y&which=systemy



słuchajcie mam taki kodzik:
/ konwersja  while (liczWej != 0)  {     temp = liczWej % sysWyj;     if (temp<10)        liczWyj+='0'+temp;     else        liczWyj+='A'+temp-10;     liczWej/=sysWyj;  }  // odwrócenie kolejności cyfr w otrzymanej liczbie  for (unsigned int i=0;i<liczWyj.size()/2;++i)  {     pom=liczWyj[i];     liczWyj[i]=liczWyj[liczWyj.size()-i-1];     liczWyj[liczWyj.size()-i-1]=pom;  }  

Napisane w c++ a musze to przepisać do pascala. Wiadome jest, że tak po prostu spisać nie moge. Część odpowiedzialną za konwerse przerobiłem bo to proste, ale nie moge sobie poradzić z odwróceniem liczby. Czy ma ktoś jakiś pomysł jak to do pascala wsadzic?

Nie wiem jak dokladnie chcesz zmienic kolejnosc cyfr, ale proponuje zaminic liczbe na string (inttostr), poprestawiac znaki i spowrotem do liczby (strtoint) :)

Dobra z pascala dałem sobie spokój. Wszedłem na c++ i są efekty. Troche źródeł i zmontowałem coś takiego
#include <iostream> #include <string> using namespace std; bool ZliczCyfry( unsigned int liczWej, unsigned int sysWyj ) { unsigned int result = 0;  if (liczWej==0)    return 1;  while( liczWej != 0 )  {    liczWej /= sysWyj;    result++;  }  return result; } unsigned int DajCyfre( unsigned int liczWej, unsigned int sysWyj, unsigned int cyfra ) {  while (cyfra)  {    liczWej /= sysWyj;    cyfra--;  }  return (liczWej % sysWyj); } bool SprawdzLiczbe( unsigned int liczWej, unsigned int sysWyj ) {  unsigned int ilosc_cyfr = ZliczCyfry( liczWej, sysWyj );  unsigned int ilosc_iteracji = ilosc_cyfr / 2;  unsigned int i;  for( i = 0; i < ilosc_iteracji; i++ )  {    if (DajCyfre( liczWej, sysWyj, i ) != DajCyfre( liczWej, sysWyj, ilosc_cyfr-i-1 ))      return false;  }  return true; if(true) cout <<"tak"; else cout <<"nie"; } int main() {  unsigned int sysWyj;  unsigned long int liczWej;  string liczWyj="";  unsigned int temp;  char pom;    // pobieranie danych  cout <<"Podaj POPRAWNA naturalna liczbe w systemie dziesietnym: ";  cin >>liczWej;  cin.ignore();  cout <<"Podaj system liczbowy danych wyjsciowych (2-36): ";  cin >> sysWyj;  cin.ignore();  if (sysWyj<2 || sysWyj>36)  {     cout <<"System liczbowy danych wyjsciowych jest nieprawidlowy\n";     cout <<"\nNacisnij ENTER aby zakonczyc...\n";     getchar();       return 0;  }  // konwersja  while (liczWej != 0)  {     temp = liczWej % sysWyj;     if (temp<10)        liczWyj+='0'+temp;     else        liczWyj+='A'+temp-10;     liczWej/=sysWyj;  }  // odwrócenie kolejności cyfr w otrzymanej liczbie  for (unsigned int i=0;i<liczWyj.size()/2;++i)  {     pom=liczWyj[i];     liczWyj[i]=liczWyj[liczWyj.size()-i-1];     liczWyj[liczWyj.size()-i-1]=pom;  }    unsigned int dzielnik = 1;  unsigned int tmp = liczWej;  while (tmp)  {    dzielnik *= sysWyj;    tmp /= sysWyj;  }  tmp = liczWej;  while( dzielnik > sysWyj )  {    dzielnik /= sysWyj;    if ((tmp / dzielnik) != (tmp % sysWyj))      cout <<"NIE";    tmp %= dzielnik;    tmp /= sysWyj;    dzielnik /= sysWyj;  }    unsigned int zliczcyfry = ZliczCyfry(liczWej, sysWyj);  unsigned int sprwadzliczbe = SprawdzLiczbe(liczWejm sysWyj);  cout <<"tmp "<<tmp<<'\n';  cout <<"ZLICZ CYFRY: "<<ZliczCyfry<<'\n';  cout <<"sprawdz liczbe: "<<SprawdzLiczbe<<'\n';    cout <<"Otrzymana liczba: "<<liczWyj<<'\n';  cout <<"\nNacisnij ENTER aby zakonczyc...\n";  getchar();    return 0; }
Niestety nie zwraca od zbyt dobrze wyników. Bezbłędnie działą tylko
 cout <<"Otrzymana liczba: "<<liczWyj<<'\n';
reszta zwraca to samo niezaleznie od wartosci. ktos widzi blad?

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •