» Poradna » Ostatní

Jednoduchý program C# - nevím proc program nefunguje

 |   |  Microsoft Windows 10 Chrome 51.0.2704.106

Prosím o pomoc proč daný program nefunguje, děkuji za pomoc. using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ConsoleApplication11 { class Program { static void NactiText(string txt){ Console.WriteLine("Zadejte vstupni text:"); txt=Console.ReadLine(); } static bool JeCislice(char vstup){ return (vstup >= '0' || vstup <= '9'); } static void Zpracuj(string txt){ char pred = 'X'; int pocetcisel = 0; for (int i=0;i<txt.Length;i++){ if (JeCislice(pred) && (!(JeCislice(txt[i])))){ pocetcisel++; } pred = txt[i]; } if(JeCislice(pred)){ pocetcisel++; } Console.WriteLine("Pocet celych cisel ve vete {0} je {1}", txt, pocetcisel); } static void Main(string[] args){ char volba = "9"; string vstup=""; do{ Console.Clear(); if (volba == "1" || volba == "0"){ NactiText(vstup); } if (volba == "2" || volba == "0"){ Zpracuj(vstup); } Console.WriteLine("Program pocita pocet celych cisel v zadani. Napr. asdfsafd45.98asd je vysledek 2.\n\n1..Zadat vstupni text\n2..Zpracovat\n----------------\n9..Konec"); Ukázat celý příspěvek

Mohlo by vás také zajímat

Odpovědi na otázku

 | Microsoft Windows 7 Chrome 51.0.2704.103

Nechce se mi to zkoušet, co to dělá "špatně"? Tj co jsi chtěl aby to dělalo a co to ve skutečnosti dělá?Každopádně ti mohu s jistotou říci, že program funguje přesně podle toho kódu co jsi napsal. Jestli má kód dělat něco jiného než jsi zamýšlel tak je jistě problém v tom že jsi to napsal špatně.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 51.0.2704.106

Tyo číst se mi to nechce - ale dej si tam prostě logování, nebo to rovnou proleť debugerem... Případně teda... u programátora slovo "nefunguje" neexistuje... prsotě se to chová jak má ap roto se ptám, jak se to chová ?

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Linux Firefox 47.0

v main() po zadani volby '1' skaces do funkcie nactiText(vstup). vstupny parameter je ale len hodnota lokalnej premennej 'vstup' metody main(). v metode nactiVstup() nacitavas vstup z klavesnice do lokalnej premennej metody nactiVstup() ktorej hodnota je len inicializovana hodnotou z premennej 'vstup', ale je to len "skopirovana" hodnota, ty nepristupujes ku skutocnej premennej vstup. keby si mal c/c++ tak mozes v parametri predat pointer na premennu vstup a potom zapisovat vstup z klavesnice priamo na adresu premennej vstup. v c# sa daju predavat nie pointre ale tzv. referencie. implicitne predavas referenciu vzdy na objektove typy (to znamena pri ich predavani v parametri sa nekopiruju, ale sa len odovzda referencia) ale pri hodnotovych typoch ako integer musis kompilatoru vzdy explicitne uviest ze chces predavat referenciu a nie hodnotu a robi sa to pomocou klucoveho slova ref. takze v metode main() v prvom if-e si namiesto NactiText(vstup) daj NactiText(ref vstup).dalej sa mi to uz nechce kontrolovat ani ten algoritmus ci mas funkcny, ale najlahsie vychytas chyby ked sa naucis robit s debuggerom - krokovanie, breakpointy, vnaranie do volanych funkcii, preskakovanie volanych funkcii, sledovanie a zmeny hodnot premennych atd. casto sa k jednoduchemu ladeniu pouzivaju aj vypisy premennych na konzolu v roznych castiach kodu kde potrebujes sledovat ci obsahuju ocakavane hodnoty.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Firefox 45.0

String je struktura, tedy do parametru funkce se předává jeho kopie. Změnou této kopie se originální proměná nezmění. Musíš explicitně zadat, že se jedná o výstupní parametr (keyword "out").static void NactiText(string txt) => static void NactiText(out string txt)NactiText(vstup); => NactiText(out vstup);

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Microsoft Windows 10 Chrome 51.0.2704.103

String rozhodně není struktura ale objekt. V případě Stringu jde ale o objekt imutabilní.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Firefox 45.0

Pravda, měl jsem na mysli že jde o hodnotový typ, nikoliv referenční.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Linux AppleMAC-Safari 5.0

"Program pocita pocet celych cisel v zadani. Napr. asdfsafd45.98asd je vysledek 2."...no já tedy vidím jedno desetinné číslo (45.98). Celé číslo ani jedno.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 66.0.3359.181

anal. textuusing System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ConsoleApplication39{ class Program { static string Zadat(string txt) { Console.Clear(); Console.Clear(); Console.WriteLine("Zadejte text:"); txt=Console.ReadLine(); return txt; } static void Analtxt(string txt) { Console.Clear(); int PocetVP = 0; int PocetMP = 0; int Poccislice = 0; string VP = "YXCVBNMLKJHGFDSAQWERTZUIOPÚŮĚŠČŘŽÝÁÍÉ"; string MP = "yxcvbnmlkjhgfdsaqwertzuiopúůěščřžýáíé"; string cisla = "0123456789"; foreach (char c in txt) { if (VP.Contains(c)) PocetVP++; else if (MP.Contains(c)) PocetMP++; else if (cisla.Contains(c)) Poccislice++; } Console.WriteLine("Ostatni {0}x", txt.Length - (PocetVP + PocetMP + Poccislice)); Console.WriteLine("Velka pismena {0}x", PocetVP); Console.WriteLine("Mala pismena {0}x", PocetMP); Console.WriteLine("Cislice {0}x", Poccislice); } static void Main(string[] args) { char volba = ' '; string txt=" "; txt=Zadat(txt); Analtxt(txt); do  Ukázat celý příspěvek

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 66.0.3359.181

druhe cislousing System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ConsoleApplication13{ class Program { static int Vstup() { int cislo; Console.WriteLine("Zadejte cislo (0=konec)"); while (!int.TryParse(Console.ReadLine(), out cislo)) { Console.WriteLine("Nebylo zadano cele cislo."); } return cislo; } static void Zadat() { int cislo=1, pocet = 0; int max1 = 0, max2 = 0; do { cislo = Vstup(); pocet++; if (pocet == 1) { max1 = cislo; max2 = 0; } else if (cislo>max1) { max2 = max1; max1 = cislo; } else if (cislo<max1 && cislo>max2) { max2 = cislo; } } while (cislo != 0); if (pocet <= 2) Console.WriteLine("Zadejte alespon 2 cisla"); else { Console.WriteLine("Druhe nejvyssi cislo v rade je {0}", max2); } Console.ReadKey(); } Ukázat celý příspěvek

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 66.0.3359.181

kalkulackausing System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ConsoleApplication1{ class Program { static int spocti(int x, int y, char operace) { int vysledek=0; switch (operace) { case '/': { if (y == 0) { Console.WriteLine("Nulou nelze delit."); } else vysledek = x / y; Console.WriteLine("{0}{1}{2}={3}", x, operace, y, vysledek); } break; case '+': { vysledek = x + y; Console.WriteLine("{0}{1}{2}={3}", x, operace, y, vysledek); } break; case '-': { vysledek = x - y; Console.WriteLine("{0}{1}{2}={3}", x, operace, y, vysledek); } break; case '*': { vysledek = x * y; Console.WriteLine("{0}{1}{2}={3}", x, operace, y, vysledek); Ukázat celý příspěvek

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 66.0.3359.181

nejdelsi slovousing System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.IO;namespace ConsoleApp3{ class Program { const string nazev = "vstup.txt"; static void Zpracuj() { int max = 0; Console.WriteLine("\nNejdelsi slova jsou:"); for (int pruchod = 1; pruchod < 3; pruchod++) { using (StreamReader sr = new StreamReader(nazev)) { while (!(sr.EndOfStream)) { string radek = sr.ReadLine(); if (pruchod == 1 && radek.Length > max) max = radek.Length; if (pruchod == 2 && radek.Length == max) Console.WriteLine(radek); } } } } static void Zadej() { string vstup = ""; Console.WriteLine("Zadejte slova oddelena klavesou Enter. Pro ukonceni stisknete pouze Enter."); using (StreamWriter sw = new StreamWriter(nazev)) { do { vstup = Console.ReadLine(); if (vstup.Length != 0) sw.WriteLine(vstup); } while (vstup.Length > 0); sw.Flush(); } } static void Main(string[] args) { char volba = '1'; Ukázat celý příspěvek

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 66.0.3359.181

prumerusing System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ConsoleApplication1{ class Program { static void Zpracuj(int min, int max) { int soucet = 0, pocet = 0, poradi=0; int cislo; do { do { Console.WriteLine("Zadejte {0}. cislo (zadejte 0 pro ukonceni) ", ++poradi); } while (!int.TryParse(Console.ReadLine(), out cislo)); if (cislo >= min && cislo <= max) { pocet++; soucet = soucet + cislo; } } while (cislo != 0); if (pocet == 0) { Console.WriteLine("Nebylo zadane zadne cislo v rozmezi {0}-{1}. Nelze spocitat prumer.", min, max); } else Console.WriteLine("Prumer zadanych cisel v rozmezi {0}-{1} je {2}", min, max, (double)soucet / pocet); Console.ReadKey(); } static void NastavRozpeti(int min, int max) { do { Console.WriteLine("Zadejte dolni hranici"); } while (!int.TryParse(Console.ReadLine(), out min)); do { Console.WriteLine("Zadejte horni hranici"); } while (!int.TryParse(Console.ReadLine(), out max)); Zpracuj(min, Ukázat celý příspěvek

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 66.0.3359.181

spotrebausing System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ConsoleApplication28{ class Program { static void Vyhodnot() { float vzdalenost; string nazev, nazevmin=""; float spotreba, minspotreba=1; float prumspotreba; do { Console.WriteLine("Zadejte nazev vozu (ponechte prazdne pro ukonceni) "); nazev = Console.ReadLine(); if (nazev != "") { Console.WriteLine("Zadejte ujetou vzdalenost [km] "); while (!float.TryParse(Console.ReadLine(), out vzdalenost)); Console.WriteLine("Zadejte spotrebu [l] "); while (!float.TryParse(Console.ReadLine(), out spotreba)); prumspotreba = (spotreba / vzdalenost)* 100; if (prumspotreba < minspotreba || minspotreba ==1) { minspotreba = prumspotreba; nazevmin = nazev; } } } while (nazev != ""); if (minspotreba >1) { Console.WriteLine("Auto s nejnizsi spotrebou {0} l/100km je {1}", minspotreba, nazevmin); } else  Ukázat celý příspěvek

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 66.0.3359.181

test preruseni radyusing System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ConsoleApplication4{ class Program { static int NactiCislo() { bool prvni = true; int cislo; do { if (!prvni) Console.WriteLine("Chybny vstup"); prvni = false; Console.WriteLine("Zadejte cele cislo"); } while (!(int.TryParse(Console.ReadLine(), out cislo))); return cislo; } static void TestujRadu() { int pred = 0; int cislo; bool neprerusena = true; bool neprer = true; Console.WriteLine("Tento program testuje, zda je zadana rostouci rada prerusena (napr. 5 6 7 8 9 je neprerusena, rada 3 4 5 8 9 je prerusena.\nPro ukonceni rady zadejte 0."); do { cislo = NactiCislo(); if (pred != 0 && cislo != 0) { neprer = (pred + 1 == cislo); if (neprer == false) neprerusena = false; pred = cislo; } else { pred = cislo; } } while (cislo != 0); Console.Write("Ciselna rada je "); if ((neprerusena==true)) Console.Write("ne"); Ukázat celý příspěvek

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 66.0.3359.181

trojuhelnikusing System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ConsoleApplication13{ class Program { static int Vstup(string zprava) { int cislo; int pruchod = 0; do { if (pruchod >= 1) Console.WriteLine("Nebylo zadano cele cislo."); pruchod++; Console.WriteLine(zprava); } while (!int.TryParse(Console.ReadLine(), out cislo)); return cislo; } static bool Testuj(int a, int b, int c,bool vysledek) { Console.WriteLine("Zadan trojuhelnik o delce stran {0}, {1} a {2}", a, b, c); if ((a + c) <= b) { Console.WriteLine("Hrana b neni kratsi nez soucet hran a a c ({0},{1})", b,(a+c)); vysledek = false; } else if ((a + b) <= c) { Console.WriteLine("Hrana c neni kratsi nez soucet hran a a b ({0},{1})", c,(a + b)); vysledek = false; } else if ((b + c) <= a) { Console.WriteLine("Hrana a neni kratsi nez soucet hran b a c ({0},{1})", a,(b + c)); vysledek = false; } return vysledek; } static void Zadat() { Ukázat celý příspěvek

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 66.0.3359.181

morseovkausing System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ConsoleApp1{ class Program { static void Main(string[] args) { String a, b; Dictionary<char, String> morse = new Dictionary<char, String>() // knihovna pro do morseovky { {'A', ".-"}, {'B' , "-..."}, {'C' , "-.-."}, {'D' , "-.."}, {'E' , "."}, {'F' , "..-."}, {'G' , "--."}, {'H' , "...."}, {'I' , ".."}, {'J' , ".---"}, {'K' , "-.-"}, {'L' , ".-.."}, {'M' , "--"}, {'N' , "-."}, {'O' , "---"}, {'P' , ".--."}, {'Q' , "--.-"}, {'R' , ".-."}, {'S' , "..."}, {'T' , "-"}, {'U' , "..-"}, {'V' , "...-"}, {'W' , ".--"}, {'X' , "-..-"}, {'Y' Ukázat celý příspěvek

Souhlasím  |  Nesouhlasím  |  Odpovědět

Související témata: Jednoduchý program, Console, String, Void, Char, Collections, Tasks