Pjetal Opublikowano 19 Września 2004 Zgłoś Opublikowano 19 Września 2004 Czy ktoś może wie jak najłatwiej w języku C++ z podanej liczby rzeczywsitej postaci xxx.xxx uzyskać część ułamką tzn. chodzi mi dokładnie o liczbę za przecinkiem czyli np. dla liczby 123.456 potrzebuję 456...jak to zrobić ?? Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Joohn Opublikowano 21 Września 2004 Zgłoś Opublikowano 21 Września 2004 ja bym to zrobil tak.. np. float rzeczywista = 123.456; long calkowita = rzeczywista; //tutaj nastepuje niejawne rzutowanie na typ calkowity,czyli czesc ulamkowa jest obcinana int czesc_ulamkowa = rzeczywista - calkowita; nie mam akurat pod reka kompilatora, ale mysle ze jakos tak to powinno dzialac:) pozdr. Joohn Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Polar Opublikowano 21 Września 2004 Zgłoś Opublikowano 21 Września 2004 Ja bym to zrobił tak ( ale druga liczba "ulamek" wyjdzie w przedziale od 0 do 1 ) : #include <conio.h> #include <iostream.h> #include <math.h> main() { double ulamek, calosc; // zmienne do modf double liczba = 123.456; // liczba ulamek = modf(liczba , &calosc); cout << "liczba = " << liczba << "ncalosc = " << calosc << "nulamek = " << ulamek ; getch(); } int czesc_ulamkowa = rzeczywista - calkowita; Twój kod działal by podobnie gdybyś zamiast int czesc_ulamkowa dał float czesc_ulamkowa. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
ParanoiK Opublikowano 21 Września 2004 Zgłoś Opublikowano 21 Września 2004 nie szybciej: double a = 123.456;cout << a - (int)a;? ;] Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Pjetal Opublikowano 22 Września 2004 Zgłoś Opublikowano 22 Września 2004 Paranoik na egzaminie zrobiłem jak ty ale zrobiwszy tak po cout<< ci da 0.456 a po przerobieniu na int to jest równe 0 a nie 456 bo przerabia cala liczbe lacznie z zerem a ze zero jest calkowite to da 0 a nie to co jest po przecinku to nie takie proste Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
ParanoiK Opublikowano 22 Września 2004 Zgłoś Opublikowano 22 Września 2004 Pomnóż sobie przez 1000 ;] Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
marcinEc Opublikowano 25 Września 2004 Zgłoś Opublikowano 25 Września 2004 Czy ktoś może wie jak najłatwiej w języku C++ z podanej liczby rzeczywsitej postaci xxx.xxx uzyskać część ułamką tzn. chodzi mi dokładnie o liczbę za przecinkiem czyli np. dla liczby 123.456 potrzebuję 456...jak to zrobić ?? Witam, to zalezy czy masz tylko wyswietlic te trzy cyfry (prosto), czy ogolny przypadek (bardzo trudny,np. liczba 1.4353453452242344534). Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
marcinEc Opublikowano 25 Września 2004 Zgłoś Opublikowano 25 Września 2004 nie szybciej: double a = 123.456;cout << a - (int)a;? ;] Ten kod zle dziala dla liczby ujemnej...Ale i tak nie spelnia zalozen :> Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Polar Opublikowano 25 Września 2004 Zgłoś Opublikowano 25 Września 2004 Znalazłem jeszcze coś innego funkcję ecvt() która zmienia ułamek na na string i od razu zapisuje jako całość , trzeba skonwetować na liczbe, dokładność zamiany jest na sztywno. :x W sumie to tylko mój wcześniejszy zmodyfikowany kod o ecvt(). #include<conio.h>#include<iostream.h>#include<math.h>#include<stdlib.h>main(){double ulamek, calosc; // zmienne do modfdouble liczba = 123.456; // liczbaint pozycja, znak;char * string;ulamek = modf(liczba , &calosc);cout << "liczba = " << liczba << "ncalosc = " << calosc << "nulamek = " << ulamek;string = ecvt(ulamek, 3 , &pozycja , &znak); // zamienia double na stringcout << endl << "calosc z ulamka = " << string;getch();} Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
magiczna_pała_ledżia_suck Opublikowano 10 Października 2004 Zgłoś Opublikowano 10 Października 2004 słuchaj stary, to wszystko co wyżej napisane to szpaks bo chłopaki nie zrozumieli dokładnie o co Ci chodziło ale ja wiem..... hmmm.. jak zwykle zresztą, zaraz dam Tobie złoty środek yyyy rozwiązanie Twojego problemu, o to on: float liczba,pom; int calk,ulamk; calk=(int)liczba; pom=liczba-pom; ulamk=0; while (pom!=0) { ulamk*=10; pom*=10; ulamk+=(int)pom; pom-=(int)pom; } o to Ci chodziło? haha o to! bo chodziło przecież żeby przedstawić część ułakową w pastaci całkowitej prawda? no już dobrze Piotruś nie płacz, masz rozwiązanie i już możesz iść w dalszą drogę... tylko uważaj... na tej drodze jest jeszcze dużo niebezpieczeństw, którym trzeba (niestety) stawić czoła.... hmmm... nawet podniesionego czoła, będzie dobrze tylko już nie łykaj tych leków i dziel się jedzeniem z kolegami z akademika no i nie świruj. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
magiczna_pała_ledżia_suck Opublikowano 10 Października 2004 Zgłoś Opublikowano 10 Października 2004 ja bym to zrobil tak.. np. float rzeczywista = 123.456; long calkowita = rzeczywista; //tutaj nastepuje niejawne rzutowanie na typ calkowity,czyli czesc ulamkowa jest obcinana int czesc_ulamkowa = rzeczywista - calkowita; nie mam akurat pod reka kompilatora, ale mysle ze jakos tak to powinno dzialac:) pozdr. Joohn bez sensu, dla wszystkich (prawie) przypadków będzie 0 (słownie: zero) Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
magiczna_pała_ledżia_suck Opublikowano 10 Października 2004 Zgłoś Opublikowano 10 Października 2004 nie szybciej: double a = 123.456;cout << a - (int)a;? ;] Ten kod zle dziala dla liczby ujemnej...Ale i tak nie spelnia zalozen :> dlaczego???? (int)a dla a ujemnego da w wynik ujemny więc wszystko w porządku! Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
marcinEc Opublikowano 11 Października 2004 Zgłoś Opublikowano 11 Października 2004 Człowieku 'magiczna-pało' niepotrzebna strata czasu z Twojej strony na wypisywanie tych bzdur. Skompilowałeś chociaż swój kod? Sprawdziłeś czy działa? To jest totalna bzdura! Po kilku poprawkach może coś by z tego było... Nie wiesz o co chodzi? O brak inicjalizacji zmiennych 'pało', o ile można się domyśleć, że liczba to nasza liczba, o tyle dalej jest już tylko gorzej... Wiem, że chodziło Ci o pomnożenie przez 10 przez co uzyskamy jedna cyfrę z ułamka ale coś Ci nie poszło... Nawet bardzo Ci nie poszło... A co do liczb ujemnych to czy dla liczby -123.456 cześć ułamkowa przedstawiona w ten sposób jak chciał autor pytania to dla Ciebie -456?? Można i tak... Bo nie ma tego w założeniach [sarkazm]. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
birdman Opublikowano 11 Października 2004 Zgłoś Opublikowano 11 Października 2004 double liczba = 123.456, wyn=0;int i=0;wyn=liczba;while ( wyn<-1 || wyn>1){ i++; wyn-=i;}cout<<wyn;moze nizbyt optymalnie ale chyba skutecznie Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...