Hirdetés
- Sub-ZeRo: Euro Truck Simulator 2 & American Truck Simulator 1 (esetleg 2 majd, ha lesz) :)
- sziku69: Szólánc.
- sziku69: Fűzzük össze a szavakat :)
- Luck Dragon: Asszociációs játék. :)
- Meggyi001: Csak úgy... ki kellett írnom magamból...
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- MasterDeeJay: Harc a DDR5 árak ellen
- Gurulunk, WAZE?!
- Brogyi: CTEK akkumulátor töltő és másolatai
- nonsen5e: DPD tapasztalatok
Új hozzászólás Aktív témák
-
Karma
félisten
Nos akkor.
Egy általános észrevétel előre. Úgy látom a közoktatás le van ragadva azon a szinten, hogy korlátozott Pascal programozást tanítanak C# nyelven. (Erről már volt szó korábban, csak bebizonyosodik.)ű
Azt még elfogadom sok szemöldökborzolás mellett, hogy a LINQ 2 Objectset nem tanítják - mert így az összes érettségi feladat megoldható lenne egy-egy sorban -, de tömbök? Komolyan? Mindkettőtöknél nagyon megy ez, ezért hiszem hogy valami központi oka van...
Konkrétan akkor a bajok. A kozmetikai dolgokba, mint kis-nagybetűk, nem megyek bele.
Ott kezdődik, hogy static tagváltozókban van az adat, de mégis minek? A main függvény dolgozik csak vele, simán mehet oda lokális változónak. A static adatmezők, más néven globális változók csak bajt hoznak, ha hozzászoktok, és mondjuk a jövőben programozni is akartok. Más szakmák esetén mindegy; de akkor a hozzászólásom többi része is irreleváns.
Az adat struktúra elmegy szódával, viszont mint mondtam, nem tömbben kéne tárolni. Vannak a C#-ban nagyon jó lista szerkezetek, amik tudják magukról, hogy hány elem van bennük - ezzel az ind változó feleslegessé válik.
A List<T> a legegyszerűbb ezek közül. A Count-on keresztül eléred az aktuális darabszámot, és vannak metódusai elem hozzáadáshoz (Add) és törléshez is (Remove). Meg lehet szögletes zárójellel az akárhanyadik elemet manipulálni.
Tehát így néz ki a program eleje eddig:
...
class Program
{
struct adat
{
public int nap, dik, tav;
}
static void Main(string[] args)
{
var fuvar = new List<adat>();
... folyt köv...
}
}Az első feladatnál is kéne használni usingot a StreamReader köré. Ezen kívül a karakterenként feldolgozás feleslegesen lábbalhajtós. A soronkénti beolvasásig jó, utána kitör a WWIII. A sort fel tudod darabolni a Split metódussal a szóközök mentén, és azonnal kipotyog a három külön szöveg.
// 1. feladat
string sor = sr.ReadLine();
while (sor != null)
{
string[] elemek = sor.Split(' ');
adat f = new adat();
f.nap = int.Parse(elemek[0]);
f.dik = int.Parse(elemek[1]);
f.tav = int.Parse(elemek[2]);
fuvar.Add(f);
sor = sr.ReadLine();
}Egy csöppet rövidebb és olvashatóbb, nem?
Aztán mivel nincs ind, a ciklusokat fuvar.Count-ig kell járatni. Ez több helyen változtat a dolgon.
Na most első körben itt megállnék, mert nem akarom túlterhelni a fórumot. Egy kicsit nehezemre esik LINQ nélkül gondolkodni, mert tényleg egy sorba összeesnének vele a feladatok
De lehet inkább beadom a derekam és bevillantom a szebb világ képét.Még annyi, hogy az üres else {} ágakat teljesen felesleges kiírni, de legalább olvashatatlan.
-
Karma
félisten
Erre kapásból látszik a válasz: nem zártad be a fájlt. A legegyszerűbb, ha rászoksz a using kulcsszó használatára.
Vannak itt azért más gondok is, de a konkrét kérdésedre ez a válasz.
Holnap ki tudom fejteni a többit.using(StreamWriter sw = new StreamWriter(new FileStream("dijazas.txt", FileMode.Create))
{
for (int i = 1; i <= 7; i++)
{
for (int j = 1; j <= 40; j++)
{
for (int g = 0; g < ind; g++)
{
if (fuvar[g].nap == i && fuvar[g].dik == j)
{
sw.Write("{0}. nap {1}. út: ", i, j);
if (fuvar[g].tav <= 2) sw.WriteLine("500 Ft"); else { if (fuvar[g].tav <= 5) sw.WriteLine("700 Ft"); else { if (fuvar[g].tav <= 10) sw.WriteLine("900 Ft"); else { if (fuvar[g].tav <= 20) sw.WriteLine("1400 Ft"); else sw.WriteLine("2000 Ft"); } } }
}
else { };
}
}
}
}
Ú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!
- Gitáros topic
- Milyen NAS-t vegyek?
- EU-s vám vethet véget a nagyi temus vásárlási lázának
- Hobby elektronika
- BestBuy topik
- Sub-ZeRo: Euro Truck Simulator 2 & American Truck Simulator 1 (esetleg 2 majd, ha lesz) :)
- Trollok komolyan
- Tesla topik
- Allegro vélemények - tapasztalatok
- QNAP hálózati adattárolók (NAS)
- További aktív témák...
- Mio Star Coffe One Milk Automata kávégép 6 hónap Garancia Beszámítás Házhozszállítás
- RAKTÁRKISÖPRÉS! Eladó szerverek!
- iKing - Apple iPhone 15 Pro Natural Titanium ProMotion 120 Hz, A17 Pro, USB-C 128 GB
- GYÖNYÖRŰ iPhone 14 128GB Midnight -1 ÉV GARANCIA - Kártyafüggetlen, MS4248,100% Akksi
- Xiaomi Redmi Note 9 / 4/128GB / Kártyafüggetlen / 12 Hó Garancia
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: ATW Internet Kft.
Város: Budapest
De lehet inkább beadom a derekam és bevillantom a szebb világ képét.
