2020.11.18. Informatikai verseny programozás feladat megoldása
using System;
using System.IO;
namespace InfoVerseny
{
class MainClass
{
//Olvasd be a verseny.txt pontosvesszővel tagolt szövegfájlból az eredményeket.Használj két egymásbaágyazott ciklust a beolvasáskor.
static int sor = 20;
static int elem = 10;
static int[,] eredmenyek = new int[sor, elem];
static void beolvas()
{
int i = 0;
string[] aktualisSor;
StreamReader sr = new StreamReader("verseny.txt");
while (!sr.EndOfStream)
{
aktualisSor = sr.ReadLine().Split(';');
for (int x = 0; x < elem; x++)
{
eredmenyek[i, x] = Convert.ToInt32(aktualisSor[x]);
}
i++;
}
sr.Close();
}
//Írd ki a képernyőre az értékeket táblázatos formában. (Formázáskor: {0,4})
static void kiir()
{
for (int i = 0; i < sor; i++)
{
for (int x = 0; x < elem; x++)
{
Console.Write("{0, 4}", eredmenyek[i, x]);
}
Console.WriteLine();
}
Console.WriteLine("\n");
}
//Ugyanezt a kiíró feladatot valósítsd meg, de az első sorba is írd ki a sorszámokat, meg a sorok elejére is.
static void sorszamosKiiras()
{
Console.Write(" "); //3 db space (esztétika)
//Oszlopok sorszáma
for (int j = 0; j < elem; j++)
{
Console.Write("{0, 1}. ", j + 1);
}
Console.WriteLine("\n");
//Sorok sorszáma
for (int i = 0; i < sor; i++)
{
Console.Write("{0}.", i + 1);
for (int x = 0; x < elem; x++)
{
Console.Write("{0, 4}", eredmenyek[i, x]);
}
Console.WriteLine();
}
Console.WriteLine("\n");
}
static void legjobbEredmeny()
{
//Hányas számú versenyző érte el a legjobb eredményt? Ne használj segéd tömböt a megoldáshoz.
int sum;
int pontszam = 0;
int sorszam = -1;
for (int i = 0; i < sor; i++)
{
sum = 0;
for (int x = 0; x < elem; x++)
{
sum += eredmenyek[i, x];
}
if (sum > pontszam)
{
pontszam = sum;
sorszam = i + 1;
}
}
Console.WriteLine("A {0}. szamu versenyzo erte el a legjobb eredmenyt {1} ponttal", sorszam, pontszam);
Console.WriteLine("\n");
}
static void atlagAlatt()
{
//Átlag kiszámítása
int[] versenyzoPontszam = new int[sor];
int osszPontszam = 0;
for (int i = 0; i < sor; i++)
{
for (int x = 0; x < elem; x++)
{
versenyzoPontszam[i] += eredmenyek[i, x];
osszPontszam += eredmenyek[i, x];
}
}
double atlag = osszPontszam / Convert.ToDouble(versenyzoPontszam.Length); //Átlag
//Átlag alattiak vizsgálata
Console.Write("Atlag alatt teljesito versenyzok sorszama: ");
for (int i = 0; i < versenyzoPontszam.Length; i++)
{
if (versenyzoPontszam[i] < atlag) Console.Write("{0} ", i + 1);
}
Console.WriteLine("\n");
}
static void atlagAlattTombNelkul()
{
}
static void legjobbanSikerult()
{
Console.Write("Hanyas szamu versenyzore vagy kivancsi? ");
int sorszam = Convert.ToInt16(Console.ReadLine()) - 1;
Console.WriteLine();
int maxSorszam = -1;
int maxPontszam = 0;
for (int i = 0; i < elem; i++)
{
if (eredmenyek[sorszam, i] > maxPontszam)
{
maxPontszam = eredmenyek[sorszam, i];
maxSorszam = i + 1;
}
}
Console.WriteLine("A {0}. szamu versenyzo legjobban sikerult feladata a {1}. feladat", sorszam + 1, maxSorszam);
Console.WriteLine("\n");
}
static void csillagTablazat()
{
string csillag = "*";
string space = " ";
for (int i = 0; i < sor; i++)
{
Console.Write("{0}.", i + 1);
for (int x = 0; x < elem; x++)
{
if (eredmenyek[i, x] == 10) Console.Write("{0, 4}", csillag);
else Console.Write("{0, 4} ", space);
}
Console.WriteLine();
}
Console.WriteLine("\n");
}
static void csillagTablazatFajl()
{
string csillag = "*";
string space = " ";
StreamWriter sw = new StreamWriter("csillag.txt");
for (int i = 0; i < sor; i++)
{
for (int x = 0; x < elem; x++)
{
if (eredmenyek[i, x] == 10) sw.Write("{0, 4}", csillag);
else sw.Write("{0, 4} ", space);
}
sw.WriteLine();
}
sw.Close();
}
//Írjuk ki, hogy a 3. feladatnál mennyi volt a minimum pontszám.
static void harmadikMinimum()
{
int min = eredmenyek[0, 2];
for (int i = 1; i < sor; i++)
{
if (eredmenyek[i, 2] < min)
{
min = eredmenyek[i, 2];
}
}
Console.WriteLine("A minimum pontszam a 3. feladatnal: {0}", min);
}
public static void Main(string[] args)
{
beolvas();
kiir();
sorszamosKiiras();
legjobbEredmeny();
atlagAlatt();
legjobbanSikerult();
csillagTablazat();
csillagTablazatFajl();
harmadikMinimum();
Console.ReadKey();
}
}
}
Kissé átalakítva, ha úgy tetszik, tanári verzió:using System;
using System.IO;
namespace infoVerseny
{
class program
{
//Olvasd be a verseny.txt pontosvesszővel tagolt szövegfájlból az eredményeket.
//Használj két egymásbaágyazott ciklust a beolvasáskor.
static int sor = 20;
static int oszlop = 10;
static int[,] eredmenyek = new int[sor, oszlop];
static void beolvas()
{
int i = 0;
string[] atmeneti;
StreamReader sr = new StreamReader("verseny.txt");
while (!sr.EndOfStream)
{
atmeneti = sr.ReadLine().Split(';');
for (int j = 0; j < oszlop; j++)
{
eredmenyek[i, j] = Convert.ToInt32(atmeneti[j]);
}
i++;
}
sr.Close();
}
//Írd ki a képernyőre az értékeket táblázatos formában. (Formázáskor: {0,4})
static void kiir()
{
for (int i = 0; i < sor; i++)
{
for (int j = 0; j < oszlop; j++)
{
Console.Write("{0, 4}", eredmenyek[i, j]);
}
Console.WriteLine();
}
Console.WriteLine("\n");
}
//Ugyanezt a kiíró feladatot valósítsd meg,
//de az első sorba is írd ki a sorszámokat, meg a sorok elejére is.
static void sorszamosKiiras()
{
Console.Write(" ");
//Oszlopok sorszáma
for (int j = 0; j < oszlop; j++)
{
Console.Write("{0,3}.", j + 1);
}
Console.WriteLine("\n");
//Sorok sorszáma
for (int i = 0; i < sor; i++)
{
Console.Write("{0}.", i + 1);
for (int j = 0; j < oszlop; j++)
{
Console.Write("{0,4}", eredmenyek[i, j]);
}
Console.WriteLine();
}
Console.WriteLine("\n");
}
static void legjobbEredmeny()
{
//Hányas számú versenyző érte el a legjobb eredményt?
//Ne használj segéd tömböt a megoldáshoz.
int osszeg;
int max = 0;
int sorszam = 0;
for (int i = 0; i < sor; i++)
{
osszeg = 0;
for (int j = 0; j < oszlop; j++)
{
osszeg += eredmenyek[i, j];
}
if (osszeg > max)
{
max = osszeg;
sorszam = i + 1;
}
}
Console.WriteLine("A {0}. szamu versenyzo erte el a legjobb eredmenyt {1} ponttal", sorszam, max);
Console.WriteLine("\n");
}
static void atlagAlatt()
{
//Átlag kiszámítása
int[] versenyzoPontszam = new int[sor];
int osszPontszam = 0;
for (int i = 0; i < sor; i++)
{
for (int j = 0; j < oszlop; j++)
{
versenyzoPontszam[i] += eredmenyek[i, j]; //egyből a tömbelemben gyűjtjük az összeget;
osszPontszam += eredmenyek[i, j];
}
}
double atlag = osszPontszam / (double)sor; //Átlag
//Átlag alattiak vizsgálata
Console.Write("Atlag alatt teljesito versenyzok sorszama: ");
for (int i = 0; i < versenyzoPontszam.Length; i++)
{
if (versenyzoPontszam[i] < atlag) Console.Write("{0} ", i + 1);
}
Console.WriteLine("\n");
}
static void legjobbanSikerult()
{
Console.Write("Hanyas szamu versenyzore vagy kivancsi? ");
int sorszam = Convert.ToInt32(Console.ReadLine());
Console.WriteLine();
int maxSorszam = 0;
int maxPontszam = 0;
for (int i = 0; i < oszlop; i++)
{
if (eredmenyek[sorszam-1, i] > maxPontszam)
{
maxPontszam = eredmenyek[sorszam-1, i];
maxSorszam = i + 1;
}
}
Console.WriteLine("A {0}. szamu versenyzo legjobban sikerult feladata a {1}. feladat", sorszam, maxSorszam);
Console.WriteLine("\n");
}
static void csillagTablazat()
{
string csillag = "*";
string space = " ";
for (int i = 0; i < sor; i++)
{
Console.Write("{0}.", i + 1);
for (int x = 0; x < oszlop; x++)
{
if (eredmenyek[i, x] == 10) Console.Write("{0,4}", csillag);
else Console.Write("{0,4} ", space);
}
Console.WriteLine();
}
Console.WriteLine("\n");
}
static void csillagTablazatFajl()
{
string csillag = "*";
string space = " ";
StreamWriter sw = new StreamWriter("csillag.txt");
for (int i = 0; i < sor; i++)
{
sw.Write("{0}.", i + 1);
for (int x = 0; x < oszlop; x++)
{
if (eredmenyek[i, x] == 10) sw.Write("{0,4}", csillag);
else sw.Write("{0,4} ", space);
}
sw.WriteLine();
}
sw.Close();
}
//Írjuk ki, hogy a 3. feladatnál mennyi volt a minimum pontszám.
static void harmadikMinimum()
{
int min = eredmenyek[0, 2];
for (int i = 1; i < sor; i++)
{
if (eredmenyek[i, 2] < min)
{
min = eredmenyek[i, 2];
}
}
Console.WriteLine("A minimum pontszam a 3. feladatnal: {0}", min);
}
public static void Main(string[] args)
{
beolvas();
Console.WriteLine("2. feladat");
kiir();
Console.WriteLine("3. feladat");
sorszamosKiiras();
Console.WriteLine("4. feladat");
legjobbEredmeny();
Console.WriteLine("5. feladat");
atlagAlatt();
Console.WriteLine("6. feladat");
legjobbanSikerult();
Console.WriteLine("7. feladat");
csillagTablazat();
csillagTablazatFajl();
Console.WriteLine("9. feladat");
harmadikMinimum();
Console.ReadLine();
}
}
}
}
Megjegyzések
Megjegyzés küldése