Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno C# - ukoncovani cyklu

Ahoj. Kdyz v cyklu nacitam napr. cela cisla do pole a chci ho ukoncit nejakou dohodnutou kombinaci naprd. stisk ENTER, jak to udelam aby mi program nespadnul? Kdyz ENTER je vlastne znak a ne cele cislo... dekuji.

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
const string QUIT = ""; bool konecNacitani = false; int[] pole = new int[50]; int i = 0; while (!kon…
Vlada 04.02.2007 21:23
Vlada
jak mozes preboha integer (pole[i]) porovnavat so stringom?
MM.. 04.02.2007 21:25
MM..
myslim ze vyssie jazyky ako C# toto umoznuju, preto to ide do integeru a automaticky sa cast-uju.
IgorK 04.02.2007 21:27
IgorK
Nie, nejde to. Nemozes porovnavat cislo 0 s retazcom "", ani si neviem predstavit aky by to malo vyz… nový
MM.. 04.02.2007 21:35
MM..
Ma to takovy vyznam, ze tu mam program a ten postupne nacita cisla, uzivatel predem nevi, kolik jich… nový
Vlada 04.02.2007 21:39
Vlada
Ano, vieme. A uz som 2x napisal co robis zle. Ak to stale nechapes, tak bohuzial. nový
MM.. 04.02.2007 21:43
MM..
NULL bude predsa ASCII 0 a 0 ASCII 48, cize sa porovnavat mozu a tym padom sa nerovnaju. treba si pr… nový
IgorK 04.02.2007 21:40
IgorK
Nie, tam nie je ziaden null, ked sa to "" na nieco zmeni, tak na adresu na retazec, a to fakt porovn… nový
MM.. 04.02.2007 21:42
MM..
nemyslel som C-kovy NULL ale NUL. :-D btw., pokial viem, tak C# s pointrami nerobi, cize sa tam nepo… nový
IgorK 04.02.2007 21:49
IgorK
Fyzicky tam poiter (=adresa) bude vzdy, tak ked c# nepouzije pointer, tak potom neviem co ten C# por… nový
MM.. 04.02.2007 21:52
MM..
ak sa nemylim, s pointrami pracuje len vnutorne(pred uzivatelom je pointer radsej schovany :-D), ako… nový
IgorK 04.02.2007 21:55
IgorK
toto je klasicka konzolova aplikacia. na ukoncenie pouzi CTRL+Z, obdoba CTRL+D v unixoch.
IgorK 04.02.2007 21:29
IgorK
me nejde o ukonceni programu, ale cyklu... zajima me, jak se to ukonci klavesou ENTER... dekuji :.(
Vlada 04.02.2007 21:33
Vlada
vsak tu to mas napisane: if (pole[i] == QUIT) konecNacitani = true; predpokladam ze konstanta QUIT… nový
IgorK 04.02.2007 21:35
IgorK
pole[i] je int, QUIT je string "", ma ho zadefinovany hore. CTRL-Z nemusis porovnavat v programe, to… nový
MM.. 04.02.2007 21:38
MM..
aha, ten definovany QUIT som si nevsimol. myslel som, ze to je preddefinovana konstanta. nový
IgorK 04.02.2007 21:41
IgorK
jo teraz som si uvedomil - oprava: nie ctrl-z ale ctrl-c robi OS. ctrl-z musi testovat program ak to… nový
MM.. 04.02.2007 22:17
MM..
Pisem ti co robis zle. Bud si testuj ten string predtym ako ho prevedies na cislo, alebo zachytavaj… nový
MM.. 04.02.2007 21:37
MM..
Ja fakt nevim, jen me zajima jestli jde ten cyklus ukoncit stiskem klavesy ENTER... At uz se zadavaj…
Vlada 04.02.2007 21:27
Vlada
Ano, jde. nový
MM.. 04.02.2007 21:45
MM..
Tak ja vim co delam spatne, ale vim, ze se to nejak udelat... slo by to udelat tak, ze bych nemackal… nový
Vlada 04.02.2007 21:57
Vlada
No a preco si to teda neprerobis tak, aby to slo s Enter? Pisal som ti uz ze ako. Bud si testuj ten… nový
MM.. 04.02.2007 22:13
MM..
V C# nemôžeš porovnávať reťazec s číslom - taký program nejde ani skompilovať. Ak to píšeš pre .NET… nový
los 04.02.2007 22:20
los
DEKUJI :)) Konecne nekdo, kdo nema reci jen "okolo" a vlastne netusi o co jde, ale i temto lidem dek… nový
Vlada 04.02.2007 22:23
Vlada
Ty si vazne dement. nový
MM.. 04.02.2007 22:24
MM..
este nas aj z*ebe. :-D btw., cital si? - http://pc.poradna.net/flash/view/61-zabezpecte-si-s voj-web… nový
IgorK 04.02.2007 22:25
IgorK
Pekne, to vazne niekto pouziva include(nieco dynamicke)? :-o nový
MM.. 04.02.2007 22:33
MM..
podla autora aj imageshack.us. ;-) nový
IgorK 04.02.2007 22:35
IgorK
Jak ho mam testovat pred tim... divil by ses kolik casu jsem uz nad tim vsim stravil... 3-[ Snad zad… nový
Vlada 04.02.2007 22:21
Vlada
Ty nezadas cislo, ale string a prevadzas ho v tvojom programe na cislo funkciou Parse. je mi uplne j… nový
MM.. 04.02.2007 22:26
MM..
Dej mi sem mail, nebo ICQ a ja ti sem hodim na cem delam... a treba mi uveris, ze jsem to udelal sam… nový
Vlada 04.02.2007 22:31
Vlada
ok, tak sa ti to pokusim vysvetlit, snad ti to pomoze dalej. Vsetko co pise uzivatel do konzoly je… nový
MM.. 04.02.2007 22:41
MM..
Mam Visual Studio 2005 ze skoly... Ale v nemuzu ten dubugger prave spustit. V Cecku mi to krasne cho… nový
Vlada 04.02.2007 22:45
Vlada
S tym debuggerom neviem co mas za problem, mas v nastaveniach projektu ze to ma byt aj s debug infor… poslední
MM.. 04.02.2007 22:53
MM..

const string QUIT = "";
bool konecNacitani = false;
int[] pole = new int[50];
int i = 0;
while (!konecNacitani)
{
Console.Write("Zadej cislo: ");
pole[i] = Int32.Parse(Console.ReadLine());
if (pole[i] == QUIT)
konecNacitani = true; i++;
}

Tak asi tak... A ten cyklus potrebuju jednoduse ukoncit ENTREM...

Ma to takovy vyznam, ze tu mam program a ten postupne nacita cisla, uzivatel predem nevi, kolik jich chce zadat, ale kdyz ho to prestane bavit, tak jednoduse zmackne prazdny ENTER a cyklus se ukonci... a program smele pokracuje dal v dalsi cinnosti...

V C# nemôžeš porovnávať reťazec s číslom - taký program nejde ani skompilovať.

Ak to píšeš pre .NET 1.1, tak by som to napísal nejako takto:

ArrayList pole = new ArrayList();

while(true) {
  Console.Write("Zadaj číslo: ");
  string s = Console.ReadLine();

  try { pole.Add(Int32.Parse(s)); }
  catch { if (s == string.Empty) break; }
}

Ak to píšeš pre .NET 2.0, tak by to mohlo vyzerať rovnako alebo nejako takto:

List<int> pole = new List<int>();

while (true) {
  Console.Write ("Zadaj číslo: ");
  string s = Console.ReadLine();
  int n;

  if (Int32.TryParse (s, out n))
    pole.Add (n);
  else if (s == string.Empty)
    break;
}

Jak ho mam testovat pred tim... divil by ses kolik casu jsem uz nad tim vsim stravil... 3-[ Snad zadam cislo, nactu do pameti a az pak ho muzu testovat, jestli to je ten ENTER nebo ne... Spis by to chtelo v te podmince if nejake pretypovani myslim.

Ty nezadas cislo, ale string a prevadzas ho v tvojom programe na cislo funkciou Parse.
je mi uplne jasne ze si ten program nenapisal sam kedze ani netusis co v tych 4riakoch je, a zas len opisujes. Naco sa vobec C# ucis ked o tom nemas a hlavne ani nechces mat ani paru?

los ti napisal to co som ti pisal, plus to trochu zelegantnil...

Dej mi sem mail, nebo ICQ a ja ti sem hodim na cem delam... a treba mi uveris, ze jsem to udelal sam... Pred tydnem jsem presel z C na C#, tak v tom mam trosicku bordel, ve stredu tu praci mam odevzdat... vsechno resim sam, nic neopisuju a uz jsem z toho unavenej, takze hledam pomoc tady kdyz nevim...

ok, tak sa ti to pokusim vysvetlit, snad ti to pomoze dalej.

Vsetko co pise uzivatel do konzoly je znakovy retazec (string) aj ked tam napises len cisla, vzdy je to string.
Tento string ti vrati funkcia Console.ReadLine(), a z toho potom prvy losov riadok

string s = Console.ReadLine();

potom si otestujes ten string, tam si mozes testovat co chces, otestovat to s na prazdny string, alebo ako to robil los skusis to previest na cislo, bud tym ze testujes vynimku (try - catch) alebo cez TryParse. Ak prevod na cislo neklapne tak to nie je cislo a ukoncis cyklus (break alebo si nastavis tu premennu konecNacitani).

Mal som pocit ze to co pisem ti musi stacit a ze je to trivialne. Nauc sa aj hladat si informacie, je to dost potrebne (programovat bez informacii o kniznicnych funkciach alebo o API je nemozne), staci do google alebo do msdn.microsoft.com zadat nazov fcie o ktorej chces popis alebo v msdn si pozriet skupiny fcii.
Tiez by bolo dobre pouzivat debugger, mas v tvojom vyvojovom prostredi nejaky debugger?

Mam Visual Studio 2005 ze skoly... Ale v nemuzu ten dubugger prave spustit. V Cecku mi to krasne chodilo, dival jsem se do pameti, mel jsem prehled co kde je ulozene, jenze ted prechazime na objektove orientovane programovani a ja nevim...

S tym debuggerom neviem co mas za problem, mas v nastaveniach projektu ze to ma byt aj s debug informaciami? (ani neviem ci to je tiez u C#). Ked si v projekte tak si skus kliknut na debug - start, nieco to vypise?

dufam ze som ta moc neodradil, hlavne treba chapat co je v programe (ak mas odniekial nejaku funkciu ako napr. to Console.ReadLine() tak si pozri co to robi, staci zadat Console.ReadLine do google, treba ale anglictinu).

Zpět do poradny Odpovědět na původní otázku Nahoru