C‘ De Binary Problem Ve Çözümü Hakkında (Yardım)
-
Arkadaşlar kodun amacı sayıların ve harflerin binary karşılıklarını hesaplayıp yazdırmak ve bunu yaparken random yerlerde çıkıp yazıcak bu konuda kodlar çalışıyor ama, çalıştırırsanız farkedersiniz ilk binary i yazdıktan sonra ardından gelen binarylerde 1 xxxxxxx şeklinde başına 1 ve boşluk koyuyor bunun sebebini anlayamadım kodlar aşağıda yardımcı olursanız sevinirim.
#include
#include
#include
#include
#include
int binaryc(int b) //binary hesaplayan fonks bu
{
if(b==1) printf("%d",b);
else
{
binaryc(b/2);
printf("%d",b%2);
}
}
void sleep( clock_t wait ) //sleep fonks tanımlandı
{
clock_t goal;
goal = wait + clock();
while( goal > clock() );
}
int main()
{
int i,t,x;
int v,y;
int rany,ranx;
char ch[36] = {'1','2','3','4','5','6','7','8','9','0','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
srand(time(0));
for(i=0;i<=35;i++)
{
t = ch[i];
x= binaryc(t);
/* */
sleep(1000);
rany = rand()%69; //burdan itibaren random yerlere yazdırma kodu devrede
ranx = rand()%22;
for(v=0;v<=ranx;v++)
{
printf(" \n");
}
for(y=0;y<=rany;y++)
{
printf(" ");
}
printf("%d ",x);
/* */
}
-
en sondaki printf teki yani printf("%d ",x) te %d ile " arasındaki boşluğu silince daha farklı fazladan boşluk koyunca daha farklı sonuç veriyor nasıl üstesinden gelebilirim bunun
-
x= binaryc(t); senin binaryc fonksiyonun bişey döndürmüyoki.O fonksiyon sayının değerini yazdırıyo hemde sen döndürüyomuş gibi ayrı olarak mainin içinde yazdırmışın
-
seretide bunu yazdı:
-----------------------------
x= binaryc(t); senin binaryc fonksiyonun bişey döndürmüyoki.O fonksiyon sayının değerini yazdırıyo hemde sen döndürüyomuş gibi ayrı olarak mainin içinde yazdırmışın
-----------------------------ben hala bir problem göremedim düzeltebilir misin ?
-
up arkadaşlar halleden çıkmadı mı ?
-
int binaryc(int b);
bu fonksiyon geriye parametre olarak aldigi sayinin binary tabanli sayi seklini geri dondurmuyo. yaptigi sey parametre olarak aldigi sayiyi ikili (binary) tabanda ekrana basmak. fonksiyondan bir seyle donulmedigi icin, fonksiyonun geri dondurdugu deger bizimle alakasi olmayan, fonksiyondan cikilmadan once yazmacta kalan gereksiz bi deger.
fonksiyonunu duzeltebilirsin, yani geri dondurdugu deger olarak, parametre olarak aldigi sayinin ikili tabanda karsiligi olan sayiyi dondurucek veya
-anladigim kadariyla- ekranin herhangi bi bolgesine 1101011 seklinde yazi yazdirmak istiyosun, bunu istiyosan, cursor'u istedigin bi bolgeye getirip, bu fonksiyonu oraya yazmasi icin tekrar tekrar cagirabilirsin. -
mesela linux sistemlerinde terminal'in o anki boyutuna bagli olarak, rastgele yerlere 1 veya 0 yazicak kod parcasi.
#include <stdio.h> #include <stdlib.h> #include <time.h> #include <curses.h> #include <unistd.h> int main (int argc, const char * argv[]) { /* win32'deki SetCursorPos, GetCursorPos gibi islemler icin posix kutuphanelerinde -curses kutuphanesi- mevcut. bu kutuphaneyi baglama islemine katmak icin gcc ye -lcurses parametresini de eklemeliyi unutmayalim ;). */ int rndX, rndY; int width, height; initscr(); width = getmaxx(stdscr); height = getmaxy(stdscr); clear(); refresh(); srand(time(NULL)); for (int i = 0, fn = width * height; i < fn; ++i) { rndX = rand() % width; rndY = rand() % height; mvprintw(rndY, rndX, "%d", rand() & 1); refresh(); usleep(10 * 1000); } endwin(); return 0; }
