Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Pomoc s programom

Zdravím,
Dostal som za úlohu naprogramovať program, ktorý prevedie čísla z dvojkovej číselnej sústavy do desiatkovej číselnej sústavy pomocou
príkazu while v jazyku C. Program mi nejako nefunguje a neviem sa ďalej pohnúť tak ak by sa našiel niekto kto by pomohol bol by som rád :)
Tu je môj kód:

#include<stdio.h>
int main ()
{
int moc2,n,cifra;
int cislo10=0;
printf ("Zadaj cislo v 2 ciselnej sustave:\n");
scanf ("%d",&n);
moc2=1;
while (n=!0)
{
printf ("%d\n",n);
cifra=n%10;
cislo10=cislo10+moc2*cifra;
n=n/10;
moc2=moc2*2;
}
printf ("Zadane cislo v 10 ciselnej sustave %d",cislo10);
getchar ();
}

Vopred ďakujem za pomoc :)
PS: ak by mi sem niekto vedel napísať kód, ktorý by spravil to isté ale naopak (z 10 sústavy do 2 sústavy) bol by som veľmi rád :)

Předmět Autor Datum
Co přesně znamená, že nefunguje? while (n != 0)
Wikan 06.04.2017 19:10
Wikan
Po zadaní čísla v dvojkovej sústave po spustení programu začne v stĺpci vypisovať samé jednotky.
It_noobik 06.04.2017 19:11
It_noobik
Jak si dosiel k tomu algoritmu printf ("%d\n",n); cifra=n%10; cislo10=cislo10+moc2*cifra; n=n/10; mo…
MM.. 07.04.2017 09:30
MM..
Úplně blbě to rozhodně není a v zásadě je to funkční. I když bych to takhle sám nenapsal.
Wikan 07.04.2017 09:43
Wikan
Jaj hej uz to chapem on konvertuje defaulto desiatkovu na desiatkovu :-D:-D Ano moze to fungovat. (j…
MM.. 07.04.2017 09:49
MM..
Toto je standart "ajtaku" ze stredni. Par jich v praci mame a nenechal bych je ani vymenit ramku v p…
Dwane Dibbley 07.04.2017 10:39
Dwane Dibbley
Spatřujme vždy v lidech lepší stránky: autor je obeznámen s dělením v různých číselných soustavách (… poslední
hynajs 07.04.2017 10:56
hynajs
Zamyslis sa po krokoch ze jak to prevadzas rucne. A potom presne tie ktroky napis do programu. Ne zi…
MM.. 07.04.2017 09:33
MM..

Jaj hej uz to chapem on konvertuje defaulto desiatkovu na desiatkovu :-D:-D
Ano moze to fungovat. (je to ale uplna hovadina robit to takto v praxi - lebo z nizsieuvedenych dovodov max 10ciferne cislo, co je v 2kovej dost malo).
P.S. a nechapem preco neucia skoly deti veci seriozne, ale taketo nezmysly. prevadza mu to tam vsetko scanf a printf, a cely program je nezmysel, ale v skole u ucitela to urcite je ze hura. :-)

Spatřujme vždy v lidech lepší stránky: autor je obeznámen s dělením v různých číselných soustavách (líp než já, protože mě na první pohled ani nenapadlo, že by to mohlo fungovat :-D ).
A úloha převést řetězec znaků představujících zápis v jedné soustavě na řetězec v druhé je pěkné cvičení na algoritmus pro elévy.

Zamyslis sa po krokoch ze jak to prevadzas rucne. A potom presne tie ktroky napis do programu. Ne ziadne ine kroky. Da sa to 2 sposobmi, jeden z nich je jednoduchsi ale cifry vypisuje naopak.
Vies si to previest rucne na papieri? S pomocou kalkulacky napriklad. Preved cislo 101010 na desiatkovu. Robis co?
P.S. resp. v pc je to cele hovadina lebo nerobis operacie nad ciframi, a interne sa vsetko uklada v dvjkovej. Ty budes robit asi defakto konverziu string na integer. A ne prevod sustav.

... tvoj problem je ze scanf ti to binarne cislo previedol uz do integeru a predpokladal pri tom 10kovu sustavu, a nemas implementovane binarne delenie. Musis si to na vstupe brat ako string, a spracovavat jednotlive cifry (znaky stringu). Tym si prevedies vsetupnu sustavu X do nativneho integeru. Ten si zas mozes potom vypisat na obrazovku prevodom na string do inej sustavy.

Zpět do poradny Odpovědět na původní otázku Nahoru