kamus Opublikowano 7 Lutego 2006 Zgłoś Opublikowano 7 Lutego 2006 #include <conio.h>#include <stdio.h>main(){ clrscr(); int t[100],n,i; printf("Podaj n"); scanf("%d",&n);for(i=0;n>=1;i++,n=n/2){if(n%2==0) t[i]=0;else t[i]=1;} printf("i=%d\n\n",i);for(i;i>=0;i--)printf("%d",t[i]); getch(); return 0;} dziala, ale wyswietla tez jakies liczby z kosmosu.. nie wiem dlaczego.. pomoze mi ktos? Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
p_zero Opublikowano 7 Lutego 2006 Zgłoś Opublikowano 7 Lutego 2006 ja bym napisal to tak: #include <iostream> using namespace std; int main() { int n; cout << "wprowadz liczbe dziesietna: "; cin >> n; cout << "wartosc w zapisie binarnym: " << bin << n << endl; //dla osemkowego oct, 16 hex itd;;; } // ;) niestety nie mam czasu na sprawdzenie twojego kodu, zmykam ;) Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
__max Opublikowano 7 Lutego 2006 Zgłoś Opublikowano 7 Lutego 2006 Dziwne liczy pochodzą stąd, że gdy już wpiszesz liczbę binarną do tablicy to zmienna 'i' jest inkrementowana, na zakończenie pętli... no i gdy zaczynasz wyświetlać 'i' jest "za duże" o jeden - jako pierwsza liczba wyświetlana jest losowa wartość przechowywana w tablicy o jedną pozycję dalej niż cały zapis binarny... Po prostu w drugiej pętli, zamiast: "for(i; i >= 0; i--)" zapisz for(i--; i>= 0; i--)" i będzie wszystko ok. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Artur.M Opublikowano 7 Lutego 2006 Zgłoś Opublikowano 7 Lutego 2006 ja mam take dwie propozycje. Po pierwsze dobrze jest wypełnić tablice na początku zerami. dzieki temu nie ma potem często nie miłych sytuacji. Poza tym zawartość tablict t możesz wyswietlić w ten sposób: printf("%s",t); jedna pętla mniej będzie. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
__max Opublikowano 7 Lutego 2006 Zgłoś Opublikowano 7 Lutego 2006 Po pierwsze dobrze jest wypełnić tablice na początku zerami.A po co?.... Przecież i tak zer później nie będzie wyświetlał... Poza tym zawartość tablict t możesz wyswietlić w ten sposób: printf("%s",t); Nie może (to nie łańcuch znaków tylko tablica liczb....) Ewentualne usprawnienia to zmiana rozmiaru tablicy do sizeof(int) i zmiana typu tablicy na char(mniej zajmuje i też przechowuje liczby całkowite) Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Artur.M Opublikowano 7 Lutego 2006 Zgłoś Opublikowano 7 Lutego 2006 upsss nie zauwazyłem że on to robi na tablicy int`ów :) ale jeżeli nie zamierzasz wykonywać jakiś działań na tej liczbie to czy nie lepiej było by użyć tablicy typu char . Oszczędniej na pamięci ;) Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Polar Opublikowano 7 Lutego 2006 Zgłoś Opublikowano 7 Lutego 2006 Oszczędniej być może. Ale typ int jest najbardziej naturalnym typem pod który są optymalizowane procesory. Pozatym w takich segmentach jest też pamięć więc int jest zdecydodwanie najszybszym typem. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
PelzaK Opublikowano 10 Lutego 2006 Zgłoś Opublikowano 10 Lutego 2006 kolejni obroncy uciśnionych bajtów? :D.. dajcie spokój z optymalizacją szybkości i zajętości pamięci... 1GB ramu i mam sie przejmowac o pare bajtów wiecej czy mniej? :).. procesor 2GHz, tak czy siak policzenie mu intów czy charów zajmie taki ułamek czasu, że nikt i nic tego nie odczuje... :) (nie wnikam czy dobrze czy źle robi samo zadanie, ale bez sensu są takie nawyki oszczędnościowe... - oszczędzać zaczniecie jak będziecie pisać na sprzęcie które ma ograniczone zasoby - mikrokontrolery np...) Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...