Kezdőoldal » Számítástechnika » Programozás » Emelt érettségi feladat...

Emelt érettségi feladat megoldás C# -ban. Vélemények? Tanácsok? Többi lent

Figyelt kérdés

Elég kezdő vagyok még programozásban. Esetleges hibákat, tanácsokat, egyszerűbb megoldásokat és tanácsokat szeretnék. Kicsit hosszúnak érzem a kódot ezért kérem a segítségeteket, mert így kicsit több időbe telik, mmint amenniy időm van rá érettségin. Előre is köszönök minden választ. Megy a zöld.


using System;

using System.Collections.Generic;

using System.IO;


namespace jaror

{

class Program

{

static string fileNev = "jarmu.txt";

static public List<Ellenorzes> ellenorzesek = new List<Ellenorzes>();

static void Main(string[] args)

{

StreamReader olvaso = new StreamReader(File.OpenRead(fileNev));


string[] sep = { " " };


int beolvasva = 0;


for (int i = 0; ; i++)

{

string[] temp = new string[4];


temp[0] = olvaso.ReadLine();


if (temp[0] == null) { break; }


temp = temp[0].Split(sep, StringSplitOptions.RemoveEmptyEntries);


ellenorzesek.Add(new Ellenorzes(Convert.ToInt32(temp[0]), Convert.ToInt32(temp[1]), Convert.ToInt32(temp[2]), temp[3]));


beolvasva++;

}


olvaso.Dispose();


Console.WriteLine("1. feladat: {0} sor sikeresen beolvasva a(z) {1} állományból.", beolvasva, fileNev);


Feladat2();

Feladat3();

Feladat4();

Feladat5();

Feladat6();

Feladat7();


Console.ReadKey();


}


static void Feladat2()

{

Console.WriteLine("2. feladat: Legalább {0} órát dolgoztak.", ellenorzesek[ellenorzesek.Count - 1].ora - ellenorzesek[0].ora + 1);

}

static void Feladat3()

{

Console.WriteLine("3. feladat:");


for (int i = ellenorzesek[0].ora; i <= ellenorzesek[ellenorzesek.Count - 1].ora; i++)

{

foreach (Ellenorzes e in ellenorzesek)

{

if (e.ora == i) { Console.WriteLine("{0} óra: {1}", e.ora, e.rendszam); break; }

}

}

}

static void Feladat4()

{

Console.WriteLine("4. feladat:");


int b = 0, k = 0, m = 0;


foreach (Ellenorzes e in ellenorzesek)

{

switch (e.rendszam.Substring(0, 1))

{

case "B": b++; break;

case "K": k++; break;

case "M": m++; break;

}

}


Console.WriteLine("{0}db autóbusz", b);

Console.WriteLine("{0}db kamion", k);

Console.WriteLine("{0}db motor", m);

}

static void Feladat5()

{

int leghoszabbIdo = 0;


for (int i = 0; i < ellenorzesek.Count - 1; i++)

{

if (mperc(ellenorzesek[i + 1].ora, ellenorzesek[i + 1].perc, ellenorzesek[i + 1].mperc) - mperc(ellenorzesek[i].ora, ellenorzesek[i].perc, ellenorzesek[i].mperc) > leghoszabbIdo)

{

leghoszabbIdo = mperc(ellenorzesek[i + 1].ora, ellenorzesek[i + 1].perc, ellenorzesek[i + 1].mperc) - mperc(ellenorzesek[i].ora, ellenorzesek[i].perc, ellenorzesek[i].mperc);

}

}


for (int i = 0; i < ellenorzesek.Count - 1; i++)

{

if (mperc(ellenorzesek[i + 1].ora, ellenorzesek[i + 1].perc, ellenorzesek[i + 1].mperc) - mperc(ellenorzesek[i].ora, ellenorzesek[i].perc, ellenorzesek[i].mperc) == leghoszabbIdo)

{

Console.WriteLine("{0}:{1}:{2} - {3}:{4}:{5}", ellenorzesek[i].ora, ellenorzesek[i].perc, ellenorzesek[i].mperc, ellenorzesek[i + 1].ora, ellenorzesek[i + 1].perc, ellenorzesek[i + 1].mperc);

}

}


Console.WriteLine("5. feladat:");

}

static void Feladat6()

{

Console.Write("6. feladat: Kérem adjon meg egy rendszámot: ");


string beolvasas = Console.ReadLine();

char[] temp = beolvasas.ToCharArray();


foreach (Ellenorzes e in ellenorzesek)

{

if ((e.rendszam[0] == temp[0] || temp[0] == '*')

&& (e.rendszam[1] == temp[1] || temp[1] == '*')

&& (e.rendszam[2] == temp[2] || temp[2] == '*')

&& (e.rendszam[3] == temp[3] || temp[3] == '*')

&& (e.rendszam[4] == temp[4] || temp[4] == '*')

&& (e.rendszam[5] == temp[5] || temp[5] == '*')

&& (e.rendszam[6] == temp[6] || temp[6] == '*'))

{

Console.WriteLine(e.rendszam);

}

}

}

static void Feladat7()

{

Console.Write("7. feladat:");


StreamWriter iro = new StreamWriter(File.Create("vizsgalt.txt"));


int ido = mperc(ellenorzesek[0].ora, ellenorzesek[0].ora, ellenorzesek[0].ora);


foreach (Ellenorzes e in ellenorzesek)

{

if (mperc(e.ora, e.perc, e.mperc) >= ido)

{

iro.WriteLine(((Convert.ToString(e.ora).Length == 1) ? ("0" + Convert.ToString(e.ora)) : Convert.ToString(e.ora)) + " " + ((Convert.ToString(e.perc).Length == 1) ? ("0" + Convert.ToString(e.perc)) : Convert.ToString(e.perc)) + " " + ((Convert.ToString(e.mperc).Length == 1) ? ("0" + Convert.ToString(e.mperc)) : Convert.ToString(e.mperc)) + " " + e.rendszam);


ido += 5 * 60;

}

}


Console.WriteLine("'vizsgalt.txt' állomány sikeren létrehozva.");

}


static int mperc(int ora, int perc, int mperc)

{

return (ora * 60 * 60) + (perc * 60) + mperc;

}

}

public class Ellenorzes

{

public Ellenorzes(int ora, int perc, int mperc, string rendszam)

{

this.ora = ora;

this.perc = perc;

this.mperc = mperc;

this.rendszam = rendszam;

}

public int ora, perc, mperc;

public string rendszam;

}

}


2015. febr. 22. 21:17
 1/7 A kérdező kommentje:

Bocsánat elfelejtettem, hogy mi alapján csináltam :)

[link]

Feladatsor PDF: [link]

2015. febr. 22. 21:19
 2/7 anonim ***** válasza:
Ne ide, hanem valami code share oldalra tedd föl.
2015. febr. 22. 21:22
Hasznos számodra ez a válasz?
 3/7 A kérdező kommentje:

Esetleg így olvashatóbb :)

[link]

2015. febr. 22. 21:32
 4/7 anonim ***** válasza:

string[] sep = { " " };

int beolvasva = 0;

for (int i = 0; ; i++)

{

string[] temp = new string[4];

temp[0] = olvaso.ReadLine();

if (temp[0] == null) { break; }

temp = temp[0].Split(sep, StringSplitOptions.RemoveEmptyEntries);


Eddig olvastam.


- a sep változó felesleges, csak egyszer használod - íme egy rövidítés

- a for ciklus igen ronda kilépési feltétel nélkül, próbáld meg átszervezni a ciklust, hogy ne kelljen break-elni

- a ciklusváltozót nem is használod, tehát ez nem for ciklusos feladat, ismerkedj meg az elöl- és hátultesztelős ciklusokkal


Én is javasolnám, hogy dobd fel valami kódmegosztóra, Pastebin vagy Gist, itt elég kényelmetlen olvasni.

2015. febr. 22. 21:36
Hasznos számodra ez a válasz?
 5/7 anonim ***** válasza:

#4 vagyok


Továbbá ez 3x szerepel a kódodban:

ellenorzesek[i + 1].ora, ellenorzesek[i + 1].perc, ellenorzesek[i + 1].mperc) - mperc(ellenorzesek[i].ora, ellenorzesek[i].perc, ellenorzesek[i].mperc


A saját életed könnyíted meg, ha ezt leredukálod 1 előfordulásra, pl. függvényt írsz rá, illetve ahol 2x szerepel egy cikluson belül, ott tárold el egy változóban, mert felesleges 2x kiszámolni.

2015. febr. 23. 09:14
Hasznos számodra ez a válasz?
 6/7 anonim ***** válasza:

"a sep változó felesleges, csak egyszer használod"


Egyáltalán nem felesleges, mondjuk lehetne konstans, de akkor sem.

2015. febr. 24. 18:49
Hasznos számodra ez a válasz?
 7/7 A kérdező kommentje:
Köszönöm mindenkinek :)
2015. febr. 25. 21:10

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!