C# Räkna antal specifika objekt
Jag har nu försökt ett bra tag att komma på hur jag ska räkna antal specifika objekt i en lista. i detta fallet är det fem olika ämnen (Matematik, Svenska, Engelska, Historia, Fysik ) där man har ombetts att skriva in betyg(A-F) för var och ett av ämnena. Nu är mitt problem att jag ska skriva ut "statistik" om betygen. Alltså räkna antal A, antal B osv. Jag kommer inte på hur jag ska göra. Om det underlättar så har man i ett tidigare skede skrivit in betygen som poäng (0-100) istället.
Jag skäms för vilket skick min kod är i just nu men jag bifogar den iaf
using System;
namespace Moment3
{
class Program
{
static void lasPoang (string[] ämnen, int[] poäng)
{
int poängen;
for (int i = 0; i < ämnen.Length; i++)
{
Console.WriteLine("Mata in poängen mellan 0-100 för " + ämnen[i] + ": ");
poängen = Convert.ToInt32(Console.ReadLine());
poäng[i] = poängen;
}
}
static void Af (string[] ämnen, int[] poäng, char[] betyg)
{
for (int i = 0; i < ämnen.Length; i++)
{
if (poäng[i] > 90 && poäng[i] <= 100)
betyg[i] = 'A';
else if (poäng[i] > 80)
betyg[i] = 'B';
else if (poäng[i] > 70)
betyg[i] = 'C';
else if (poäng[i] > 60)
betyg[i] = 'D';
else if (poäng[i] >= 50)
betyg[i] = 'E';
else if (poäng[i] >= 0)
betyg[i] = 'F';
else
betyg[i] = '!';
Console.WriteLine(ämnen[i] +"= " + betyg[i]);
}
}
static void stat(string[] ämnen, int[] poäng, char[] betyg)
{
//vad gör jag här?
}
static void Main (string[] args)
{
string[] ämnen = { "Matematik", "Svenska", "Engelska", "Historia", "Fysik" };
int[] poäng = new int[5];
char[] betyg = new char[6];
lasPoang(ämnen, poäng);
bool avsluta = false;
while (!avsluta)
{
Console.Write("[A]skriv betyg i A-F\n");
Console.Write("[B]statistik\n");
Console.Write("[C]skriv ut betyg\n");
Console.Write("[D]avsluta\n");
Console.WriteLine("\nDitt val: ");
char menyVal;
menyVal = Console.ReadLine()[0];
switch (menyVal)
{
case 'a':
case 'A':
Af (ämnen, poäng, betyg);
break;
case 'b':
case 'B':
stat(ämnen, poäng, betyg);
break;
case 'c':
case 'C':
//nått här med ja
break;
case 'd':
case 'D':
Console.WriteLine("Hejdå");
avsluta = true;
break;
default:
Console.WriteLine("Någonting gick fel. Hejdå");
avsluta = true;
break; //välkomstmeddelande
//v metod som ska omvandla poängen till betyg enligt skalan A-F.
//Skriv en metod skrivUtBetyg som gör utskriften av betygen.
}
}
}
}
}
Här följer hela uppgiften:
Deklarera alla variabler och skriv ett välkomstmeddelande.
Använd följande fält (array) i ditt program.string[] ämnen = { "Matematik", "Svenska", "Engelska", "Historia", "Fysik" };
int[] poäng = new int[5];
char[] betyg = new char[6];Skriv en metod LäsPoäng för att läsa elevens betygspoäng i de olika ämnena.Poängen ska du spara i en array, vektor eller lista.
När metoden anropas så ska användaren få mata in ett antal betygspoäng.
Vilka betygspoäng som ska matas in styrs avinnehållet i fältet ämnen.
static void lasPoang(string[] amnen, int[] poang, int n)
{
//Metoden tar med sig arrayerna ämnen och string
int poangen;
for (int i = 0; i < n; i++)
{
Console.WriteLine("Mata in poängen mellan 0-100 för " + amnen[i] + ": ");
poangen = Convert.ToInt32(Console.ReadLine());
poang[i] = poangen;
}
}
Skriv en metod som ska omvandla poängen till betyg enligt skalan A-F.
Betyget A motsvarar 100 poäng. Betygen ska du lagra i ett fält (array, vector eller list).
Betygets skala:90 < poäng <= 100 = 'A'
80 < poäng <= 90 = 'B'
70 < poäng <= 80 = 'C'
60 < poäng <= 70 = 'D'
50 <= poäng <= 60 = 'E'
poäng <= 50 = 'F'
Skriv en metod skrivUtBetyg som gör utskriften av betygen.Skriv en metod Statistik som ska beräkna antal "A", "C" och "F" betyg och totalt antal betygspoäng.
Jag har varit inne på den här tråden:
https://www.sweclockers.com/forum/trad/1039122-c-rakna-antal-...
Men den har inte hjälpt mig. Vet inte om jag varit fel ute. Tack så mycket på förhand!!