Kezdőoldal » Számítástechnika » Programozás » Mi a hiba az alábbi programban...

Mi a hiba az alábbi programban? (Tízes számrendszerből szeretnék kettesbe átváltani, de sajnos a programom nem fut le, elindul, de hibát ad. )

Figyelt kérdés

#include <stdio.h>


char bin[1000];


void tizbol_kettesbe(int d) {

int i, j;


for (i=0; d>=0; i++) {

if (d%2==0) {bin[i]='0';} else {bin[i]='1';}

d=d/2;

}

i--;

for (j=0; i!=0; j++) {

bin[j]=bin[i];

i--;

}


}


main() {

int d, i;

scanf("%d", &d);

tizbol_kettesbe(d);

for (i=0; bin[i]!='\0'; i++) {printf("%c", bin[i]);}

return 0;

}



Előre is köszönöm! :)


2015. okt. 31. 12:42
 1/2 anonim ***** válasza:
És milyen hibát ad?
2015. okt. 31. 13:12
Hasznos számodra ez a válasz?
 2/2 anonim válasza:

egyrészt a for ciklusodban a feltétel d>=0, ami mindig teljesülni fog, az i elmegy egészen addig, amíg a bin tömböt nem hivatkozza túl annyira, hogy segmentation fault-tal leálljon (nem próbáltam, de gondolom ez lesz). Tehát érdemesebb d>0 -t írni.

Valóban meg kell a bin tömb tartalmát fordítani, de ehelyett így elnézve inkább tükrözöd azt. Egy 012345 sorozatból 543345-öt csinálsz. Inkább csinálj egy másik karaktertömböt, és abba fordítsd meg, ne önmagában próbáld. Mellesleg azt is meg lehetne trükkösen csinálni - XOR-okkal kell csinálni, de az túl trükkös.

Továbbá azt sem látom, hogy vársz a string vége karakterre, de a bin tömböt nem inicializáltad, tehát elég véletlenszerű, hogy mennyi mindent ír ki a programod. Az eleje valszeg az lesz, amit vársz, utána pedig előfordulhat, hogy jöhetnek váratlan karakterek, váratlan mennyiségben.

2015. nov. 1. 22:30
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!