Chceš se vypracovat až k výdělku 160.000 Kč/měsíc? Důležité je začít. Staň se programátorem díky rekvalifikačnímu kurzu! Začni dnes!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Mezi 13:00 až cca 16:00 proběhne pravidelná odstávka sítě z důvodu aktualizace. Web bude po celou dobu nedostupný.
Avatar
matesax
Tvůrce
Avatar
matesax:30.4.2012 20:01

Dobrý den,
prosím o opravu tohoto kódu (nevím, co je na něm špatně) - Děkuji.

while (z != 0)
           {
               if ((z / 2).ToString().Contains(",") && a == 0)
               {
                   if (vysledek == 0)
                       vysledek = 1;
                   else
                       vysledek = float.Parse(z.ToString() + "1");
                   z = Convert.ToSingle(Math.Round(float.Parse(z.ToString().Replace(",", ",1"))));
               }
               else
               {
                   if (vysledek == 0)
                   {
                       vysledek = 0;
                       a = 1;
                   }
                   else
                       vysledek = float.Parse(z.ToString() + "0");
               }

           }
 
Odpovědět
30.4.2012 20:01
Avatar
David Čápka Hartinger
Tým ITnetwork
Avatar
Odpovídá na matesax
David Čápka Hartinger:30.4.2012 20:52

To je příšerné, to smaž :D

Stačí v cyklu while dělit číslo dvojkou, dokud nevyjde nula. Na zbytek po dělení je tu operátor %, např (53 % 2) vrátí 1. Výsledky si přidávej do stringu jako s = s + zbytek.ToString(). String poté jen převrátíš metodou s = s.Reverse();

EDIT: Algoritmus máš tady: http://www.matweb.cz/prevod
Další EDIT: Abych ještě řekl, co je tam špatně, tak hlavně to převádění na string (je zbytečné, pomalé, matoucí), navíc záleží na OS jaký máš desetinný oddělovač, tu čárky by ti anglické Windows nevzaly. Věčně tam něco konvertuješ, není to potřeba.

Nahoru Odpovědět
30.4.2012 20:52
You are the greatest project you will ever work on.
Avatar
matesax
Tvůrce
Avatar
Odpovídá na David Čápka Hartinger
matesax:30.4.2012 21:02

No tak převody mezi soustavami umím. :) Nehápu, jak tam zakomponovat %. :)

 
Nahoru Odpovědět
30.4.2012 21:02
Avatar
matesax
Tvůrce
Avatar
matesax:30.4.2012 21:58

Tak spodil jsem nakonec toto:

protected void DoBinarni()
       {
           while (z != 0)
           {
               a = ((int)z % 2).ToString() + a;;
               z = z / 2;
           }
       }

Kupodivu to funguje. :) Jen mi to hází hodně nul před číslo - tak to převádím do float,....

 
Nahoru Odpovědět
30.4.2012 21:58
Avatar
matesax
Tvůrce
Avatar
matesax:30.4.2012 22:14

Vyřešeno:

protected void DoBinarni()
       {
           while ((int) z != 0)
           {
               a = ((int)z % 2).ToString() + a;
               z = z / 2;
           }
       }
 
Nahoru Odpovědět
30.4.2012 22:14
Avatar
David Čápka Hartinger
Tým ITnetwork
Avatar
Odpovídá na matesax
David Čápka Hartinger:30.4.2012 22:30

Oproti tomu prvnímu docela rozdíl ;)

Nahoru Odpovědět
30.4.2012 22:30
You are the greatest project you will ever work on.
Avatar
matesax
Tvůrce
Avatar
matesax:1.5.2012 7:49

Tak mám problém i s opačným převodem:

public void ZBinarni()
       {
           float b = 0;
           int f = z.ToString().Length; //// z je číslo k převodu do bin. soustavy,...;
           string x = "";
           while (z.ToString().Length - b > 0)
           {
               x = z.ToString().Substring(f - 1, f);
               if (x == "1")
                   mezipocet = (float) (Math.Pow(2, b));
               vysledek = vysledek + mezipocet;
               f--;
               b++;
           }
       }

Hlásí mi to, že Substring je mimo rozsah. Děkuji za pomoc.

 
Nahoru Odpovědět
1.5.2012 7:49
Avatar
matesax
Tvůrce
Avatar
Odpovídá na matesax
matesax:1.5.2012 7:51

Index a délka musí odkazovat na umístění v rámci řetězce.
Název parametru: length

 
Nahoru Odpovědět
1.5.2012 7:51
Avatar
matesax
Tvůrce
Avatar
matesax:1.5.2012 8:14

Pardon - moje chyba - vyřešeno. :)

 
Nahoru Odpovědět
1.5.2012 8:14
Avatar
matesax
Tvůrce
Avatar
matesax:1.5.2012 8:25

Mám ale jiný problém - při převodu velkého čísla se toto číslo převede formou E + Nešlo by s tím něco udělat?

 
Nahoru Odpovědět
1.5.2012 8:25
Avatar
Odpovídá na matesax
Drahomír Hanák:1.5.2012 10:07

Substring má dva argumenty a to index, od kterého chceš vybírat a počet znaků, které chceš vybrat. Zkus tam místo f dát 1. Pro převod z jakékoli soustavy do desítkové můžeš použít Hornerovo schéma. Spočívá v tom, že k výsledku přičítáš jednotlivé cifry čísla a vynásobíš je základem. vysledek = (vysledek+cifra)/za­klad; Tohle provedeš u každé cifry a nakonec vysledek vydělíš základem (pro dvojkovou soustavu 2, pro osmičkovou 8 apod.)

 
Nahoru Odpovědět
1.5.2012 10:07
Avatar
matesax
Tvůrce
Avatar
Odpovídá na Drahomír Hanák
matesax:1.5.2012 10:14

Děkuji - ale už jsem to vyřešil - problém byl v metodě - přepsal jsem ji na public a je to OK.

 
Nahoru Odpovědět
1.5.2012 10:14
Avatar
David Čápka Hartinger
Tým ITnetwork
Avatar
Odpovídá na Drahomír Hanák
David Čápka Hartinger:1.5.2012 11:40

To je zajímavé, jsem něvěděl, že nějaké takovéhle schéma existuje :)

Jinak jsem někde míval metodu, která převedla z desítkové do libovolné a další z libovolné do desítkové, vlastně je to jednoduché, jen se tam musí řešit zástupné znaky za čísla > 9. Jestli tady matesax něco vytvoří, možná by se to mohlo dát do sekce algoritmy.

EDIT: Tady to je, ale nějak jsem to nedopsal koukám :) http://www.itnetwork.cz/index.php?… a tu zpáteční už asi ani nemám.

Nahoru Odpovědět
1.5.2012 11:40
You are the greatest project you will ever work on.
Avatar
Odpovídá na David Čápka Hartinger
Drahomír Hanák:1.5.2012 12:05

Hornerovo schéma je velmi jednoduchý algoritmus. V Céčku jsem ho napsal tady: http://projects.drahak.eu/…i-algoritmu/

 
Nahoru Odpovědět
1.5.2012 12:05
Avatar
David Čápka Hartinger
Tým ITnetwork
Avatar
Odpovídá na Drahomír Hanák
David Čápka Hartinger:1.5.2012 12:35

Ty první dva vypadají dobře, nechceš nám je přidat do sbírky? :)

Nahoru Odpovědět
1.5.2012 12:35
You are the greatest project you will ever work on.
Avatar
Odpovídá na David Čápka Hartinger
Drahomír Hanák:1.5.2012 12:51

Určitě. Mám napsat i vysvětlení nebo jen ten příklad?

 
Nahoru Odpovědět
1.5.2012 12:51
Avatar
David Čápka Hartinger
Tým ITnetwork
Avatar
Odpovídá na Drahomír Hanák
David Čápka Hartinger:1.5.2012 13:21

Ideálně i to vysvětlení, podle mne je důležité, aby člověk nejdříve pochopil co vlastně dělá, než vidí kód :)

Nahoru Odpovědět
1.5.2012 13:21
You are the greatest project you will ever work on.
Avatar
Tommy
Neregistrovaný
Avatar
Tommy:20.12.2012 19:22

Zdravím lidi.... pomůžete mi prosím někdo? mám podobný problém s převodem do binární soustavy, mě však nefunguje vůbec příkaz string... Takže to zkouším s přidáváním do pole... pracuji v programu MS Visual Studio... vytvořil jsem něco takového:
#include <stdio.h>
int main(void) {
int z,a, *pole;
printf("Zadejte cislo: \n");
scanf("%d", &z);
while ((int) z != 0)
{
a = ((int) z % 2);
*pole = a;
z = z / 2;
printf("%d", *pole);
}
return 0;
}

ale stále mi to nefunguje... poradíte mi prosím někdo?

 
Nahoru Odpovědět
20.12.2012 19:22
Avatar
Luboš Běhounek Satik:20.12.2012 19:27

Pro vkladani kodu pouzivej tag code, takhle se to neda cist :)

aby jsi mohl pouzivat string, musis ho nejdriv nainkludovat

#include <string>
Nahoru Odpovědět
20.12.2012 19:27
https://www.facebook.com/peasantsandcastles/
Avatar
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na Tommy
Lukáš Hruda:20.12.2012 19:37

Podle kódu soudim že to píšeš v C, tam string nexistuje, jelikož string je třída a C třídy vůbec nemá.

 
Nahoru Odpovědět
20.12.2012 19:37
Avatar

Neregistrovaný
Avatar
Odpovídá na Lukáš Hruda
:20.12.2012 19:44

Ano... píšu to v C... poradíš mi teda prosím, jak to rozchodit? potřebuju aby mi to klasicky převádělo číslo z desítkové do dvojkové soustavy... tak jsem si nastavil dělení se zbytkem a aby mi to zbytky ukládalo do pole, ale to mi nejde :/

 
Nahoru Odpovědět
20.12.2012 19:44
Avatar
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na
Lukáš Hruda:20.12.2012 19:52

Já se v tom kódu moc nevyznam, ale z toho co vidim zapisuješ ty zbytky pořád do prvního prvku (*pole), musíš první zapsat do pole[0], druhej do pole[1] atd. Navíc ten pointer neni inicializovanej, musíš mu přidělit paměť. A proč vůbec to pole děláš přes pointer, nemůžeš udělat klasický statický pole?

 
Nahoru Odpovědět
20.12.2012 19:52
Avatar
Tommy
Neregistrovaný
Avatar
Tommy:20.12.2012 19:57

Já jsem se řídil jen podle návodů na internetu... Napíšeš mi prosím, jak bys to udělal ty? Díky moc ;)

 
Nahoru Odpovědět
20.12.2012 19:57
Avatar

Neregistrovaný
Avatar
:20.12.2012 20:18

Prosím... pomůžeš mi s tím? :D

 
Nahoru Odpovědět
20.12.2012 20:18
Avatar
Tommy
Neregistrovaný
Avatar
Odpovídá na Lukáš Hruda
Tommy:20.12.2012 20:29

Prosím Tě, věděl bys, jak co nejjednodušeji napsat funkční převod z desítkové do dvojkové soustavy? :P

 
Nahoru Odpovědět
20.12.2012 20:29
Avatar
David Čápka Hartinger
Tým ITnetwork
Avatar
Odpovídá na
David Čápka Hartinger:20.12.2012 20:32

Obecně je to takhle:

int vysledek = cislo;
int i = 0;
do
{
        int v = vysledek / 2; // celočíselně
        int zbytek = vysledek % 2;
        vysledek = v;
        pole[i] = zbytek; // tady si do pole uložíš zbytek
        i++;
} while (vysledek != 0);

Do céčka si to převeď už sám, jistě to bude triviální úprava. Pole musíš pak otočit, jinak to bude pozpátku.

Nahoru Odpovědět
20.12.2012 20:32
You are the greatest project you will ever work on.
Avatar
matesax
Tvůrce
Avatar
Odpovídá na David Čápka Hartinger
matesax:20.12.2012 20:35

Nač otáčet - ať ukládá do zásobníku...

 
Nahoru Odpovědět
20.12.2012 20:35
Avatar
Tommy
Neregistrovaný
Avatar
Odpovídá na matesax
Tommy:20.12.2012 20:36

Díky, ale to je pro C#... nikoliv pro C

 
Nahoru Odpovědět
20.12.2012 20:36
Avatar
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na Tommy
Lukáš Hruda:20.12.2012 20:38

Tim že tu otázku napíšeš 3x si moc nepomůžeš.

#include <stdio.h>

char* dec_to_bin(int num)
{
  char* binary;
  int sub,length,i;
  for(sub=1,i=0;num/sub>0;sub*=2,i++);
  if(i == 0)
  {
    binary = "0";
    return binary;
  }
  length = i;
  binary = malloc(sizeof(char) * (length + 1));
  binary[length] = '\0';

  for(i=0;num>0;i++)
  {
    binary[length - i - 1] = (num % 2) + 48;
    num /= 2;
  }
  return binary;
}

int main()
{
  int num;
  char* bin;
  printf("Zadej cislo: ");
  scanf("%i",&num);
  bin = dec_to_bin(num);
  printf("%s",bin);
  free(bin);

  /*getchar();
  getchar();*/
}
 
Nahoru Odpovědět
20.12.2012 20:38
Avatar
Tommy
Neregistrovaný
Avatar
Odpovídá na David Čápka Hartinger
Tommy:20.12.2012 20:38

A nepomohl bys mi prosím trochu víc? Já jsem už našel spoustu i v jiných jazycích... ale když jsem zkoušel "přepsat" do Céčka, nikdy mi to nefungovalo... natož otočení pole :(

 
Nahoru Odpovědět
20.12.2012 20:38
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Lukáš Hruda
Kit:20.12.2012 20:44

Nikde v tom příkladu nevidím převod z desítkové soustavy. Pouze %d u scanf(). To tak zadávajícímu stačí?

Nahoru Odpovědět
20.12.2012 20:44
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na Kit
Lukáš Hruda:20.12.2012 20:46

Jak to myslíš že nevidíš převod z desítkové soustavy?

 
Nahoru Odpovědět
20.12.2012 20:46
Avatar
David Čápka Hartinger
Tým ITnetwork
Avatar
Odpovídá na Tommy
David Čápka Hartinger:20.12.2012 20:47

Napsal jsem ti téměř celý program, nějakou minimální snahu budeš muset vyvinout, celé to za tebe psát nebudu, navíc v céčku nedělám.

Nahoru Odpovědět
20.12.2012 20:47
You are the greatest project you will ever work on.
Avatar
matesax
Tvůrce
Avatar
Odpovídá na Tommy
matesax:20.12.2012 20:47

To, že je to v C# ti nebrání to předělat do jiného jazyka...

Vylepšená verze:

private string ConvertToBase(int numberOfBase, int value)
{
    Stack<char> result = new Stack<char>();

    while (value > 0)
    {
        int rest = value % numberOfBase;
        result.Push(rest > 9 ? Convert.ToChar(rest + 55) : rest.ToString()[0]);
        value = (value - rest) / numberOfBase;
    }

    return new string(result.ToArray());
}

private int ConvertFromBase(int numberOfBase, string value)
{
    int result = 0;

    for (int index = 0; index < value.Length - 1; index++)
        result = (result + GetNumber(value[index])) * numberOfBase;

    return result + GetNumber(value[value.Length - 1]); ;
}

private int GetNumber(char val)
{
    try
    {
        return int.Parse(val.ToString());
    }
    catch
    {
        return (int)val - 55;
    }
}
 
Nahoru Odpovědět
20.12.2012 20:47
Avatar
David Čápka Hartinger
Tým ITnetwork
Avatar
Odpovídá na matesax
David Čápka Hartinger:20.12.2012 20:52

To jsi asi nikdy neviděl céčko, tvá bilance užitečných a neužitečných příspěvků v diskuzích je dosti nevyvážená.

Nahoru Odpovědět
20.12.2012 20:52
You are the greatest project you will ever work on.
Avatar
matesax
Tvůrce
Avatar
Odpovídá na David Čápka Hartinger
matesax:20.12.2012 20:56

Chceš mi tím říci, že C nemůže násobit a sčítat? (A co se týče převodu čísel na znaky - to si může udělat třeba switchem...)

 
Nahoru Odpovědět
20.12.2012 20:56
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Lukáš Hruda
Kit:20.12.2012 20:56

Převod z desítkové soustavy do interního formátu přece děláš funkcí scanf("%d",&num); Proto se ptám, zda to tak zadávajícímu stačí. Vlastně jen řešíš výstup čísla ve dvojkové soustavě, ale ne převod.

Nahoru Odpovědět
20.12.2012 20:56
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na Kit
Lukáš Hruda:20.12.2012 21:03

Já to číslo ale načítam v desítkový soustavě, k čemu myslíš že je tam ta funkce dec_to_bin? Vypisuje se to nakonec jako řetězec, kterej ta funkce vrací přes pointer.

 
Nahoru Odpovědět
20.12.2012 21:03
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Lukáš Hruda
Kit:20.12.2012 21:05

Tvá funkce dec_to_bin() s desítkovou soustavou vůbec nepracuje.

Nahoru Odpovědět
20.12.2012 21:05
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na Kit
Lukáš Hruda:20.12.2012 21:18

Přebírá jako parametr proměnnou typu int (číslo v desítkový soustavě) a převede ho do textový podoby toho čísla v binární soustavě. Ten text pak vrátí. Nevim jak jinak to myslíš aby pracoval s desítkovou soustavou.

 
Nahoru Odpovědět
20.12.2012 21:18
Avatar
Tommy
Neregistrovaný
Avatar
Tommy:20.12.2012 22:06

Díky moc... jen bych ještě jako laik potřeboval poradit, jak v programu MS Visual Studio vytvořit .exe soubor prosím... omlouvám se za hloupé dotazy, jsem vážně začátečník...

 
Nahoru Odpovědět
20.12.2012 22:06
Avatar
Luboš Běhounek Satik:20.12.2012 22:13

jakmile program spustis, tak se vytvori exe soubor ve slozce projektu/bin/debug

Nahoru Odpovědět
20.12.2012 22:13
https://www.facebook.com/peasantsandcastles/
Avatar
Tommy
Neregistrovaný
Avatar
Tommy:20.12.2012 22:22

A jak je pls možný, že když spouštím zkoušku ještě v programu MS Visual Studio, chce to po mě stisknutí libovolné klávesy na ukončení a v již vytvořeném .exe souboru se vypne hned s výsledkem, takže ani není možné ho přečíst?

 
Nahoru Odpovědět
20.12.2012 22:22
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Lukáš Hruda
Kit:20.12.2012 23:02

Datový typ int není v desítkové soustavě. Reprezentuje číslo ve dvojkovém doplňku.

Nahoru Odpovědět
20.12.2012 23:02
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na Kit
Lukáš Hruda:20.12.2012 23:16

To je sice pravda, ale když s nim pracuješ tak ho chápeš jako číslo v desítkový soustavě. Uživatel ho zadává v desítkový soustavě. Pochybuju že by to měl převádět z textovýho řetězce, reprezentujícího číslo. Myslim že přesně takhle to chtěl.

 
Nahoru Odpovědět
20.12.2012 23:16
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Lukáš Hruda
Kit:21.12.2012 10:22

V desítkové soustavě je datový typ decimal, který je v C#, ale není v C. Když pracuji s datovým typem int, chápu ho jako číslo ve dvojkovém doplňku a podle toho s ním také pracuji.

Nahoru Odpovědět
21.12.2012 10:22
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Tommy
Neregistrovaný
Avatar
Tommy:21.12.2012 20:33

Poradíte mi prosím??

#include <stdlib.h>
#include <stdio.h>

int main(int argc, char *argv[]) {
int val, i, j;
char str[sizeof(int) * 8];
printf("Hodnota v desitkove soustave:");
scanf("%d", &val);
i = 0;
while (val > 0) {
str[i] = (val % 2) + 48;
val /= 2;
i++;
}
for (j = i - 1; j >= 0; j--) printf("%c", str[j]);
printf(" v binarni soustave\n");
printf ( "Press Enter to continue..." );
getchar ();
return 0;
}

s velkou pomocí už jsem nějak na takovéhle úrovni... potřeboval bych pomoct s pár maličkostma... tak třeba potřeboval bych tam dát podmínku if a else... protože potřebuju aby kdyžto bude například záporné číslo nebo písmena, aby mi to napsalo chybovou hlášku... jenže jakmile tam dám místo while if, přestane mi fungovat převod do binární soustavy a vždy mi napíše výsledek 1
...potom bych ještě potřeboval pomoct s tím, že když tu aplikaci spustím ještě v programu MS Visual studio, chce to po mě stisknutí klávesy pro ukončení, ale ve vytvořené .exe aplikaci se ukončí automaticky spolu s výsledkem, takže výsledek ani nejde přečíst....
...poradíte mi prosím? :D

 
Nahoru Odpovědět
21.12.2012 20:33
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Tommy
Kit:21.12.2012 20:35

Pořád ti nefunguje vkládání zdrojového kódu? Kdo to má po tobě číst?

Nahoru Odpovědět
21.12.2012 20:35
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Tommy
Neregistrovaný
Avatar
Tommy:21.12.2012 20:45

Oprava

#include <stdlib.h>
#include <stdio.h>
int main(int argc, char *argv[]) {
     int val, i, j;
     char str[sizeof(int) * 8];
     printf("Hodnota v desitkove soustave:");
     scanf("%d", &val);
     i = 0;
     while (val > 0) {
           str[i] = (val % 2) + 48;
           val /= 2;
           i++;
           }
     for (j = i - 1; j >= 0; j--) printf("%c", str[j]);
     printf(" v binarni soustave\n");
         printf ( "Press Enter to continue..." );
        getchar ();
         return 0;
}
 
Nahoru Odpovědět
21.12.2012 20:45
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Tommy
Kit:21.12.2012 21:18

Zkus před ten while vložit tohle:

if (val < 0) {
    val = -val;
    printf("-");
}

Převede ti to i záporná čísla.

Místo cyklu while by se tady hodil cyklus do-while, aby to převedlo i nulu.

Nahoru Odpovědět
21.12.2012 21:18
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Tommy
Neregistrovaný
Avatar
Tommy:21.12.2012 21:44

Paráda... tohle vyřešeno... teď už zbývá jen nějak zajistit, aby se mi .exe soubor nevypínal současně se zobrazením výsledku... nenapadá někoho něco prosím?? Zkoušel jsem i

printf("Stisknete libovolnou klavesu pro ukonceni\n");
getchar();

když to zkouším spustit v MS VS, normálně je třeba stisknout klávesu na vypnutí... ale v .exe souboru se to vypíná hned :(

 
Nahoru Odpovědět
21.12.2012 21:44
Avatar
Tommy
Neregistrovaný
Avatar
Tommy:21.12.2012 21:59

Tak všem moc děkuji za pomoc ;) nějak jsem to splácal s pomocí... :D už to funguje :D

 
Nahoru Odpovědět
21.12.2012 21:59
Avatar
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na Tommy
Lukáš Hruda:22.12.2012 11:20

Musíš tam ten getchar dát 2x za sebou anebo dát jeden getchar za scanf, protože ten enter z toho vstupu ti zůstává ve frontě.

 
Nahoru Odpovědět
22.12.2012 11:20
Avatar
ajnstajnke
Člen
Avatar
ajnstajnke:2.1.2013 21:10

Napsal jsem převod z bin do dec takhle.

char[] binary = Console.ReadLi­ne().ToCharArra­y();
int dec = 0;
int multiplier = 1;

for (int i = binary.Length - 1; i >= 0; i--)
{
dec += (binary[i] == '1' ? 1 : 0) * multiplier;
multiplier *= 2;
}
Console.Write("{0}", dec);
Console.ReadKey();

 
Nahoru Odpovědět
2.1.2013 21:10
Avatar
matesax
Tvůrce
Avatar
Odpovídá na ajnstajnke
matesax:2.1.2013 21:16

Projdi si toto:

http://www.itnetwork.cz/…i-soustavami

A k vložení zdrojových kódů používej tagy code...

 
Nahoru Odpovědět
2.1.2013 21:16
Avatar
Nikol
Neregistrovaný
Avatar
Nikol:8.5.2013 9:10

neví někdo jak převést textový řetězec dobinární soustavy :(

 
Nahoru Odpovědět
8.5.2013 9:10
Avatar

Člen
Avatar
Odpovídá na Nikol
:8.5.2013 9:25

Něco jako

int value = Convert.ToInt32("10101010", 2);

Edit: špatně přečtená otázka. Tak nejjednodušší řešení je asi načíst hodnotu z řetězce a pomocí

Convert.ToString(value,base);

převést na binární string.

Editováno 8.5.2013 9:29
 
Nahoru Odpovědět
8.5.2013 9:25
Avatar
Odpovídá na matesax
Ondřej Kábrt:26.2.2022 13:50

Já to vyřešil teda takhle:

 
Nahoru Odpovědět
26.2.2022 13:50
Avatar
Ondřej Kábrt:26.2.2022 13:56
using System;

namespace _10do2
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Zadej číslo v 10-soustavě");
            int cislo = Convert.ToInt32(Console.ReadLine());
            string vystup = "";
            while (cislo != 0)
            {
                int zbytek = cislo % 2;
                vystup = zbytek + vystup;
                cislo = cislo / 2;
            }
            Console.WriteLine("Ve dvojkové soustavě: {0}", vystup);
            Console.ReadKey();


        }

    }
}
 
Nahoru Odpovědět
26.2.2022 13:56
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:28.2.2022 7:48

No, a proc to delite dvema a na integer nepouzijete shift operaci?
A proc otevirate tema z roku 2012? V roce 2022 to asi nebude nikdo cist. Kazdy si radeji zada nove.

 
Nahoru Odpovědět
28.2.2022 7:48
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 61 zpráv z 61.