ďťż

Ładny brzuch

Witam!
Problem mam taki: Pisze program, użytkownik podaje dane, są one przypisane do zmiennych i w zależności od tego co podał ta zmienna ma się zmienić... To znaczy, że użytkownik podaje liczbę 1, która jest przypisana do zmiennej "jeden" a następnie program sprawdza czy zmienna "jeden" jest równa 1, jeśli tak to zmienną jeden zastępuje wartością 00001010. No właśnie... nie zastępuje - dalej jest 1.

... int jeden; cout<<"podaj wartosc 1: "; cin>>jeden; if(jeden==1) {   jeden=00000001;   cout<<"Podana liczba w systemie binarnym to:"<<jeden<<endl; ...

Próbowałem też jeden==00000001; oraz w nawiasach - ale zawsze wynikiem programu jest:
Podana liczba w systemie binarnym to:1 (gdy podamy 1) a nie wypisuje nowej wartości zmiennej - w tym przypadku binarnej.

Gdzie popełniam błąd :)
Użytkownik jointano edytował ten post 08 czerwiec 2005, 20:19


Taki że int będzie ci ucinał zera z przodu. Liczbę zamienioną przypisz pod string żeby zachować zera.
PS mam nadzieję że nie chcesz w ten sposób zamieniać liczb na binarne
Użytkownik reVis edytował ten post 08 czerwiec 2005, 20:28
a do string trzeba jakąś konkretną bibliotekę? Kompilator mi się wykrzacza na stringu...

C:\Dev-Cpp\main.cpp In function `int main()':
56 C:\Dev-Cpp\main.cpp no match for 'operator==' in 'zmienna==0'

BTW - jestem początkujący w programowaniu. Poznawałem języki c/c++/c# (na uczelni) i żadnego nie skumałem jak należy (problem z wykładowcą) ...

Najbardziej kumam C++ dlatego w nim chciałem napisać programik (na zaliczenie).
Próbowałem ale nie wyszło - nie znalazłem innej metody korzystając z mojej wiedzy na zamienienie decymalnej liczby na binarną, ale z chęcią wysłucham propozycji.

Pozdrawiam

zamiast string możesz użyć char* . Do tego nie jest potrzebna żadna biblioteka.



Musisz dodać
#include <string> ... std::string sZmienna
No chyba że dajesz wcześniej using namespace std; ( po deklaracji nagłówków ) to możesz opuścić std::

PS OBOWIĄZKOWO<-- kurs Megatutorial "Od zera do gier kodera"
PS Algorytm znajedziesz na Google.pl (przynajmniej teorię )
Użytkownik reVis edytował ten post 08 czerwiec 2005, 22:27
Jak chcesz szybko zamienić liczbę typu unsigned int na postać binarną to musisz, używając maski bitowej, sprawdzić każdy z 32 bitów liczby po kolei w pamięci i przepisać do char*. Zresztą zaraz może sklecę jakąs funkcję do zamiany bo ciekawy jestem jak to szybko będzie działać.

#include <cstdlib> #include <iostream> #include <string> using namespace std; int main() { string s = ""; unsigned long long int p = 1, i = 0; cout << "Podaj liczbe: "; cin >> i; for (int j=0; j<63; j++) { if (p>i) break; if (i & p) s = "1"+s; else s = "0"+s; p*=2; } cout << s << "\n"; system("pause"); }
Użytkownik Cyrkiel edytował ten post 09 czerwiec 2005, 15:44
A to moje rozwiązanie:
void UIntToBin(unsigned long dec, char* bin) {     for(long j = 0, i = 31; i>-1; --i, ++j)          bin[i] = dec & (1<<j) ? '1' : '0';     bin[32] = '\0'; };

dec to liczba, którą sprawdzamy, a bin to wskaźnik na pierwszy element tablicy charów, do której chcemy zapisać wynik. Ta funkcja jest dość szybka.

//EDIT: ofkoz tablica charów musi byc co najmniej 33-elementowa, moze być większa.
Użytkownik Futhark edytował ten post 09 czerwiec 2005, 16:42
void ui2b (char * str, unsigned int v) {    for (unsigned int i=0x80000000; i; i>>=1) *str++ = ((v&i)>0)+'0';    *str = 0; }

A oto co mi się udało nastrugać:
#include <cstdlib> #include <iostream> #include <string> typedef unsigned long int UINT; using namespace std; void post_dw(UINT n) { if(n!=0)        {        post_dw(n/2);        cout<<n%2;        } } main() {      int a1;      cout<<"Podaj liczbe:"<<endl;      cin>>a1;       cout<<"Zapis binarny: "; post_dw(a1); system("PAUSE"); return EXIT_SUCCESS; }

Tylko że to jest na int więc zamiast zer nie ma nic, a na stringu jakoś mi to nie chce działać :mellow:

Żadnych sygestii ani propozycji?? :(

No przecież dostałeś już 3 propozycje jak to zrobić, czego jeszcze oczekujesz?

No to zrób żeby z pliku wczytywał ...

#include <stdio.h> #include <vector> using namespace std; int main() { FILE *f; vector<int> w; char ch; char chi[0]; if (!(f=fopen("liczby.txt","r+"))) { printf("Nie moge otworzyc pliku\n"); return 0; } while ((ch=getc(f))!=EOF) { chi[0]=ch; w.push_back(atoi(chi)); } for (int i=0;i<w.size();i++) printf("%i ",w[i]); printf("\n"); return 0; }

lub wpisaną liczbę zapisywał do pliku a potem czytał z tego pliku. I styka

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