C# :: Aufgabe #278

2 Lösungen Lösungen öffentlich

Arrays-zweidimensional Noten Notenberechnung

Fortgeschrittener - C# von sinanoz05 - 29.01.2020 um 11:28 Uhr
In einer Klasse werden in einem Schulhalbjahr in 6 Fächern bis zu 5 Klassen arbeiten geschrieben. Es ist ein Programm zu entwickeln, mit dem ein Schüler seine je Fach erzielten Noten eingeben kann. Bei nicht geschriebenen Arbeiten wird als Note die Null gespeichert. Der Rechner soll er mitteln,wie vieleArbeitender Schüler geschriebenhat. Ferner sollder Rechner den Noten durchschnitt proFachberechnen. Nachjeder Eingabe erscheint folgender Bildschirm(im Anhang):

Hinweise zur Realisierung:  im Hauptprogramm werden folgende Funktionen aufgerufen: eingabe() unduebersicht()  eingabe(): Eingabeeiner Note Übergabeparameter: keine Rückgabe wert: n: zweidimensionales Feld vom Typ Ganzzahl  übersicht(): Ausgabeder Notenübersicht Übergabeparameter: n:zweidimensionales Feld vom Typ Ganzzahl Rückgabewert:kein

Achtung! wenninmain:
1) Feld-def.:noten[6,5]
2) Feld an Methode übergeben noten=eingabe(noten)
3) in Methode neues Feld n[3,3]  bei return (n) wird in der Aufrufzeile von main das Feld noten bzw.die Referenz auf das Feld überschrieben!!! Referenz auf noten wird durch die Referenz auf das neue Feld n überschrieben!

Lösungen:

vote_ok
von miami666 (300 Punkte) - 08.02.2020 um 01:09 Uhr
Quellcode ausblenden C#-Code
using System;
namespace aufg278
{
    class Program
    {
        static void Main(string[] args)
        {
            double[] count = new double[6];
            int[,] noten = new int[6, 5];
            int[] sum = new int[6];
            double[] ds = new double[6];
            for (int i = 0; i < noten.GetLength(0); i++)
            {
                for (int j = 0; j < noten.GetLength(1); j++)
                {
                    Console.Write("Eingabe der Note oder 0 für nicht mitgeschrieben [Fach {0}, Klassenarbeit {1}] : ", i + 1, j + 1);
                    int.TryParse(Console.ReadLine(), out noten[i, j]);
                    if (noten[i, j] != 0)
                    {
                        count[i] += 1.0;
                    }
                    sum[i] += noten[i, j];
                    ds[i] = sum[i] / count[i];
                }
            }
            Console.Clear();
            Console.WriteLine("1\t2\t3\t4\t5");
            for (int i = 0; i < noten.GetLength(0); i++)
            {
                for (int j = 0; j < noten.GetLength(1); j++)
                {
                    Console.Write("{0, -8}", noten[i, j]);
                    using System;
namespace aufg278
{
    class Program
    {
        static void Main(string[] args)
        {
            double[] count = new double[6];
            int[,] noten = new int[6, 5];
            int[] sum = new int[6];
            double[] ds = new double[6];
            for (int i = 0; i < noten.GetLength(0); i++)
            {
                for (int j = 0; j < noten.GetLength(1); j++)
                {
                    Console.Write("Eingabe der Note oder 0 für nicht mitgeschrieben [Fach {0}, Klassenarbeit {1}] : ", i + 1, j + 1);
                    int.TryParse(Console.ReadLine(), out noten[i, j]);
                    if (noten[i, j] != 0)
                    {
                        count[i] += 1.0;
                    }
                    sum[i] += noten[i, j];
                    ds[i] = sum[i] / count[i];
                }
            }
            Console.Clear();
            Console.WriteLine("1\t2\t3\t4\t5");
            for (int i = 0; i < noten.GetLength(0); i++)
            {
                for (int j = 0; j < noten.GetLength(1); j++)
                {
                    Console.Write("{0, -8}", noten[i, j]);
                    
                }
                Console.Write("anz={0} ", count[i]);
                Console.WriteLine(" %{0}", ds[i]);
            }
            Console.ReadKey();
        }using System;
namespace aufg278
{
    class Program
    {
        static void Main(string[] args)
        {
            double[] count = new double[6];
            int[,] noten = new int[6, 5];
            int[] sum = new int[6];
            double[] ds = new double[6];
            for (int i = 0; i < noten.GetLength(0); i++)
            {
                for (int j = 0; j < noten.GetLength(1); j++)
                {
                    Console.Write("Eingabe der Note oder 0 für nicht mitgeschrieben [Fach {0}, Klassenarbeit {1}] : ", i + 1, j + 1);
                    int.TryParse(Console.ReadLine(), out noten[i, j]);
                    if (noten[i, j] != 0)
                    {
                        count[i] += 1.0;
                    }
                    sum[i] += noten[i, j];
                    ds[i] = sum[i] / count[i];
                }
            }
            Console.Clear();
            Console.WriteLine("1\t2\t3\t4\t5");
            for (int i = 0; i < noten.GetLength(0); i++)
            {
                for (int j = 0; j < noten.GetLength(1); j++)
                {
                    Console.Write("{0, -8}", noten[i, j]);
                    
                }
                Console.Write("anz={0} ", count[i]);
                Console.WriteLine(" %{0}", ds[i]);
            }
            Console.ReadKey();
        }
    }
}

    }
}

                }
                Console.Write("anz={0} ", count[i]);
                Console.WriteLine(" %{0}", ds[i]);
            }
            Console.ReadKey();
        }
    }
}

vote_ok
von JKooP (2590 Punkte) - 09.04.2020 um 19:10 Uhr
NET Core 3.x

Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;

namespace CS_Aufgabe_278_Notenberechnung
{
    public enum Faecher
    {
        Mathe = 1, Deutsch, Englisch, Biologie, Chemie, Physik
    }
    class Program
    {
        private static readonly Dictionary<Faecher, List<int>> _dic = new Dictionary<Faecher, List<int>>();

        static void Main(string[] args)
        {
            BeispielnotenAnlegen();
            NotenAusgeben();
            Hinweise();

            while (true)
            {
                Console.Write("Ihre Eingaben: ");

                var input = new Regex(@"\d{1}").Matches(Console.ReadLine()).ToList().Select(x => Convert.ToInt32(x.Value)).ToList();

                if (input.Count() != 3 || input.Where(x => x == 0).Count() > 0)
                    return;

                if (input[0] > 6 || input[1] > 5 || input[2] > 6)
                {
                    Console.WriteLine($"Fehlerhafte Eingabe!\n");
                    continue;
                }

                NoteHinzufuegen((Faecher)input[0], input[1], input[2]);
                NotenAusgeben();
                Console.WriteLine($"\n{new string('=', 38)}\n");
            }
        }

        private static void NoteHinzufuegen(Faecher fach, int klassenarbeit, int note)
        {
            if (_dic.ContainsKey(fach) && klassenarbeit < _dic[fach].Count())
            {
                _dic[fach][klassenarbeit - 1] = note;
            }
        }

        private static void Hinweise()
        {
            Console.WriteLine("\nFolgende Fächer stehen zur Verfügung:");
            Console.WriteLine("(1) Mathematik");
            Console.WriteLine("(2) Deutsch");
            Console.WriteLine("(3) Englisch");
            Console.WriteLine("(4) Biologie");
            Console.WriteLine("(5) Chemie");
            Console.WriteLine("(6) Physik");
            Console.WriteLine("Bitte geben Sie [Fach (1-6) | Nummer_Klassenarbeit (1-5) | Note (1-6)] ein.");
            Console.WriteLine("Beispiel: 132 oder 1 3 2 oder 1-3-2");
            Console.WriteLine("(0) zum Beenden\n");
        }
        private static void BeispielnotenAnlegen()
        {
            foreach (var f in Enum.GetValues(typeof(Faecher)).Cast<Faecher>())
            {
                _dic.Add(f, Enumerable.Range(1, 5).Select(x => new Random().Next(0, 7)).ToList());
            }
        }

        private static void NotenAusgeben()
        {
            Console.WriteLine($"\nFach:     | Noten:");
            Console.WriteLine(new string('=', 38));
            foreach (var d in _dic)
            {
                Console.Write($"{d.Key,-10}");
                foreach (var k in d.Value)
                {
                    Console.Write($"| {k} ");
                }
                Console.Write($"|| ({d.Value.Where(x => x > 0).Average():F1})");
                Console.WriteLine();
            }
        }
    }
}