Diskuze: Převod z hexadecimální soustavy do binární a opačně
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 29 zpráv z 29.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Koukni se na můj program - převod mezi všemi soustavami:
http://www.itnetwork.cz/index.php?…
Můžeš použít fce C#.
Převede číslo z 16kové na dekadickou.
Convert.ToInt32(hexvalue, 16);
A pak jej převedeš na binární:
Convert.ToString(Convert.ToInt32(hexvalue, 16), 2);
Maximum nastav obdobně. Převedeš si číslo na dekadické a zjistíš jeho velikost, poté jen podmínka.
Můžeš se také inspirovat programem od matesaxe: http://www.itnetwork.cz/index.php?…
Dáš to do try bloku - který pak musí obsahovat buď cath, nebo finally, nebo obojí
try
{
\\kód podezdřelý z vyvolání vyjímky
}
catch
{
\\ kód který se provede, když kód hoře selže
}
Pokud chceš vyvolat hlášku dej do catch Exception:
catch (Exception e)
MessageBox.Show(e.Message, "Error - Chyba");
Tím vyvoláš hlášku o zprávě,...
Pardon:
catch (Exception e)
{
MessageBox.Show(e.Message, "Error - Chyba");
}
A kdyby jsis chtěl hlášku zkopírovat, tak to dej do stringu - e.ToString() v tomto případě a string pak vlož někam, odkud můžeš kopírovat - TextBox,...
mardon není to e.ToString() ale e.Message - to je string,...
No jak máš udělán vstup uživatele? TextBoxem? Musíš vzít prvek pro vstup uživatele a jeho obsah převést do čísla - třeba pokud máš vstup zachycen do textboxu se jménem tb:
int g;
if(int.TryParse(tb.Text, g))
//povedlo se - g obsahuje int z textu
else
//nepovedlo se - nyní musíš ošetřit písmena, která nahrazují číslice,...
no a pak bude podmínka:
if(g < 10000)
Aha. No tak to snad již umíš - místo vstupu z textboxu tam bude vstup z konzole,...
ano, vím, ale mám problém s tou vyjímkou funguje to takhle
int dekaCislo;
string hexaCislo;
string binCislo;
Console.Write("Zadej číslo v hexa soustavě: ");
hexaCislo = Console.ReadLine();
try
{
binCislo = Convert.ToString(Convert.ToInt32(hexaCislo, 16), 2);
dekaCislo = Convert.ToInt32(hexaCislo, 16);
if (!(dekaCislo < 256))
{
Console.WriteLine("chyba");
}
else
{
Console.WriteLine(binCislo);
}
}
catch (Exception e)
{
Console.WriteLine("Chyba");
}
a když
Console.WriteLine(binCislo);
vložim až za catch, tak to překladač nepřeloží.
První věc - použij to tryParse
float vysledek = 0;
if (float.TryParse(Console.ReadLine(), vysledek) && vysledek.Length < 10000)
Console.WriteLine("Výsledek je : " + Convert.ToString(Convert.ToInt32(vysledek, 16), 2));
else
Console.WriteLine("Chyba");
Pokud nechceš hlášku o chybě, či cokoliv jiného z Exception, tak ji nemusíš dávat - naopak je to nežádoucí - v takovém případě použij jenom catch,...
Jen jsem si nebyl jistý, jestli to nebude vadit podmínce - když nechám prázdný konstruktor - ale nemělo by - takže tam dej jenom
float vysledek;
Jinak na tom čísle nezáleží - floatTryParse jej přepisuje. Jedná se o inizćializaci - ne všude můžeš mít prázdný konstruktor - nekdy mu musíš přiřadit hodnotu - ikdyž defaultní nějaká je vždy,...
Jinak jak jsis všiml, vyvaruj se zbytečným mezi krokům - jinak ti zbytečně kyne kód.
Zobrazeno 29 zpráv z 29.