Kezdőoldal » Számítástechnika » Programozás » C# "Reverse bits" feladat,...

C# "Reverse bits" feladat, online, Mono-val miért nem működik, ami VS . NET Core 3. 0 alatt jónak tűnik?

Figyelt kérdés

Az uint bináris alakját kellene megfordítani, majd visszaadni az újdonsült uint-et.

A gyakorló oldalon megkapott teszt bemenettel a VS alatt működik, az online felület viszont azt írja nekem, hibás bemenet.


Kérlek, ne bántsatok túlságosan!! :)


https://pastebin (pont) com/sVNnXGKa


Ezt írja az online felület:

Input 00000010100101000001111010011100

Output 15065253 (00000000111001011110000010100101)

Expected 964176192 (00111001011110000010100101000000)


VS-ben megetetem vele ezt az inputot:

string bitUnumber = "00000010100101000001111010011100"; //Convert.ToString(n, 2);

Láss csodát, az output:

964176192


Magát a reverse-t megcsináltam manuálisan is és úgy sem fogadta el.



Mit nézek be nagyon-nagyon csúnyán?


2019. jún. 5. 20:00
1 2
 1/18 anonim ***** válasza:
100%
Gyanítom a padding '0'-kat másképp kezeli a két fordító.
2019. jún. 5. 20:06
Hasznos számodra ez a válasz?
 2/18 tabaki ***** válasza:

#1-hez kapcsolódva: Az mindenesetre jól látható, hogy az online felület egyszerűen a felvezető nullák nélkül fordította meg a számot. Innentől viszont nem értem, hogy mit csinálsz. Az elején azt állítod, hogy VS-ben működik a függvény, aztán később mégsem azt mutatod be, hanem, hogy a stringgé konvertált szám helyett egy saját stringgel „eteted meg”, aminek az elején ott vannak a helyes megfordításhoz szükséges '0' karakterek. Lehet, hogy az online felületen nem tudod megcsinálni ezt a sportszerűtlen trükköt, de tanúsíthatom, hogy egyébként Monóval lefordítva is ugyanazt az eredményt adja. Erős a gyanúm, hogy ez visszafelé is érvényes, tehát a számértékből konvertált string VS-ben sem fogja tartalmazni a kezdő nullákat, vagyis a különbség nem a fordítók miatt van, hanem egyszerűen abból adódik, hogy nem ugyanazt csináltad a két bemutatott esetben.

A megoldás mondjuk az lehet, hogy a bitUnumber string elejére visszacsempészed az elveszett nullákat. Ahhoz most túl álmos vagyok, hogy erre általános érvényű, tisztességes kódot írjak, de ebben a speciális esetben ugyebár tudjuk, hogy hat nulla hiányzik, így a függvény első sorát a következőképpen megváltoztatva:

string bitUnumber = "000000" + Convert.ToString(n, 2);

...mit tesz Isten, pont a kívánt eredményt szolgáltatja. Természetesen a valódi megoldás nem hat kezdőnullát kíván, hanem a tetszés szerinti inputhoz igazodó számút.

2019. jún. 6. 02:53
Hasznos számodra ez a válasz?
 3/18 A kérdező kommentje:

Hol vannak felvezető nullák???



Ez már a string: Input 00000010100101000001111010011100

Legalábbis az online felület is nyersen ezt fordította meg.



Miért sportszerűtlenség egy teszt? :D

Ezen csak röhögni tudok. Kipróbálom valahogy, működik-e, igen, nem értem, online akkor hol a hiba és erre sportszerűtlen vagyok, ok :D

2019. jún. 6. 04:47
 4/18 A kérdező kommentje:

Egyébként ha élőben is ilyenek az emberek ebben a szakmában, mint ezen az oldalon, akkor lehet jobb lenne, ha feladnám az egészet a f.ba.

Én alapból érzékeny vagyok, de itt konkrétan nem olvasni normális hangnemű válaszokat, kvázi egyik kérdés alatt SE.

2019. jún. 6. 04:57
 5/18 anonim ***** válasza:

Azért van, mert nem hisszük el amit írsz.


Nem logikus, hogy a mono odatenné a padding 0-kat. Ha egy számot akár 10-es akár 2-es számrendeszerben alakítunk szöveggé soha nem lesznek ott a padding 0-k.


Ez elvileg mono, láthatod:

[link]

2019. jún. 6. 06:13
Hasznos számodra ez a válasz?
 6/18 anonim ***** válasza:

tabaki:

Ajánlom figyelmedbe a string osztály PadLeft metódusát:

Convert.ToString(n, 2).PadLeft(32, '0')

2019. jún. 6. 06:20
Hasznos számodra ez a válasz?
 7/18 A kérdező kommentje:

Az, hogy ti úgy születtetek, hogy tudtok programozni, nem jelenti azt, hogy más is.


Hol van padding 0?

2019. jún. 6. 07:23
 8/18 anonim ***** válasza:

Na látod... Pontosan ez a kérdés.

Mert elég valószínűtlen, hogy a két fordító ilyen alapvető működésben eltérne.

2019. jún. 6. 07:35
Hasznos számodra ez a válasz?
 9/18 A kérdező kommentje:

Egy kezdő sokszor nem tudja, mire vannak gyári metódusok, azok mikor jók, mikor kevésbé.

Főleg nem tudom, mi a .NET Core, Framework közti különbség, mi a Mono.



De itt nem is fogok infót szerezni ezek szerint.

2019. jún. 6. 07:44
 10/18 anonim ***** válasza:

Mi válaszolunk a kérdésekre, de ne csodálkozz, hogy azt írjuk hogy valótlant állítasz amikor azt teszed.


"Ez már a string: Input 00000010100101000001111010011100"


Hogy lenne már ez a string input. Az általad linkelt PasteBin kódban a függvény paramétere egy uint. Gondolom azt hívja meg az online oldal... csak mellékesen ő kiírja a fenti szöveget is a padding 0-kal együtt.


Hogy nézne már ki, ha egy keretrendszer minden szám=>szöveg alakításkor (tehát amikor kiírod a képernyőre, nyomtatod, stb) kirakná a 0-kat.... na és hány darabot, attól függően, hogy hány bizes a szám amit átalakít?

Akkor az lenne itt az oldalon, hogy "A válaszíró 0000000062%-ban hasznos válaszokat ad". Feltéve ha a kerekített % egy 32 bites egész változóban van tárolva.

2019. jún. 6. 08:20
Hasznos számodra ez a válasz?
1 2

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!