Új hozzászólás Aktív témák
-
kispx
addikt
Az előbb átszerkesztettem a hsz-t, de újból belinkelem.
-
kispx
addikt
A linkelt honlapról az idevágó rész:
Console.Write("Az egész változó értéke: ");
egész = Convert.ToInt32(Console.ReadLine());helyett
string [B]x[/B] = Console.ReadLine()
//leellenőrizzük, hogy a hossza nem nulla, ha igen akkor hiba
egész = Convert.ToInt32[B](x)[/B];
// leellenőrizzük, hogy 0-át irt be, ha igen akkor hiba[ Szerkesztve ]
-
Karma
félisten
Hát igen, null referencián nem könnyű hosszot mérni. Inicializáld a változóidat! Mondjuk String.Empty-vel a szamot, a szorzast meg nullával.
Nem feltétlen így csinálnám a while ciklust, de abba nem akarok beleszólni. Na jó, mégis: a szamra semmi szükséged kívül, elég ha a szorzas látszik a while cikluson kívül. (Amit egyébként szorzonak is hívhatnál.)
És a do while is teljesen jogos.
Convert.ToInt32() helyett meg int.TryParse()-ra szavaznék. Egy kicsit más a szintaxisa, de legalább nem tud robbanni, és nem drótozol be vele változóméretet se.
Csak nálam nem működik Chrome alatt a Monospace?
[ Szerkesztve ]
“All nothings are not equal.”
-
kispx
addikt
Ismétli önmagát, mert végtelen ciklust írtál:
} while (szorzo.Length == 0 || [B]szorzas == 0[/B]);
A szorzas nevű változónak csak kezdőértéket adtál, a programban ezen az egy értékadástól eltekintve nem módosul az értéke. Tehát az értéke mindig 0.
Emiatt a ciklusfeltétel értéke mindig igaz lesz:
igaz || igaz == igaz
hamis || igaz == igazTehát a ciklus sosem fejeződik be.
[ Szerkesztve ]
-
xxSanchez
őstag
Akkor írja ki, ha szöveget írnál a programodba és ettől lefagy? Rakd be Try közé, vagy simán csak a számokat engedélyezd.
int szorzas = 0;
string szorzo = String.Empty;
do
{
Console.Write("Üdvözöllek. Ez egy szorzótábla. Írj be egy számot, és én kiírom neked a szorzatokat 10-ig: ");
szorzo = Console.ReadLine();
try
{
szorzas = int.Parse(szorzo);
}
catch
{
Console.WriteLine("Csak számokat írj");
}
} while (szorzo.Length == 0 || szorzas == 0);
for (int i = 0; i <= 10; ++i)
{
Console.WriteLine("{0}×{1}={2}", i, szorzo, i * szorzas);
}
Console.ReadKey();[ Szerkesztve ]
Heyho.
-
sztanozs
veterán
int[] tomb = new int[10];
Az első for-od jó, a második az nem:
for (int i = 0; i < tomb.Length; ++i) // tömb feltöltésefor (int i = 0; i < 30; ++i)
[ Szerkesztve ]
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
fatal`
titán
using System;
class Program
{
public static void Main(string[] args)
{
int[] tomb = new int[10];
Random r = new Random();
for (int i = 0; i < tomb.length; i++)
{
tomb[i] = r.Next(1, 1000);
}
int min = tomb[0];
int max = tomb[0];
int minIndex = 0;
int maxIndex = 0;
for (int i = 1; i < tomb.length; i++)
{
if (tomb[i] < min)
{
min = tomb[i];
minIndex = i;
}
if (tomb[i] > max)
{
max = tomb[i];
maxIndex = i;
}
}
}
}[ Szerkesztve ]
-
sztanozs
veterán
Akkor a tömb a változó-iadik elemet adja vissza a tömbből. Ha ez több, vagy kevesebb, mint a tömb legkisebb (alapértelmezetten 0) vagy legnagyobb (alapértelmezetten az elemek száma-1), akkor hibát dob (kevésbe "kényes" fejlesztői nyelvek esetén beg buffer overflow lesz az eredmény)
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
Jester01
veterán
-
amargo
addikt
Sokszor egyszerűbb lenne, ha nem kellene találgatni.
MemoryFailPoint“The workdays are long and the weekend is short? Make a turn! Bike every day, bike to work too!”
-
amargo
addikt
Azért nincs benne olyan sok new kulcs szó. Meg aztán a kommentek is beszédesek.
Azért Jester01 segítségével már meg lehet találni.
A programból egy részlet, ami elég beszédes, hogy miért akar valamit távolt tartani a GC-től:// A real thread would use the byte[],
// but to be an illustrative sample,
// explicitly keep the byte[] alive to help exhaust the memory.
GC.KeepAlive([B]bytes[/B]);[ Szerkesztve ]
“The workdays are long and the weekend is short? Make a turn! Bike every day, bike to work too!”
-
Karma
félisten
Akkor ideje végre leírnod, hogy mit is szeretnél pontosan. Először memóriát akartál foglalni, lett is rá megoldás, aztán bejött a MemoryFailPoint, nem volt jó, még egy foglalás, nem volt jó...
Egyébként meg hót egyszerű a MemoryFailPoint használata: csak a konstruktornak meg kell adnod, hogy mennyi memóriát szeretnél biztosítani, aztán ha végeztél, Dispose (vagy használhatsz using blokkot is). Természetesen try blokkba kell tenned, hogy az exceptiont lekezelhesd, ha nem állna rendelkezésre ekkora heapszelet.
De ez mind le van írva az MSDN-en, még csak nem is érthetetlenül.
[ Szerkesztve ]
“All nothings are not equal.”
-
sztanozs
veterán
Mi lenne ha írnál is a fájlba? Kisbetű/nagybetű nem ugyanaz:
file vs FileKicsit tanulmányozd még a C# szintaktikát mielőtt elkezdesz droppert íni
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
sztanozs
veterán
Sehogy - azért console, mert nyit hozzá konzolt. Ha nem akarod, hogy nyisson konzolt, ne konzolos appot csinálj hanem ablakost, csak ne inicializálj benne ablakot.
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
Karma
félisten
A legegyszerűbb és legbizonytalanabb az, ha \t tab karakterekkel választod el az oszlopokat (pl. string.Join metódussal összefűzve), aztán kiírod soronként.
Ha ismered előre az oszlopokat, akkor a string.Formatnak oszloponként meg tudod adni, hogy hány karakterre paddelje ki az értéket, és balra vagy jobbra igazítva szeretnéd. {0, X} vagy {0, -X}
Ha nem ismered őket, a string.PadLeft és a .PadRight segíthet.
[ Szerkesztve ]
“All nothings are not equal.”
-
Karma
félisten
A változók fogalmának fuss neki még egyszer. Futásidőben ez nem fog így működni - Jester01-nél a pont, hogy listára vagy dictionaryre lesz szükséged. A kettő közötti választás feladatfüggő.
Kiegészíteném azzal, hogy a string[]-ökkel való zsonglőrködés helyett sokkal jobban jársz, ha csinálsz egy osztályt a felhasználóknak, és minden későbbi lépésnél ezt használod alapként. A stringfétis, ahogy egy néhai kollégám hívta, veszélyes gyakorlat. Inkább ne hagyd magadban kialakulni.
Szóval a következő lépéseket javaslom egy nagyon naiv megoldáshoz(*):
1) Csinálj egy User osztályt négy adattaggal.
2) Írj egy olyan metódust valahova, ami egy beolvasott sorból User példányt csinál (ezen belülre rakhatod a Split hívást és az adattagok feltöltését).
3) Írj egy olyan metódust, ami paraméterként kap egy StreamReadert, while ciklusban (amíg van mit olvasni), a ReadLine metódussal felolvas egy sort, az előzőleg megírt metódussal Usert gyárt belőle, és berakja egy List<User>-be. A végén visszaadja ezt a listát.
4) Ezt a metódust meghívod a fájllal, és máris előállt minden felhasználó adata.(*): Nem tudom, hogy folytatódik a feladat. Ha csak a belépéshez kell a fájl tartalma, akkor jobban megérheti egy olyan konstrukció, ami nem nyalja fel memóriába a listát egyszerre, hanem mindig csak az aktuális, egy sornyi Usert ellenőrzi, és ha illeszkedik a név/jelszó párra, visszaadja.
[ Szerkesztve ]
“All nothings are not equal.”
-
-
zuzu000
őstag
static int[] MibőlMennyi(string[] szavak, char[] karakterek)
{
int[] mimennyi = new int[karakterek.Length];
for (int i = 0; i < szavak.Length; i++)
{
for (int i2 = 0; i2 < karakterek.Length; i2++)
{
if ((szavak[i].Count(x => x == karakterek[i2]) > mimennyi[i2]))
mimennyi[i2]++;
}
}
return mimennyi;
}szavak[0] = "abcd"
szavak[1] = "abb"
karakterek = a,b,c,d
Meg szeretném számolni, hogy miből hány darab van, és egy int[] tömbbe betenni a mennyiségeket. De valamiért a mimennyi[] így néz ki : 1,1,1,1,0,0,0,.. stb.
Tehát mintha minden karakterből csak egyet talált volna, ami szavak[0]-ra jó is, de b-ből kettő van szavak[1]-ben. -
-
nagyúr
Nem, enumeratorral.
class MainClass
{
static int [,,] nestedArray= new int[10,10,10];
public static void Main (string[] args)
{
Random r = new Random ();
for (int i = 0; i < 10; ++i)
for (int j = 0; j < 10; ++j)
for (int k = 0; k < 10; ++k)
nestedArray [i,j,k] = r.Next ();
var e = nestedArray.GetEnumerator ();
while (e.MoveNext ())
Console.Write (" {0}",e.Current);
}
}[ Szerkesztve ]
while (!sleep) sheep++;
-
Jester01
veterán
Az olv.ReadToEnd(); az beolvassa a fájl összes hátralévő sorát egy stringbe,amit nem használsz fel. A readLine() utána már nem ad semmit.
Neked valami olyasmi kellhet például, hogystring line;
while((line = olv.ReadLine()) != null)
{
int x=int.Parse(line);
vanOr[x] = true;
}Jester
-
kingabo
őstag
A StreamReadert és minden IDisposable-t using blokkban használd!
Nem látok a kódodban sehol sem egy ciklust sem. Ahova írni akartad volna ott a streamből kiolvasol mindent, majd "eldobod", majd ezek után megint olvasni akarsz a stream vége után...
Ha nem azt csinálja a progi amit kéne, akkor vagy debug, vagy nézd végig, hogy mit írtál. Ne azt nézd, hogy mit akartál írni, hanem, hogy mi írtál!
szerk: lassu voltam.
Jester01: van EndOfStream is, azzal közelebb áll az eredeti gondolat menethez.[ Szerkesztve ]
-
sztanozs
veterán
Én csinálnék egy Struct-ot, ami a kereszteződéseket jelöli (négy irány, melyik szabad), utána pedig egy A*-ot kell ráereszteni.
De mindenféle trükközés nélkül - ezt az infót eltárolva (honnan hova tilos) is lehet a*-ot számolgatni, nem kell felépíteni az egész hálózatot...
[ Szerkesztve ]
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
Új hozzászólás Aktív témák
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- HP Envy x360 15,6 IPS LED Gorilla Glass i7, 16GB, 1TB fémházas 3az1 notebook + HP toll - harmad áron
- Szép állapotú 2020-as MacBook Air 13 - M1-es processzor, 8GB RAM, 256GB SSD
- PreSonus AudioBox USB 96 25th Anniversary Edition
- Logitech Combotouch 920-009625 Ipad - 7-8&9 TH Generációhoz.
- Mechanikus gamer billentyűzet, 60%