using System;
using System.IO;
using System.Linq;
using System.Collections.Generic;
namespace _20210217
{
class Varos
{
public string varosnev;
public int lakosokszama;
public int tavolsag;
public string megyeszekhely;
public Varos(string sor)
{
List<string> atmeneti = sor.Split(" ").ToList();
varosnev = atmeneti[0];
lakosokszama = Convert.ToInt32(atmeneti[1]);
tavolsag = Convert.ToInt32(atmeneti[2]);
if (atmeneti.Count < 4)
{
megyeszekhely = "Igen";
}
else
{
if (atmeneti[3] == "NO")
{
megyeszekhely = "Nem";
}
else
{
throw new Exception("A sor helytelen adatot tartalmaz!");
}
}
}
public string teljeskiiras()
{
string ki = $"Település neve: {varosnev}, Lakosok száma: {lakosokszama} fő, Budapesttől való távolság: {tavolsag} km, Megyeszékhely? {megyeszekhely}";
return ki;
}
}
class Program
{
static string lakszamFelett(List<Varos> a, int b)
{
string lakFelettKiir = "";
bool van = false;
for (int i = 0; i < a.Count; i++)
{
if (b < a[i].lakosokszama)
{
lakFelettKiir += "\n" + a[i].varosnev;
van = true;
}
}
if (!van)
{
lakFelettKiir = "Nincs az ön által megadott lakosságszámnál nagyobb lakosszámmal rendelkező település.";
}
return lakFelettKiir;
}
static void fajlkiiras(List<Varos> a)
{
StreamWriter sw = new StreamWriter("Varos1.txt");
for (int i = 0; i < a.Count; i++)
{
if (a[i].megyeszekhely == "Nem")
{
sw.WriteLine($"{a[i].varosnev.ToUpper()},Nem megyeszékhely");
}
else
{
sw.WriteLine($"{a[i].varosnev.ToUpper()},Megyeszékhely");
}
}
sw.Close();
}
static string kmMesszebb(int vizsgtav, List<Varos> a)
{
bool megfelel = false;
int k = 0;
while (k < a.Count && !megfelel)
{
if (a[k].tavolsag > vizsgtav)
{
megfelel = true;
}
k++;
}
if (megfelel)
{
return $"{a[k - 1].varosnev} az az első település amely Budapesttől {vizsgtav} kilométeren túl helyezkedik el! A távolság {a[k - 1].tavolsag} kilométer.";
}
else
{
return $"HIBA! Nincsen olyan település az adatok között amely Budapesttől messzebb lenne, mint {vizsgtav} kilométer";
}
}
static void Main(string[] args)
{
//A program neve legyen: varosok.
//A tanult objektum-orientált programszerkezetet használd a megoldásnál.
//Minden képernyőre író feladat előtt írjuk ki a főprogramban a feladat sorszámát.
//A fájl most 5 sort tartalmaz, de a programod készüljön fel arra,
//hogy hosszabb, és más tartalmú fájlt is fel tudjon dolgozni.
//A programban városok adatait tároljuk.
//Az adatok soronként: a város neve, lakosainak száma, Budapesttől mért távolsága,
//illetve amelyik város nem megyeszékhely, ott még ez is szerepel: NO.
//Ez legyen a varosok.txt tartalma:
/*
Békéscsaba 59000 210
Szolnok 72000 119
Kecskemét 112000 93
Nyíregyháza 118000 230 NO
Miskolc 164000 182
*/
//1.feladat:
Console.WriteLine("1. feladat");
//Olvasd be a fájlt, és tárold a tartalmát egy osztálypéldányokat tartalmazó listában.
List<Varos> varosok = new List<Varos>();
foreach (var i in File.ReadAllLines("varosok.txt"))
{
varosok.Add(new Varos(i));
}
//2.feladat:
//Írd ki az adatokat a képernyőre, egy sorba egy város adatait.
Console.WriteLine("2. feladat");
for (int i = 0; i < varosok.Count; i++)
{
Console.WriteLine(varosok[i].teljeskiiras());
}
//3.feladat:
Console.WriteLine("3. feladat");
//Írd ki a képernyőre annak a városnak a nevét, és a népességét, amely nem megyeszékhely.
//(Ha több ilyen lenne, mindet ki kéne írni.) Ha nincs ilyen, írj ki hibaüzenetet.
bool megyeszhely = false;
for (int i = 0; i < varosok.Count; i++)
{
if (varosok[i].megyeszekhely == "Nem")
{
Console.WriteLine(varosok[i].teljeskiiras());
megyeszhely = true;
}
}
if (megyeszhely == false)
{
Console.WriteLine("Nincs olyan település a listában, amely nem megyeszékhely!");
}
//4.feladat:
//Írd ki a Budapesttől legtávolabbi város nevét a képernyőre. A feladatot lehetőleg függvénnyel valósítsd meg. Ha nem függvénnyel valósítod meg, kaphatsz részpontokat.
Console.WriteLine("4. feladat\nLegtávolabbi város nevének kiiratása...");
int max = Convert.ToInt32(varosok[0].tavolsag);
int legtavolabbi = 0;
for (int i = 0; i < varosok.Count; i++)
{
if (max > varosok[i].tavolsag)
{
max = varosok[i].tavolsag;
legtavolabbi = i;
}
}
Console.WriteLine(varosok[legtavolabbi].teljeskiiras());
//5.feladat:
//Írd ki a legkevesebb lakosú város nevét a képernyőre. A feladatot lehetőleg függvénnyel valósítsd meg. Ha nem függvénnyel valósítod meg, kaphatsz részpontokat.
Console.WriteLine("5. feladat\nLegkevesebb lakosú város nevének kiiratása...");
int min = Convert.ToInt32(varosok[0].lakosokszama);
int legkevesebblakos = 0;
for (int i = 0; i < varosok.Count; i++)
{
if (min < varosok[i].lakosokszama)
{
min = varosok[i].lakosokszama;
legkevesebblakos = i;
}
}
Console.WriteLine(varosok[legkevesebblakos].teljeskiiras());
//6.feladat:
//Kérd meg a felhasználót a főprogramban, hogy adjon meg egy lakosságszámot. Írd ki a felhasználó által beírt érték fölötti lakosságszámnál nagyobb lakosságú városok neveit, soronként egyet.
//Ha nincs ilyen, írj ki hibaüzenetet.
Console.WriteLine("6. feladat\nLakosságbekérés");
Console.Write("Kérek egy értéket: ");
int bekert = Convert.ToInt32(Console.ReadLine());
Console.WriteLine(lakszamFelett(varosok, bekert));
//7.feladat:
//Döntsd el, hogy van-e 180 km-nél távolabbi város. Ha találsz ilyet,
//írd ki az elsőnek a nevét és a hozzá tartozó km-t.
//Ha nincs ilyen, írj ki hibaüzenetet.
Console.WriteLine("7. feladat\n180 km-nél távolabbi városok kilistázása...");
const int vizsgertek = 180;
Console.WriteLine(kmMesszebb(vizsgertek, varosok));
//8. feladat:
//Írd ki egy új fájlba a városok neveit nagybetűsen,
//mögéjük vesszővel elválasztva azt a szót,
//hogy megyeszékhely/nem megyeszékhely
//(a valóságnak megfelelően).
Console.WriteLine("8. feladat\nVárosok kiiratása fájlba...");
fajlkiiras(varosok);
Console.WriteLine("A program bezárásahoz nyomjon meg egy billentyűt...");
Console.ReadKey();
}
}
}
Nincsenek megjegyzések:
Megjegyzés küldése