Pomoc v c#
Pomoc v c#
mam takyto program, nic zloziteho.
//zdrojáky patria do code tagu
Problem je ye ked dam program spustit tak normalne ide, ale ked sa dostane k zvyraznenemu napise mi mi chybu:Unable to cast object of type 'System.ConsoleKeyInfo' to type 'System.IConvertible'.
Prosim pomoooooc. ak som nieco napisal nejasne doplnim. v c# som zaciatocnik, takze opatrne na mna
//zdrojáky patria do code tagu
Problem je ye ked dam program spustit tak normalne ide, ale ked sa dostane k zvyraznenemu napise mi mi chybu:Unable to cast object of type 'System.ConsoleKeyInfo' to type 'System.IConvertible'.
Prosim pomoooooc. ak som nieco napisal nejasne doplnim. v c# som zaciatocnik, takze opatrne na mna
-
manager666
Star
- Príspevky: 642
- Registrovaný: 12 aug 2007, 13:29
Re: Pomoc v c#
premenna "volba" je deklarovana ako Integer a ty do nej chces vlozit Char a navyse Console.ReadKey vracia vysledok ako ConsoleKeyInfo, ktory nejde skonvertovat na premennu typu Char... myslis, ze je to spravne ? 
odporucam ti pouzit premennu "volba" deklarovanu ako String a dalej pouzit funkciu Console.ReadLine
alebo
ak chces pouzit funkciu ReadKey, tak si zadeklarovat premmenu "volba" ako ConsoleKeyInfo a v cykle budes potom overovat vlastnost premmenej "volba" s nazvom KeyChar, cize:
while (volba.KeyChar != 'n');
odporucam ti pouzit premennu "volba" deklarovanu ako String a dalej pouzit funkciu Console.ReadLine
alebo
ak chces pouzit funkciu ReadKey, tak si zadeklarovat premmenu "volba" ako ConsoleKeyInfo a v cykle budes potom overovat vlastnost premmenej "volba" s nazvom KeyChar, cize:
while (volba.KeyChar != 'n');
Re: Pomoc v c#
diky za odpoved, pomohla mi, aj ked som to nakoniec nedokazal urobit sam, pretoze mi zacalo hadzat dalsie chyby, problem bol v tom ze som plietol readkey a read line.
Ale k dasliemu, teraz sa pokusam urobit program ktory by vypocital obvod kruhu a mam problem so stanovenim konstany pi. tak sa chcem spytat ci je to takto spravne const float pi = 3.1415926535f; a pripadne mi pomozte ze ako by mal vyzerat ten program. diky za odpovedi
Ale k dasliemu, teraz sa pokusam urobit program ktory by vypocital obvod kruhu a mam problem so stanovenim konstany pi. tak sa chcem spytat ci je to takto spravne const float pi = 3.1415926535f; a pripadne mi pomozte ze ako by mal vyzerat ten program. diky za odpovedi
Re: Pomoc v c#
konštanta pí je definovaná v System.Math.PI, takže nemusíš si ju písať sám
Re: Pomoc v c#
takze bude stacit ked to napisem do prietoru kde zadavam premenne? a ked budem chciet aby sa s nou pocitalo v priklade mam do prikladu napisat System.Math.PI? napr. v = 2* System.Math.PI* polomer?
Re: Pomoc v c#
áno, alebo:
using System;
niekde v zdrojáku:
v = Math.PI * polomer;
using System;
niekde v zdrojáku:
v = Math.PI * polomer;
Re: Pomoc v c#
diky za radu. ale zase mam problem, kto by to cakal? 
napisal som tento zdrojovy kod
//zdrojáky patria do code tagu
a pri deklaracii pi mi pise chybu :Error 1 Only assignment, call, increment, decrement, and new object expressions can be used as a statement a neviem co mam urobit aby to bolo spravne
napisal som tento zdrojovy kod
//zdrojáky patria do code tagu
a pri deklaracii pi mi pise chybu :Error 1 Only assignment, call, increment, decrement, and new object expressions can be used as a statement a neviem co mam urobit aby to bolo spravne
Re: Pomoc v c#
Ako prvé:
http://www.hojko.com/citajte-pred-zaloz ... 23064.html
Aby si mohol použiť konštantu pí triety Math (čiže Math.PI) je potrebné vložiť
-buď kľúčové slovo using a za ním menný priestor v ktorom sa požadovaná trieda nachádza, čiže using System; hneď na začiatok zdrojového súboru (nie metódy, ako to tam máš)
-alebo vložiť celú cestu ku konštante (bez použitia using), čiže double mojePí = System.Math.PI;
Má byť:
// úprava:
Console.WriteLine("vysl_sprava + v");
Dobre si pozri či je to naozaj to, čo si chcel aby bolo. S tou chybou to nemá nič spoločné.
http://www.hojko.com/citajte-pred-zaloz ... 23064.html
Aby si mohol použiť konštantu pí triety Math (čiže Math.PI) je potrebné vložiť
-buď kľúčové slovo using a za ním menný priestor v ktorom sa požadovaná trieda nachádza, čiže using System; hneď na začiatok zdrojového súboru (nie metódy, ako to tam máš)
-alebo vložiť celú cestu ku konštante (bez použitia using), čiže double mojePí = System.Math.PI;
Kód: Vybrať všetko
class Program
{
static void Main(string[] args)
{
System.Math.PI; // <-- TOTO JE TÁ CHYBA
double polomer;
Kód: Vybrať všetko
using System;
class Program
{
static void Main(string[] args)
{
double polomer;
...
Console.WriteLine("vysl_sprava + v");
Dobre si pozri či je to naozaj to, čo si chcel aby bolo. S tou chybou to nemá nič spoločné.
Re: Pomoc v c#
dik za upozornenie na ten kod, po pravde som pravidla necital a ocividne to bola chyba, diky za pomoc s pí, a do tretice diky za tu vyslednu spravu, tie uvodzovky tam byt nemaju. keby som isch tam nechal vypisalo by iba vysl_sprava+v a nie vysledok.
ESTE RAZ DAKUJEEEEEEEEEEEEM
//autoeditácia príspevku (27 Feb 2010, 17:45)
Teraz by som chcel urobit program, ktory vie pocitat aj obvod, ale aj obsah kruhu a rad by som to rozdelil do roznych tried. ze najprv by som napisal tu zakladnu tam by ste si vybrali ze o aku funkciu mate zaujem a potom v roznych class by boli definovane mozne varianty. v jednej obsah, v druhej obvod,... len neviem ako to spravit ze v tom zaklade by ste mali na vyber a ten by odkazoval na tie varianty. fuuu. niesom si isty ci som to popisal spravne, tak ako som to myslel.
ESTE RAZ DAKUJEEEEEEEEEEEEM
//autoeditácia príspevku (27 Feb 2010, 17:45)
Teraz by som chcel urobit program, ktory vie pocitat aj obvod, ale aj obsah kruhu a rad by som to rozdelil do roznych tried. ze najprv by som napisal tu zakladnu tam by ste si vybrali ze o aku funkciu mate zaujem a potom v roznych class by boli definovane mozne varianty. v jednej obsah, v druhej obvod,... len neviem ako to spravit ze v tom zaklade by ste mali na vyber a ten by odkazoval na tie varianty. fuuu. niesom si isty ci som to popisal spravne, tak ako som to myslel.
Re: Pomoc v c#
V tvojom prípade je to zbytočné rozdeľovať do tried. Daj to do jednej triedy, a tá bude obsahovať funkcie nesúce názov, ktorý určí čo by mala robiť. Konštrukciu metód si už definuj sám.
Ako to spraviť s možnosťou výberu?
-po spustení programu nechaj vypísať ponuku (voľby môžeš označiť napr. číslami). Po načítaní porovnaj čo daný užívateľ zvolil (napr. pomocou klauzule switch alebo podmienky if else a podľa toho vykonaj danú operáciu (zavolaj požadovanú metódu).
Aby si docielil nekonečný cyklus môžeš to hodiť do while.
Takýchto príkladov je na (tomto) fóre plno. Aj keď sa nevzťahujú na C#, syntax bude podobná (napr. pre C++).
A pomocou triviálnych znakov konštruujúcich slová (c# console menu), aplikované na vyhľadávač google.com som dostal očakávaný výsledok.
http://www.java2s.com/Code/CSharp/Langu ... lemenu.htm
Ako to spraviť s možnosťou výberu?
-po spustení programu nechaj vypísať ponuku (voľby môžeš označiť napr. číslami). Po načítaní porovnaj čo daný užívateľ zvolil (napr. pomocou klauzule switch alebo podmienky if else a podľa toho vykonaj danú operáciu (zavolaj požadovanú metódu).
Aby si docielil nekonečný cyklus môžeš to hodiť do while.
Takýchto príkladov je na (tomto) fóre plno. Aj keď sa nevzťahujú na C#, syntax bude podobná (napr. pre C++).
A pomocou triviálnych znakov konštruujúcich slová (c# console menu), aplikované na vyhľadávač google.com som dostal očakávaný výsledok.
http://www.java2s.com/Code/CSharp/Langu ... lemenu.htm
Re: Pomoc v c#
teraz som zacal robit program ktory vie vypocitat obvody a obsahy rovinnych obrazcov. obdlznik, stvorec, ....
zacal som tym ze som sa spytal ze aky obrazec chces? stvorec, obdlznik, ... a pokracoval som podmienkami if. ak stalcite s pocitate stvorec, ak stlacite o obdlznik, k kruh. a potom som zacal za jednotlive if rozoberat priklady. napisal som cod pre stvorec a normalne ho vypocitalo. vsetko ok, lenze ked som pokracoval a napisal za druhu podmienku if detaily obdlznika, stale pocitalo stvorec.
vedeli by ste mi pomoct?
zacal som tym ze som sa spytal ze aky obrazec chces? stvorec, obdlznik, ... a pokracoval som podmienkami if. ak stalcite s pocitate stvorec, ak stlacite o obdlznik, k kruh. a potom som zacal za jednotlive if rozoberat priklady. napisal som cod pre stvorec a normalne ho vypocitalo. vsetko ok, lenze ked som pokracoval a napisal za druhu podmienku if detaily obdlznika, stale pocitalo stvorec.
Kód: Vybrať všetko
string druh;
string vysl_sprava1 = "Obsah Stvorca je: ";
string vysl_sprava2 = "Obvod Stvorca je: ";
//string stvorec;
//string obdlznik;
//string kruh;
//string lichobeznik;
double a;
double b;
double polomer;
double mojePí = System.Math.PI;
double v;
double v1;
Console.WriteLine("zadaj rovinny utvar: Obdlznik - O, Stvorec - S, Kruh - K, Lichobeznik - L ");
druh = Console.ReadLine();
if (druh == "s") Console.WriteLine("Pocitas stvorec");
Console.Write("zadaj stranu a: ");
a = double.Parse(Console.ReadLine());
v = a * a;
Console.WriteLine(vysl_sprava1 + v);
v = 4 * a;
Console.WriteLine(vysl_sprava2 + v);
if (druh == "o") Console.WriteLine("Pocitas obdlznik");
Console.Write("zadaj stranu a: ");
Console.Write("zadaj stranu b: ");
a = double.Parse(Console.ReadLine());
b = double.Parse(Console.ReadLine());
v = a * b;
Console.WriteLine(vysl_sprava1 + v);
v = 2 * (a + b);
Console.WriteLine(vysl_sprava2 + v);
if (druh == "k") Console.WriteLine("Pocitas kruh");
if (druh == "l") Console.WriteLine("Pocitas lichobeznik");
Console.ReadKey();Re: Pomoc v c#
Dobre si pozri logiku programu. Ak stlačí niekto voľbu o tak sa vypočíta nielen obsah, ale aj obvod. Pevne dúfam, že si nemyslíš, že prázdny riadok je pre prekladač oddelenie blokov kódu (nato súžia zložené zátvorky {}). A to ani nespomínam, že na veľkosti písmen (S != s) záleží.
Toto vyzerá na (opätovné?) prečítanie si základov programovania.
Toto vyzerá na (opätovné?) prečítanie si základov programovania.
Re: Pomoc v c#
hmm opatovne prectanie si zakladov programovania. ty si chytrak. dik za nic
//autoeditácia príspevku (28 Feb 2010, 16:47)
ale v podstate si mi poradil. zamyslel som sa nad tym. a problem bez problemov vyriesil.
btw co sa tyka tyho precitania zakladov. v programovaniu sa venujem asi druhy mesiac, bez akychkolvek predchadzajucich skusenosti. moja anglictina je na urovni bezneho dohovoru v zivote. takze som odkazany na navody v ceskom, pripadne slovenskom jazyku. zatial vyhradne cerpam z tychto stranok http://www.inet.sk/clanok/2131/programu ... imavosti-i a som rad ze som schopny zosmolit aspon takyto primitivny priklad!
//autoeditácia príspevku (28 Feb 2010, 17:04)
ale nech robim co robim stale neviem prist na to ako urobit to aby pocitalo to co si vyberiem. pretoze teraz to ide za radom od vrchu smerom dole. takze nech zadas na zaciatku hocico stale bude pocitat najprv stvorec, potom obdlznik.
//autoeditácia príspevku (28 Feb 2010, 16:47)
ale v podstate si mi poradil. zamyslel som sa nad tym. a problem bez problemov vyriesil.
btw co sa tyka tyho precitania zakladov. v programovaniu sa venujem asi druhy mesiac, bez akychkolvek predchadzajucich skusenosti. moja anglictina je na urovni bezneho dohovoru v zivote. takze som odkazany na navody v ceskom, pripadne slovenskom jazyku. zatial vyhradne cerpam z tychto stranok http://www.inet.sk/clanok/2131/programu ... imavosti-i a som rad ze som schopny zosmolit aspon takyto primitivny priklad!
//autoeditácia príspevku (28 Feb 2010, 17:04)
ale nech robim co robim stale neviem prist na to ako urobit to aby pocitalo to co si vyberiem. pretoze teraz to ide za radom od vrchu smerom dole. takze nech zadas na zaciatku hocico stale bude pocitat najprv stvorec, potom obdlznik.
-
manager666
Star
- Príspevky: 642
- Registrovaný: 12 aug 2007, 13:29
Re: Pomoc v c#
Dobre si pozri syntax podmienky IF:
Ak este stale nechapes, v com mas chybu, tak si radsej kup knihu a neuc sa zaklady z nejakych clankov. Nehovorim, ze nemoze existovat niekde stranka, kde budu dokonale vysvetlene zaklady, ale moj osobny nazor je, ze taka stranka snad ani nejestvuje(ak neratam Language Reference od vyrobcu
)
p.s. v C# som nikdy nerobil...aby si si nemyslel, ze som dalsi podla teba chytrak
p.s.2 bart11 ti poradil a vlastne aj napisal, kde mas chybu
Kód: Vybrať všetko
bool flagCheck = true;
if (flagCheck == true)
{
Console.WriteLine("The flag is set to true.");
}
else
{
Console.WriteLine("The flag is set to false.");
}p.s. v C# som nikdy nerobil...aby si si nemyslel, ze som dalsi podla teba chytrak
p.s.2 bart11 ti poradil a vlastne aj napisal, kde mas chybu
Re: Pomoc v c#
ja chapem, ze tam mam v programe mam if a ze nemam else. lenze ja som do teraz nechapal ako mam pouzit tieto podmienky na x variant. nevedel som ze sa to da rozvetvit(to som sa dozvedel az teraz).
Ak vas to zaujima zakoncil som to metodou switch .
Co sa tyka knizky asi ju kupovat nebudem, raz som si kupil pascal pre zaciatocnikov a nejak som ju nevyuzil.
hlavne na knizku podla ktorej sa clovek vie naucit je tazke najst, nejake som si stiahol z netu, ale su relativne zlozite.
Diky Vam za rady obidvom, bez rad by som bol bohvie kde v uceni. Zase sa ozvem ked nebudem tusit ako dalej, takze dufam ze aj na buduce budete mat pre mna cas.
tu je kod, ktory je funkcny
//autoeditácia príspevku (02 Mar 2010, 11:42)
mam tu teraz tento program, lenze zase nepracuje ako chcem. Ten prikaz break vzdy zastavi program a ja chcem aby program zase isiel od znova. Aby zase vyzval uzivatela na zadanie rovinneho utvaru a pokracoval.
//autoeditácia príspevku (02 Mar 2010, 11:58)
bude stacit ked to dam do cyklu napr. do while?
//autoeditácia príspevku (02 Mar 2010, 12:13)
hehehehehehe ja som na to prisiel sam, iba som to dal cyklu do while. myslel som si ze to fungovat nebude. ze ten break to zastavi natvrdo a nepokracuje, ale break zastavi a hlada dalsi prikaz. PARADa ani ste mi pomahat nemuseli
//autoeditácia príspevku (02 Mar 2010, 12:14)
ale teraz by som sa nieoc spytal, co naozaj neviem. ked vytvorim program tak ten exe subor ma tu klasicku ikonku. ako sa da urobit aby tam obrazok aky zvolim?
Ak vas to zaujima zakoncil som to metodou switch .
Co sa tyka knizky asi ju kupovat nebudem, raz som si kupil pascal pre zaciatocnikov a nejak som ju nevyuzil.
hlavne na knizku podla ktorej sa clovek vie naucit je tazke najst, nejake som si stiahol z netu, ale su relativne zlozite.
Diky Vam za rady obidvom, bez rad by som bol bohvie kde v uceni. Zase sa ozvem ked nebudem tusit ako dalej, takze dufam ze aj na buduce budete mat pre mna cas.
tu je kod, ktory je funkcny
Kód: Vybrať všetko
string druh;
string volba;
string vysl_sprava1 = "Obsah Stvorca je: ";
string vysl_sprava2 = "Obvod Stvorca je: ";
string vysl_sprava3 = "Obvod Obdlznika je: ";
string vysl_sprava4 = "Obsah Obdlznika je: ";
//string stvorec;
//string obdlznik;
//string kruh;
//string lichobeznik;
double a;
double b;
double polomer;
double mojePí = System.Math.PI;
double v;
double v1;
Console.WriteLine("zadaj rovinny utvar: Stvorec - S, Obdlznik - O, , Kruh - K, Lichobeznik - L ");
druh = Console.ReadLine();
switch(druh)
{
case "s" :Console.WriteLine("Pocitas stvorec");
{
Console.Write("zadaj stranu a: ");
a = double.Parse(Console.ReadLine());
v = a * a;
Console.WriteLine(vysl_sprava1 + v);
v = 4 * a;
Console.WriteLine(vysl_sprava2 + v);
Console.Write(" este raz?n/a+enter>");
volba = Console.ReadLine();
}
break;
case "o": Console.WriteLine("Pocitas obdlznik");
{
Console.Write("zadaj stranu a: ");
a = double.Parse(Console.ReadLine());
Console.Write("zadaj stranu b: ");
b = double.Parse(Console.ReadLine());
v = a * b;
Console.WriteLine(vysl_sprava4 + v);
v = 2 * (a + b);
Console.WriteLine(vysl_sprava3 + v);
}
break;
}mam tu teraz tento program, lenze zase nepracuje ako chcem. Ten prikaz break vzdy zastavi program a ja chcem aby program zase isiel od znova. Aby zase vyzval uzivatela na zadanie rovinneho utvaru a pokracoval.
Kód: Vybrať všetko
Console.WriteLine("zadaj rovinny utvar: Stvorec - S, Obdlznik - O, Kruh - K, Lichobeznik - L ");
druh = Console.ReadLine();
switch(druh)
{
case "s" :Console.WriteLine("Pocitas stvorec");
{
Console.Write("zadaj stranu a: ");
a = double.Parse(Console.ReadLine());
v = a * a;
Console.WriteLine(vysl_sprava1 + v);
v = 4 * a;
Console.WriteLine(vysl_sprava2 + v);
Console.Write(" este raz?n/a+enter>");
volba = Console.ReadLine();
}
break;
case "o": Console.WriteLine("Pocitas obdlznik");
{
Console.Write("zadaj stranu a: ");
a = double.Parse(Console.ReadLine());
Console.Write("zadaj stranu b: ");
b = double.Parse(Console.ReadLine());
v = a * b;
Console.WriteLine(vysl_sprava4 + v);
v = 2 * (a + b);
Console.WriteLine(vysl_sprava3 + v);
Console.Write(" este raz?n/a+enter>");
volba = Console.ReadLine();
}
break;
case "k": Console.WriteLine("Pocitas Kruh");
{
Console.Write("zadaj polomer: ");
polomer = double.Parse(Console.ReadLine());
v = 2 * mojePí * polomer;
Console.WriteLine(vysl_sprava5 + v);
v = mojePí * polomer * polomer;
Console.WriteLine(vysl_sprava6 + v);
Console.Write(" este raz?n/a+enter>");
volba = Console.ReadLine();
}
break; bude stacit ked to dam do cyklu napr. do while?
//autoeditácia príspevku (02 Mar 2010, 12:13)
hehehehehehe ja som na to prisiel sam, iba som to dal cyklu do while. myslel som si ze to fungovat nebude. ze ten break to zastavi natvrdo a nepokracuje, ale break zastavi a hlada dalsi prikaz. PARADa ani ste mi pomahat nemuseli
//autoeditácia príspevku (02 Mar 2010, 12:14)
ale teraz by som sa nieoc spytal, co naozaj neviem. ked vytvorim program tak ten exe subor ma tu klasicku ikonku. ako sa da urobit aby tam obrazok aky zvolim?