Ellenőriztük az előző feladatsort, és elkezdtük a Totó-Tisza feladatsort.
Egyszámjáték
Konzolos egy lehetséges megoldása:
using System;
using System.Collections.Generic;
using System.Linq;
using System.IO;
namespace Egyszamjatek
{
class Jatekos
{
public string Nev { get; private set; }
public List<int> Tippek { get; private set; }
public Jatekos(string sor)
{
string[] atmeneti = sor.Split();
Nev = atmeneti [0];
Tippek = new List<int>();
for (int i = 1; i < atmeneti .Length; i++)
{
Tippek.Add(Convert.ToInt32(atmeneti [i]));
}
}
}
class Program
{
static void Main()
{
List<Jatekos> jatekosok = new List<Jatekos>();
foreach (var i in File.ReadAllLines("egyszamjatek1.txt"))
{
jatekosok.Add(new Jatekos(i));
}
Console.WriteLine($"3. feladat: Játékosok száma: {jatekosok.Count} fő");
Console.Write($"4. feladat: Kérem a forduló sorszámát: ");
int forduloSorszama = Convert.ToInt32(Console.ReadLine());
//Console.WriteLine($"5. feladat: A megadott forduló tippjeinek átlaga: {jatekosok.Average(x => x.Tippek[forduloSorszama - 1]):F2}");
double osszeg = 0;
for (int i = 0; i < jatekosok.Count; i++)
{
osszeg += jatekosok[i].Tippek[forduloSorszama - 1];
}
Console.WriteLine($"5. feladat: A megadott forduló tippjeinek átlaga: {Math.Round((osszeg / jatekosok.Count),2)}");
Console.ReadLine();
}
}
}
Grafikus egy lehetséges megoldása:
using System;
using System.IO;
using System.Collections.Generic;
using System.Windows;
using System.Windows.Controls;
namespace EgyszamjatekGUI
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
class Jatekos
{
public string Nev { get; private set; }
public List<int> Tippek { get; private set; }
public int FordulokSzama { get { return Tippek.Count; } }
public Jatekos(string sor)
{
string[] atmeneti = sor.Split();
Nev = atmeneti[0];
Tippek = new List<int>();
for (int i = 1; i < atmeneti.Length; i++)
{
Tippek.Add(Convert.ToInt32(atmeneti[i]));
}
}
}
public partial class MainWindow : Window
{
private List<Jatekos> jatekosok = new List<Jatekos>();
public MainWindow()
{
InitializeComponent();
foreach (var i in File.ReadAllLines("egyszamjatek2.txt"))
{
jatekosok.Add(new Jatekos(i));
}
}
private void TXBJatekosTippje_TextChanged(object sender, TextChangedEventArgs e)
{
if (!TXBJatekosTippje.Text.EndsWith(" ") && TXBJatekosTippje.Text.Length != 0)
{
//List<string> tippek = TXBJatekosTippje.Text.Split(' ').ToList();
//LBLDarab.Content = tippek.Count;
//vagy tömbbel:
string[] tippek = TXBJatekosTippje.Text.Split(' ');
LBLDarab.Content = tippek.Length;
}
}
private void BTNHozzaAd_Click(object sender, RoutedEventArgs e)
{
int i = 0;
while (i < jatekosok.Count && jatekosok[i].Nev != TXBJatekosNeve.Text )
{
i++;
}
if (i < jatekosok.Count)
{
MessageBox.Show("Van már ilyen nevű játékos!");
}
else
{
if (Convert.ToInt32(LBLDarab.Content) != jatekosok[0].Tippek.Count)
{
MessageBox.Show("A tippek száma nem megfelelő!");
}
else
{
string kiir = TXBJatekosNeve.Text + " " + TXBJatekosTippje.Text + "\r\n";
//ha a tippek végén szóköz volt, az hibát okoz, de nem volt feladat leszedni
File.AppendAllText("egyszamjatek2.txt", kiir);
MessageBox.Show("Az állomány bővítése sikeres volt!");
TXBJatekosNeve.Text = "";
TXBJatekosTippje.Text = "";
LBLDarab.Content = "";
}
}
}
}
}
<Window x:Class="EgyszamjatekGUI.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:EgyszamjatekGUI"
mc:Ignorable="d"
Title="Egyszámjáték GUI" Height="234" Width="644">
<Grid>
<Label Content="Játékos neve" HorizontalAlignment="Left" Margin="27,49,0,0" VerticalAlignment="Top" Width="83"/>
<Label Content="Játékos tippjei" HorizontalAlignment="Left" Margin="27,93,0,0" VerticalAlignment="Top" Width="83"/>
<Button x:Name="BTNHozzaAd" Content="Játékos hozzáadása" HorizontalAlignment="Center" Height="29" Margin="0,148,0,0" VerticalAlignment="Top" Width="272" Click="BTNHozzaAd_Click"/>
<TextBox x:Name="TXBJatekosNeve" HorizontalAlignment="Left" Height="27" Margin="133,49,0,0" Text="" TextWrapping="Wrap" VerticalAlignment="Top" Width="342" />
<TextBox x:Name="TXBJatekosTippje" HorizontalAlignment="Left" Height="27" Margin="133,0,0,0" Text="" TextWrapping="Wrap" VerticalAlignment="Center" Width="342" TextChanged="TXBJatekosTippje_TextChanged"/>
<Label x:Name="LBLDarab" Content="0" HorizontalAlignment="Left" Height="27" Margin="500,0,0,0" VerticalAlignment="Center" Width="28"/>
<Label Content="db" HorizontalAlignment="Left" Height="27" Margin="520,0,0,0" VerticalAlignment="Center" Width="34"/>
</Grid>
</Window>