• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

reprezentacja liczb typu float

Object Storage Arubacloud
0 głosów
485 wizyt
pytanie zadane 16 lutego 2016 w C# przez niezalogowany
Chodzi mi tu o zadanie ze spoja czy może mi Ktos wysałec jakis link do objasnienia bo googlowałem i nie znalałem jasnego wytłumaczenia jak sie te liczby zamienia.

http://pl.spoj.com/problems/PP0504D/

 

Dzieki za każdą odp.
komentarz 27 stycznia 2017 przez Vams Nowicjusz (100 p.)

Witam, siedzę nad tym zadaniem i chciałbym poprosić Was o pomoc. Program napisałem w Javie i mimo tego, że przechodzi wszystkie testy znalezione na forach oraz te, które sam mu zaprezentowałem, spoj go nie przepuszcza. Może macie pomysł na jakieś nietypowe testy, lub sami doświadczyliście jakiegoś dziwnego zachowania spoja w przypadku tego zadania to dajcie znać. 

Kombinowałem już ze spacjami, usunałem nawet spację po całym stringu, ale mimo to nadal jest gdzieś problem. Ciekawi mnie tylko to, czy problem jest w sposobie wyświetlania, czy też leży gdzieś głębiej.

Wiem, że wpis otagowany jako C++, ale nie chciałem Tworzyć nowego wpisu i zaśmiecać forum, mimo wszystko, jeżeli nie był to dobry pomysł to zrobię oddzielny wpis.

Poniżej zamieszam kod, który później usunę. 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {

        try {
            BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
            int numberOftests = Integer.parseInt(reader.readLine());

            while(numberOftests-->0){
                String [] values = reader.readLine().split(" ");
                float valueA = Float.parseFloat(values[0]);

                if(valueA == 0){
                    System.out.println("0 0 0 0");
                    
                }else {
                    int bitRepresentation = Float.floatToIntBits(valueA);
                    String hexString = Integer.toHexString(bitRepresentation);
                    
                    for(int i = 0; i < hexString.length(); i++){

//                    	ify w celu poprawnego wyświetlania stringa.
                    	if ((hexString.charAt(i) == '0') && (hexString.charAt(i+1)== '0')){
                            
//                    		Myślałem, że może przeszkadzać spacja po stringu, dlatego zrobiłem poniżego ifa
                        	if(hexString.length()-i<=2){
                        		System.out.print(hexString.charAt(i));
                        	}else{
                        		System.out.print(hexString.charAt(i) + " ");
                        	}
                        }
                        else {
//                    		Myślałem, że może przeszkadzać spacja po stringu, dlatego zrobiłem poniżego ifa                        	
                        	if(hexString.length()-i<=2){
                        		System.out.print(hexString.charAt(i) +"" +hexString.charAt(i+1));
                        	}else{
                        		System.out.print(hexString.charAt(i) +"" +hexString.charAt(i+1) + " ");
                        	}
                        }
                       
                        i+=1;
                    }
                    System.out.println();
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

 

1 odpowiedź

0 głosów
odpowiedź 16 lutego 2016 przez MetGang Nałogowiec (34,360 p.)
https://forum.pasja-informatyki.pl/97865/reprezentacja-liczby-float-cpp Tutaj wyjaśniam jak to wszystko wygląda. O ile w C++ jest to łatwe dzięki wskaźnikom - to w C# (w końcu taka kategoria, ale to chyba pomyłka) trzeba znaleźć jakieś inne rozwiązanie (jakąś wbudowaną funkcję).
komentarz 16 lutego 2016 przez adrian17 Ekspert (344,860 p.)
W C# to jest jeszcze łatwiejsze, bo nie trzeba się martwić rozmiarem floata, castowaniem, wskaźnikami tylko własnie jest wbudowana funkcja :P
komentarz 16 lutego 2016 przez MetGang Nałogowiec (34,360 p.)
Też jestem za ułatwianiem sobie życia, ale wiedza jak coś rozwiązać innym sposobem zawsze się przyda ;) W C++ lubię właśnie to, że da się hackować własny kod/program :D

Podobne pytania

0 głosów
2 odpowiedzi 2,657 wizyt
pytanie zadane 7 kwietnia 2016 w C i C++ przez Adrian1999 Nałogowiec (34,570 p.)
+1 głos
1 odpowiedź 1,765 wizyt
pytanie zadane 11 stycznia 2016 w C i C++ przez robert9620 Stary wyjadacz (11,640 p.)
0 głosów
1 odpowiedź 575 wizyt
pytanie zadane 24 października 2019 w C# przez Babbage Obywatel (1,630 p.)

92,555 zapytań

141,403 odpowiedzi

319,556 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...