Diskuze: Převod z dvojkové do desítkové
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.


Zobrazeno 12 zpráv z 12.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.


Mysím si že C# nezná ++n (vím že to zná C, ale C# nevím).
Každopádně jestli se snažíš inkrementovat n o jedna, tak to má být n++

// A ten algoritmus podle mě nebude fungovat
Ja myslím, že zná. Mělo by to fungovat stejně jako v C.
C# to zná, ale ono to přičte jedničku okamžitě, takže by se ten string začal "lámat" od 2. znaku
Čau,
pokud převádíš čísla z dvojkové do desítkové, tak se ty mocniny
násobí opačně. Poslední číslo se vynásobí 1 (20), další
předposlední 2 (21), předpředposlední 4 (22), ty to
děláš opačně.
no ale já tam mám nulu, takže by tam měla naskočit jednička když je to
++n ne?
a přihazuju screen,
co mi to píše, když to spadne.
A jestli C# zná ++x, tak se omlouvám, moje neznalost 
Pro získání číselné hodnoty z řetězce musíš použít metodu Parse().
int.Parse("5")
Convert se používá na číselné operace.
V C# k řezězci můžes přistupovat jako k poli znaků, takže
j[i].ToString()
a opdadne ti ten Substring().
Pak už by to mělo fungovat.
Už jsem to tu psal, každopádně, gcx11 to tu už psal, musíš
ten string převrátit. Doporučuji použít ToCharArray(), následně
Array.Reverse
Projeď to cyklem foreach a pokud na daném místě je jednička, tak přičti k
hodnotě nějakou další hodnotu.
Console.WriteLine("Program na převádění čísel z dvojkové do desítkové soustavy");
Console.WriteLine("Napište číslo ve dvojkové soustavě");
string j = Console.ReadLine(); //zadaný řetězec od uživatele př. 1100010
char[] c = j.ToCharArray(); // převedeme na char
Array.Reverse(c); // obrátíme řetězec
int i = 0; // pro zjištění aktuální pozice
double result = 0; // výsledek
foreach(char s in c)
{
if (s == '1') // pokud se na daném místě nacházi jednička
result += Math.Pow(2, i); // tak k výsledku přidáme hodnotu
i++;
}
Console.WriteLine(result);
Console.ReadKey();
1.) vymýšlíš kolo 
Convert.ToInt32(j, 2).ToString(); // vrátí výsledek
2.) pokud se chceš striktně držet algoritmického postupu, tak bych to řešil, tak že ten cykl obrátím. Půjdu od počet znaků mínis 1 k 0 a v každém kroku vynásobím číslo na daném indexu s druhou mocninou 2,ta k aby pro posledí číslici bylo 2 na 0.
string zadaneCislo = "1010";
int mezivysledek = 0;
for (int i = zadaneCislo.Length - 1; i >= 0; i--)
{
string s = zadaneCislo[i].ToString();
mezivysledek += int.Parse(s) * ((int)Math.Pow(2, zadaneCislo.Length - 1 - i));
}
Console.WriteLine(mezivysledek);
Console.ReadKey();
3.) pokud ten cykl potřebuješ mít striktně klasický:
for (int i = 0; i < zadaneCislo.Length; i++)
{
int mocnina = (int)Math.Pow(2, zadaneCislo.Length - 1 - i);
int cislice = int.Parse(zadaneCislo[i].ToString());
mezivysledek += mocnina * cislice;
}
Note: místo toho šíleného convertu používej int.Parse a C# zná ++n.
Super, ano měl jsem to obráceně, díky vám kluci moc! Ještě jsem to udělal takto:
Console.WriteLine("Program na převádění čísel z dvojkové do desítkové soustavy");
Console.WriteLine("Napište číslo ve dvojkové soustavě");
string j = Console.ReadLine(); //zadaný řetězec od uživatele př. 1100010
int l = j.Length; //délka znaků př. 7
double výsledek = 0; //pomocná proměnná
int c = 1; //pomocná proměnná
Console.WriteLine("Počet znaků je: {0}", l);
for (int i = 0; i < l; i++) //cyklus by se měl opakovat 7x - když je délka znaků 7
{
int n = l - c++;
int b = Convert.ToInt32(j.Substring(n, 1)); //b by měl být poslední znak v zadaným řetezci př. 110001(0), po proběhnutí cyklu 11000(1)0 atd.
výsledek = b * Math.Pow(2, i) + výsledek; //výsledek = 1. znak * 2 na i (i=0), potom se bude zvětšovat (viz. hlavní cyklus) + výsledek (pomocná proměnna zatím 0)
}
Console.WriteLine("Výsledek je {0}", výsledek); //po proběhnutí cyklu 7x by to mělo vypsat výsledek
Console.ReadKey();
Moje řešení:
using System;
namespace _2_do_10
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Zadej číslo v binarní soustavě:");
string cislo = Console.ReadLine();
double pomocna = 0;
int n = cislo.Length - 1;
for(int i=0; i <= cislo.Length-1; i++){
pomocna += (cislo[i] - '0') * (Math.Pow(2, n));
n--;
}
Console.WriteLine("{0}", pomocna);
}
}
}
Zobrazeno 12 zpráv z 12.