Ahojte
Len tam som rozmyslal z dlhej chvile ze si spravim program ktoremu zadam lubovolne cislo v desiatkovej sustave napr 5 a program mi to prevedie do dvojkovej sustavy vysledok by mal byt 101...
Ja som len tak skusal nieco zatial som sa dostal po toto:
"predom upozornujem ze to co som vytvoril nefunguje a ja som si vedomi toho ze to mam zle len vam chcem ukazat ako som nato isiel ja"
#include <iostream>
float funkcia(float);
int main()
{
using namespace std;
float cislo;
cout << "Zadaj lubovolne cislo v desiatkovej sustave: ";
cin >> cislo;
float vysledok = funkcia(cislo);
cout << "Cislo v dvojkovej sustave je: " << vysledok << endl;
cin.get();
cin.get();
return 0;
}
float funkcia(float n)
{
float hodnota = n;
float hodnota2;
using namespace std;
while (hodnota > 0)
{
hodnota = hodnota /2;
hodnota2 = hodnota - n / 2;
if (hodnota2 > 0)
cout << "1";
else
cout << "0";
}
return hodnota;
}
Ja som sa pasoval s tymi zvyskami a tak hh. Mne by mozno pomohlo keby tam v tej mojej funkcii ako delim to cislo 7.0 / 2 tak bude vysledok 3.5 keby som vedel ako mam chitit ten samotny zvysok tych 0.5 a ten iba porovnavat ci je vecsi alebo rovny nule a podla toho zapisat hodnotu 1 alebo 0 tak by som to asi aj vedel spravit ale nevedel som ako nato ak sa to tak vobec da :)
Mohli by ste mi ukazat co mam spravit inak alebo popripade aj uplne iny sposob ako by sa to dalo spravit? :)
Dakujem
Fórum › C / C++
Prevod sustav
protože do dvojkovej soustavy nemůžeš převádět číslo s desetinou čárkou, bude stačit místo "float hodnota" proměnná typu int, a pak když dělíš 7/2 je výsledek 3 zbytek po dělení můžeš zjistit 7%2(to se rovná 1)
s tiskem v binární soustavě je to těžší (cout poskytuje funkce pro nastavení výstupu v osmičkovej soustavě- cout<<oct- a šestnáckovej- cout<<hex- , ale do dvojkovej neznam)
#include <iostream>
#include <string>
int funkcia(int n);
using namespace std;
string bin;
void funkcia(int n){
int hodnota = n;
int hodnota2;
while (hodnota != 0) {
hodnota2 = hodnota% 2
hodnota = hodnota /2;
bin+=hodnota2;
};
cout << "Cislo v dvojkovej sustave je: ";
for(int a=bin.size; ;a--)
cout << bin[a-1];
nevim jesli to bude fungovat...zkus to
To MaS : ja som to z toho tvojho kodu moc nepochopil. Kde mas hlavnu funkciu main? A henta funkcia ktoru tam mas rozpisanu to si napisal iba ze co ma byt cisto v tej funkcii ktoru som si vytvoril? Ak ano je tam dost veci ktorim nerozumiem napr: bin+=hodnota2; alebo for(int a=bin.size; ;a--) a string bin;
cout << bin[a-1];
ale docela ma to zaujimalo a skusal som nad tym sediet a napadlo ma taketo nieco bez vlastnej funkcie :)
#include <iostream>
int main()
{
using namespace std;
int cislo;
cout << "Zadaj lubovolne cislo v desiatkovej sustave: ";
cin >> cislo;
int hodnota = cislo;
float hodnota2;
while (hodnota > 0)
{
hodnota2 = hodnota%2;
if (hodnota2 > 0)
{
hodnota = hodnota /2;
cout << "1";
}
else
{
cout << "0";
hodnota = hodnota /2;
}
}
cin.get();
cin.get();
return 0;
}
Funguje to a ide mi to paradne ;)
omlouvám se já jsem si to nevyzkoušel, takže tam je dost chyb........tady je to celé (správně to převádí celá čísla)
#include <iostream>
#include <string>
void funkcia(int);
using namespace std;
string bin;
int main()
{
int cislo;
cout << "Zadaj lubovolne cislo v desiatkovej sustave: ";
cin >> cislo;
funkcia(cislo);
cin.get();
cin.get();
return 0;
}
void funkcia(int n){
int hodnota = n;
int hodnota2;
while (hodnota != 0) {
hodnota2 = hodnota% 2;
hodnota = hodnota /2;
bin+=('0'+hodnota2); //přidá to do řetězce číslici-'0' má ASCII kód 48, pokud je "hodnota 2" rovna 0 ASCII kód se
// nezmění a přidá se "0", pokud je "hodnota2" rovna 1 ASCII kód je 49=='1' atd.
};
cout << "Cislo v dvojkovej sustave je: ";
for(int a=bin.size(); a>0;a--)
cout << bin[a-1];
}
ten tvuj příklad mi nějak nejde (pokud zadám 2, vypíše to 01, což je podle mého názoru špatně)->musí se to vypsat pospátku a proto tam mám ten cyklus for(int a=bin.size(); a>0;a--)....
To MaS :
for(int a=bin.size(); a>0;a--)
Není zrovna moc dobrý nápad, protože se bude pokaždé zjišťovat bin.size(), která, né zrovna v tomto případě, ale při větším počtu prvků může zabírat spoustu času a výkonu.
Udělal bych to spíše takto:
int a = bin.size();
for(int n = 0; n <= a; n++)
cout << bin[a-n];
To Bald3rr : mam pocit ze prvni argument cyklu for se vykona pouze pri startu cyklu... pokud by to bylo v druhem nebo tretim pak by to opravdu krasne zlikvidlovalo rychlost...
sem o tom zakladal i jedno vlakno :D 2MB retezec a kdyz se prochazel s tim strlen v podmince foru tak to bylo neskutecne pomale
čaute programatori, mal by som jednu taku prosbičku, s programovanim ešte len začinam a sedim nad riešením tejto ulohy už dosť dlho a nie a nie sa k tomu dostať, tak Vas chcem poprosiť ci by ste mi nevedeli len slovne napisať algoritmus takehoto zadania :
Navrhni algoritmus pre prevod racionálnych čísel z desiatkovej sústavy do ľubovoľnej inej
(od 2-kovej po 16-stkovú). Vstupy do algoritmu budú: číslo N ( N patrí do (0,1) ) v desiatkovej
sústave a základ sústavy z ( z patrí do <2........16> ), do ktorej sa bude číslo prevádzať. Prevod urobte na
10 platných desatinných miest, alebo aj menej, ak nastane prípad, že číslo má v sústave
z desatinný rozvoj menej ako 10 miest.
To THE_Megamix : tak si najdi jak se prepocitava desitkova soustava s desetinnou casti na binarni ...
a kdyz ses schopnej provest ty kroky tak, aby si to na papire prevedl, tak bys mohl zvladnout i ten algoritmus
mimo to je pomerne trivialni
no poznam ale nepoznam C++ .. hovorim ze sa v tomto obore pohybujem asi 5 dni a nikto mi neporadil zatial konkretnejšie
k tomu, co ty chceš potřebuješ nějaký ten cyklus, znát proměnné a jak se s nimy pracuje, ale to spíš přeháním, k tomuhle potřebuješ fakt minimum, co se naučíš za 5 minut. Krom toho na internetu je spousta takovýchto zdrojáků, takže něco najít nebude problém.
Pokud chceš něco konkrétnějšího, tak se na to musíš nejprve zeptat, ty si sem v klidu napíšeš zadání DÚ a myslíš, že dostaneš hotovej program, to ani omylem - taky předveď, že máš snahu to pochopit, jinak ti nikdo radit nebude.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
C++ prevod z M/s na KM/H — založil defender
Prevod mien — založil Kent
Prevod z VB6 do C# — založil maxpower
8080 prevod — založil Jurosh
Moderátoři diskuze