Wątek zablokowany 2015-03-07 23:48 przez furious programming.

Najprostszy sposób "wyciągnięcia" cyfr z liczby

0

@fasadin Dzisiaj popatrzyłem na matury i spróbowałem napisać algorytm który pozwoli mi wyciągnąć cyfry z liczby beż używania bibliotek, po porostu algorytm który można później zastosować w schemacie blokowym na maturze. Co o nim sądzicie? Działa wam? :P

#include <iostream>
 
int main()
{
    double a = 123.0456;
    double liczba = a;
    int calkowita1 = liczba;
 
 
    while (calkowita1 != liczba){
 
        liczba = liczba * 10;
        calkowita1 = liczba;
    }
 
for (int i = 0; i <=7; i++){
        std::cout<< calkowita1 % 10<<std::endl;
        calkowita1 = calkowita1 / 10;
    }
} 
 

tutaj możecie sprawdzić: http://webcompiler.cloudapp.net/ zaznacz opcje "Run executable after compilation "

2

Dziwny (nieczytelny) kod. Poza tym spróbuj z 123.04567 i zobaczysz, że nie zadziała. Reprezentacja binarna skończonej liczby w systemie dziesiętnym nie musi być skończona ani dokładna.

0

@twonek

for (int i = 0; i <=ilość-1; i++){
		cyfry[i] = liczba % 10;
		liczba = liczba / 10;
		}
0

Ja bym po prostu sprawdzała czy kolejny znak to kropka, jak tak to bym ignorowała.

Twój kod jest mało czytelny.

Jeśli u Ciebie działa to u innych też ;) Pytanie czy dla każdej liczby. Zakładam że testowałeś dla newralgicznych.

0

bez uzywania biblotek... ale po co?

0

Hehe można i tak :) :

 
#include <iostream>

int main(int argc, char* argv[]){
	double liczba = 3.1415926;
	std::string lancuch = std::to_string(liczba);
	for (int i = 0; i < lancuch.length(); i++)
		if (lancuch[i] != '.') 
			std::cout << lancuch[i] << ", ";
	return 0;
}

Bez bibliotek? Bez.
https://ideone.com/DVcjdQ

[EDIT]
Tylko, że trochę lipa, bo zaokrągla... :-/

1

Mój algorytm działa dla wszystkich liczb całkowitych!!!
Nie działa dla wszystkich liczb zmiennoprzecinkowych, bo np. 0.1 w systemie dziesiątkowym to w dwójkowym liczba nieskończenie okresowa !
0.110 = 0.000110011001100110011001100110011001100110011001100110011001…2

#include <iostream>
 
int main()
{
   
    int calkowita =123456789;

while(calkowita != 0){
        std::cout<< calkowita % 10<<std::endl;
        calkowita = calkowita / 10;
    }
} 
0

@bogdans @furious programming to nie możecie od razu napisać o co chodzi tylko ciągle coś wam nie pasuje...

Ja tylko zwróciłem uwagę na to, że masz błąd ortograficzny, a na potwierdzenie podałem Ci link do słownika; Po drugie zgadzam się tym co napisał @bogdans, więc oznajmiłem to frazą @bogdans++

Bardzo mi przykro, że nie stać Cię na chwilę pomyślunku i zrozumienie co się do Ciebie pisze; Poza tym Bogdan napisał Ci dokładnie co ma na myśli, więc nie wiem w czym jest problem;

to forum jest pełne snobów i gburów.

Podobno programiści z 4pro to zgorzknialcy

Pomóc komuś przecież po to jest forum, a wy nic nie ogarniacie nawet link do słownika wklejacie.

To Ty nic nie rozumiesz i rzucasz się, jakby Ci ktoś krzywdę robił, zwracając uwagę na Twoje błędy (w rozumowaniu i ortografii);

bezużyteczne nurkowce.

Uważaj, bo za takie słownictwo nie dostaniesz linku do słownika, a bana za trolowanie; Albo dostaniesz - http://sjp.pl/nurkowiec

Jak @fasadin skończy swoje opowiadanie usuwam konto.

Ten serwis nie umożliwia usuwania konta, więc Twoje wypociny zostaną tu na zawsze; A wątek zamykam, bo jak widać niektórzy nie potrafią przyznać się do błędu i tworzy się niepotrzebna awantura; Wyciągnij więc z tego jakieś wnioski, zamiast atakować innych.

1 użytkowników online, w tym zalogowanych: 0, gości: 1