C# :: Aufgabe #105

11 Lösungen Lösungen öffentlich

Das Array-Telefonbuch

Anfänger - C# von Energy - 17.08.2015 um 15:11 Uhr
Erstelle ein mehrdimensionales Array, in der 5 Datensätze gespeichert werden. Es soll eine Festnetznummer, eine Handynummer und eine Geschäftliche Telefonnummer in der Konsole eingegeben werden. Nach der Eingabe soll die Konsole geleert und die Nummern ausgegeben werden. Bei der Ein- sowie Ausgabe soll eine laufende Eintragsnummer angezeigt werden.

Lösungen:

2x
vote_ok
von Mentalist999 (680 Punkte) - 17.08.2015 um 20:35 Uhr
Mit einer Verschachtelten Auflistung könnte man diese Aufgabe wesentlich sinnvoller lösen.
Dennoch habe ich mich an die Vorgabe gehalten. :)

Quellcode ausblenden C#-Code
        static void Main(string[] args)
        {
            string[,] Directory = new string[5, 4];
            string[] Requests = { "Full name", "Mobile line", "Landline", "Business line" };    
            byte Entries = 0;
            
            do
            {
                for (byte i = 0; i < 4; i++)
                {
                    Console.Write(Requests[i] + "\t-> ");
                    Directory[Entries, i] = Console.ReadLine();
                }

                for (byte i = 0; i <= Entries; i++)
                    Console.WriteLine("\n{0}.\n\tFull name\t{1}\n\tMobile line\t{2}\n\tLandline\t{3}\n\tBusiness line\t{4}\n", 
                        i + 1, 
                        Directory[i, 0], 
                        Directory[i, 1], 
                        Directory[i, 2], 
                        Directory[i, 3]);

                Console.ReadKey();
            }
            while (++Entries < 5); 
        }

vote_ok
von DBqFetti (2480 Punkte) - 18.08.2015 um 20:42 Uhr
Quellcode ausblenden C#-Code
using System;

namespace Array_Telefonbuch {
	class Program {
		static void Main() {
			string[,] Foo = new string[5, 3];
			string[] Bar = new string[] { "Festnetz", "Handy", "Geschäftlich" };

			for (int i = 0; i < Foo.GetLength(0); i++) {
				Console.WriteLine("{0}. Eintrag:", i + 1);
				for (int ii = 0; ii < Foo.GetLength(1); ii++) {
					Console.Write("{0}>", Bar[ii]);
					Foo[i, ii] = Console.ReadLine();
				}
				Console.WriteLine();
			}

			Console.Clear();

			for (int i = 0; i < Foo.GetLength(0); i++) {
				Console.WriteLine("{0}. Eintrag:", i + 1);
				for (int ii = 0; ii < Foo.GetLength(1); ii++) {
					Console.WriteLine("{0}: {1}", Bar[ii], Foo[i, ii]);
				}
				Console.WriteLine();
			}
			Console.ReadKey(true);
		}
	}
}
1x
vote_ok
von niknik (1230 Punkte) - 19.08.2015 um 12:59 Uhr
Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ArrayTelefonbuch
{
    class Program
    {
        static void Main(string[] args)
        {
            long[,] telefonbuch;

            int anzahlE;
            do
            {
                Console.WriteLine("Wieviele Einträge möchten Sie in ihrem Telefonbuch haben?");
            } while (!int.TryParse(Console.ReadLine(), out anzahlE) || anzahlE < 0);
            telefonbuch = new long[anzahlE, 4];

            long tempnummer;

            for (int i = 0; i < anzahlE; i++)
            {
                telefonbuch[i, 0] = i + 1;              // Eintragsnummer

                do
                {
                    Console.WriteLine("Festnetznummer von Eintrag #{0} ?", telefonbuch[i, 0]);
                } while (!long.TryParse(Console.ReadLine(), out tempnummer));
                telefonbuch[i, 1] = tempnummer;         // Festnetznummer
                do
                {
                    Console.WriteLine("Handynummer von Eintrag #{0} ?", telefonbuch[i, 0]);
                } while (!long.TryParse(Console.ReadLine(), out tempnummer));
                telefonbuch[i, 2] = tempnummer;         // Handynummer
                do
                {
                    Console.WriteLine("Geschäftsnummer von Eintrag #{0} ?", telefonbuch[i, 0]);
                } while (!long.TryParse(Console.ReadLine(), out tempnummer));
                telefonbuch[i, 3] = tempnummer;         // Geschäftsnummernummer

                Console.Clear();
            }

            Console.WriteLine("TELEFONBUCH");
            Console.WriteLine("-----------");
            Console.WriteLine("\n\n");
            Console.WriteLine("===============================================================");
            for (int i = 0; i < anzahlE; i++)
            {
                Console.Write("Eintrag #{0}:   ", telefonbuch[i, 0]);
                Console.WriteLine(              "Festnetznummer  - {0}", telefonbuch[i, 1]);
                Console.WriteLine("              Handynummer     - {0}", telefonbuch[i, 2]);
                Console.WriteLine("              Geschäftsnummer - {0}", telefonbuch[i, 3]);
                Console.WriteLine("===============================================================");
            }
            Console.ReadLine();


        }
    }
}
vote_ok
von mattthias (260 Punkte) - 20.08.2015 um 12:27 Uhr
Man kann im Prinzip alles eingeben. Ich wollt's allgemein halten. Keine Ahnung ob das Punktabzug gibt, weil Aufgabenstellung verfehlt? ;)
Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace Telefonbuch {
    class Program {
        static void Main(string[] args) {
            
            int menueAuswahl = 0;                       //String menueAuswahlStr wird geparst in menueAuswahl
            string menueAuswahlStr;                     //Initiale Eingabeannahme von der Konsole
            string[,] daten = new string[5, 3];         //Die fuenf Datensaetze mit den drei Unterpunkten

            while (true) {

                Console.WriteLine("Waehlen sie.");      //Hier beginnt das Auswahlmenue
                Console.Write("1. Daten eintragen.\n2. Programm beenden.\n");
                menueAuswahlStr = Console.ReadLine();   //Die Eingabe in die Konsole erfolgt
                menueAuswahl = Int32.Parse(menueAuswahlStr);    //Der String wird in einen Int verwandelt

                switch (menueAuswahl) { 
                
                    case 1:
                        Console.Clear();
                        for (int zaehler = 0;zaehler < 5;zaehler++) {   //For-Schleife, die die Daten annimmt

                            Console.WriteLine("Datensatz {0}", zaehler + 1);

                            Console.Write((zaehler + 1) + ".1.");
                            daten[zaehler, 0] = Console.ReadLine();
                            Console.Write((zaehler + 1) + ".2.");
                            daten[zaehler, 1] = Console.ReadLine();
                            Console.Write((zaehler + 1) + ".3.");
                            daten[zaehler, 2] = Console.ReadLine();
                        }

                        Console.Clear();                //Leeren der Konsole nach beendigter Eingabe
                        for (int zaehler = 0;zaehler < 5;zaehler++) {   //For-Schleife zur Ausgabe der Daten

                            Console.WriteLine((zaehler + 1) + ".1." + daten[zaehler, 0]);
                            Console.WriteLine((zaehler + 1) + ".2." + daten[zaehler, 1]);
                            Console.WriteLine((zaehler + 1) + ".3." + daten[zaehler, 2]);
                        }
                            break;
                    case 2:
                        return;
                    
                    default:                            //Falls jemand etwas anderes eingibt als 1 und 2 wird das Progamm beendet.
                        return;
                
                }
            }
        }
    }
}
vote_ok
von Mexx (2370 Punkte) - 21.08.2015 um 23:46 Uhr
Screenshot: http://www0.xup.in/exec/ximg.php?fid=10391543

Info: Sorry falls die Darstellung bei euch Variiert, die Konsole von Windows 10 lässt sich in der Breite vergrößern und ist noch ein wenig ungewohnt. Sollte aber passen :)

Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.Serialization.Formatters.Binary;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;

namespace Array_Telefonbuch
{
    [Serializable]
    class Program
    {
        static string[,] telefonbuch;

        static void Main(string[] args)
        {
            if (File.Exists("C:\\Telefonbuch.dat"))
                telefonbuch = Telefonbuch_Laden();
            else
                telefonbuch = new string[1, 5];

            int einträge = telefonbuch.Length / 5;
            Console.Write("Geben Sie einen Namen, eine Telefonnummer, eine Handynummer und eine " +
                          "Geschäftsnummer durch Komma getrennt ein. Möchten Sie einen Eintrag überspringen" + 
                          "geben Sie ein Leerzeichen ein.\n" +
                          "Bsp: \"Max Mustermann, 06589 1234, 0170 12345678, 06589 1789 11\"\n" + 
                          "Geben Sie \"ausgabe\" ein um das Telefonbuch nur auszugeben. \n\n");
            Console.Write(einträge.ToString() + ":");
            string input = Console.ReadLine();
            if (input == "ausgabe")
            {
                Console.Clear();
                Telefonbuch_Ausgeben(telefonbuch);
                Console.ReadKey();
                Environment.Exit(0);
            }

            string[] check = input.Split(',');
            for (int j = 0; j < 4; j++)
            {
                check[j] = check[j].Trim();
                if (check[j].Length > 19)
                {
                    Console.WriteLine("Einer der Einträge war zu lang. Erlaubt sind max. 19 Zeichen " +
                                      "pro Eintrag!");
                    Console.ReadKey();
                    Environment.Exit(0);
                }
            }
            if (check.Length == 4)
            {
                telefonbuch[einträge - 1, 0] = einträge.ToString();
                for (int i = 1; i <= 4; i++)
                    telefonbuch[einträge - 1, i] = check[i - 1];

                telefonbuch = Telefonbuch_Vergrössern(telefonbuch);
                Telefonbuch_Speichern(telefonbuch);
                Console.Clear();
                Telefonbuch_Ausgeben(telefonbuch);
                Console.ReadKey();
            }
            else
            {
                Console.WriteLine("Ihre Eingaben stimmen nicht mit der Signatur des Telefonbuchs überein");
                Environment.Exit(0);
            }

        }

        /// <summary>
        /// Lädt das Telefonbuch vom Datenträger (von C: Root)
        /// </summary>
        /// <returns>Telefonbuch</returns>
        static string[,] Telefonbuch_Laden()
        {
            BinaryFormatter bf = new BinaryFormatter();
            Stream stream = new FileStream("C://Telefonbuch.dat", FileMode.OpenOrCreate);
            string[,] tb = (string[,])bf.Deserialize(stream);
            stream.Close();
            return tb;
        }

        /// <summary>
        /// Speichert das Telefonbuch auf dem Datenträger (unter C: Root)
        /// </summary>
        /// <param name="tb">Das zweidimensionale Array mit dem Telefonbuch</param>
        static void Telefonbuch_Speichern(string[,] tb)
        {
            BinaryFormatter bf = new BinaryFormatter();
            Stream stream = new FileStream("C://Telefonbuch.dat", FileMode.OpenOrCreate);
            bf.Serialize(stream, tb);
            stream.Close();
        }

        /// <summary>
        /// Vergrößert das Array mit dem Telefonbuch
        /// </summary>
        /// <param name="tb">Telefonbuch</param>
        /// <returns>Das vergrößerte Array</returns>
        static string[,] Telefonbuch_Vergrössern(string[,] tb)
        {
            string[,] neu = new string[telefonbuch.Length / 5 + 1, 5];
            for (int i = 0; i < tb.Length / 5; i++)
                for (int j = 0; j < 5; j++)
                    neu[i, j] = telefonbuch[i, j];
            return neu;
        }

        /// <summary>
        /// Gibt die Einträge im Telefonbuch in einer Tabellenstruktur in der Konsole aus
        /// </summary>
        /// <param name="tb">Telefonbuch</param>
        static void Telefonbuch_Ausgeben(string[,] tb)
        {
            const int spaltenbreite = 15;
            // Tabellenkopf ausgeben //////////////////////////////////////////////////////////
            string[] spaltennamen = new string[] { "ID", "Name", "Telefon", "Handy", "Geschäftlich" };
            for (int i = spaltenbreite * 5; i > 0; i--)
                Console.Write("-");
            Console.Write("\n");
            for (int n = 0; n <= 4; n++)
            {
                Console.Write("|" + spaltennamen[n]);
                for (int o = spaltenbreite - (spaltennamen[n].Length + 1); o > 0; o--)
                    Console.Write(" ");
            }
            Console.Write("\n");
            for (int m = spaltenbreite * 5; m > 0; m--)
                Console.Write("-");
            Console.Write("\n");
            //////////////////////////////////////////////////////////////////////////////////

            // Einträge ausgeben /////////////////////////////////////////////////////////////
            for (int j = 0; j < tb.Length / 5 - 1; j++)
            {
                for (int k = 0; k <= 4; k++)
                {
                    Console.Write("|" + tb[j, k]);
                    for (int l = spaltenbreite - (tb[j, k].Length + 1); l > 0; l--)
                        Console.Write(" ");
                }
                Console.Write("\n");
            }
            for (int o = spaltenbreite * 5; o > 0; o--)
                Console.Write("-");
            //////////////////////////////////////////////////////////////////////////////////
        }
    }
}
2 Kommentare
vote_ok
von Alucard1766 (930 Punkte) - 24.08.2015 um 11:16 Uhr
Ginge mit [][](jagged) Arrays etwas einfacher als mit [,] (multidimensional) da man ein ganzes 1D Array in ein 2D Array kopieren kann. Dies wäre nützlich in der for-Schlaufe in der MAIN-Funktion

Quellcode ausblenden C#-Code
enum NUMMERN
        {
            Festnetznummer,
            Handynummer,
            Geschaeftsnummer
        }

        static void Main(string[] args)
        {
            string[,] telefonbuch = new string[5, 3];
            int counter = 1;

            for (int i = 0; i < 5; i++)
            {
                Console.WriteLine("Datensatz " + counter);
                counter++;
                string[] tmp = leseDatensatz();
                telefonbuch[i, 0] = tmp[0];
                telefonbuch[i, 1] = tmp[1];
                telefonbuch[i, 2] = tmp[2];

                ausgebenTelefonbuch(telefonbuch);
            }
        }

        static void ausgebenTelefonbuch(string[,] telefonbuch)
        {
            Console.Clear();
            for (int i = 0; i < 5; i++)
            {
                Console.WriteLine("Datensatz " + (i + 1));
                for (int j = 0; j < 3; j++)
                {
                    if (telefonbuch[i, j] != null)
                        Console.WriteLine((NUMMERN)j + ": " + telefonbuch[i, j]);
                    else
                        Console.WriteLine((NUMMERN)j + ": Noch nicht eingegeben");
                }
            }
            Console.ReadLine();
            Console.Clear();
        }

        static string[] leseDatensatz()
        {
            string[] datensatz = new string[3];

            for (int i = 0; i < 3; i++)
            {
                Console.Write("Geben Sie die " + (NUMMERN)i + " ein: ");
                datensatz[i] = Console.ReadLine();
            }

            return datensatz;
        }
vote_ok
von n.rohde (400 Punkte) - 28.08.2015 um 10:17 Uhr
Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Array_Telefonbuch_typ.de
{
    class Program
    {
        static void Main(string[] args)
        {
            // Deklaration der Variablen
            string[,] Telefonbuch;
            int anzahlDS;

            Console.Write("Wie viele Datensätze: ");

            // Inistialisierung (Definition)
            anzahlDS = Convert.ToInt32(Console.ReadLine());
            Telefonbuch = new String[anzahlDS, 4];

            Console.Clear();

            // Datensätze einlesen
            for (int i = 0; i < anzahlDS; i++)
            {
                Telefonbuch[i, 0] = Convert.ToString(i + 1);
                if (i == 0)
                    Console.WriteLine(Convert.ToString(i + 1) + ". Datensatz:");
                else
                    Console.WriteLine("\n" + Convert.ToString(i + 1) + ". Datensatz:");
                Console.Write("Festnetznummer: ");
                Telefonbuch[i, 1] = Console.ReadLine();
                Console.Write("Handynummer: ");
                Telefonbuch[i, 2] = Console.ReadLine();
                Console.Write("Geschäftliche Nummer: ");
                Telefonbuch[i, 3] = Console.ReadLine();
            }

            Console.Clear();

            // Datensätze auslesen
            for (int i = 0; i < anzahlDS; i++)
            {
                if (i == 0)
                    Console.WriteLine("Laufendenummer: " + Telefonbuch[i, 0]);
                else
                    Console.WriteLine("\nLaufendenummer: " + Telefonbuch[i, 0]);
                Console.WriteLine("Festnetznummer: " + Telefonbuch[i, 1]);
                Console.WriteLine("Handynummer: " + Telefonbuch[i, 2]);
                Console.WriteLine("Geschäftliche Nummer: " + Telefonbuch[i, 3]);
            }
            Console.Read();
        }
    }
}
1 Kommentar
vote_ok
von Snuuug (120 Punkte) - 04.09.2015 um 15:01 Uhr
Quellcode ausblenden C#-Code
using System;

namespace Das_Array_Telefonbuch
{
    public class Program
    {
        static void Main(string[] args)
        {
            string[,] Numbers = new string[5,4];
            int EintNr = 1;
            for (int i = 0; i < 5; i++)
            {
                Console.WriteLine("Festnetznummer: ");
                Numbers[i, 0] = Console.ReadLine();
                Console.WriteLine("HandyNummer: ");
                Numbers[i, 1] = Console.ReadLine();
                Console.WriteLine("Gesch. Tel.Nummer: ");
                Numbers[i, 2] = Console.ReadLine();
                Numbers[i, 3] = "Nr. " + EintNr;
                EintNr++;
                Console.Clear();
            }
            Console.WriteLine("LETZTER EINTRAG");
            Console.ReadKey();
            for (int j = 0; j < 5; j++)
            {
                Console.WriteLine(Numbers[j, 3]);
                Console.WriteLine("Festnetznummer       " + Numbers[j, 0]);
                Console.WriteLine("HandyNummer          " + Numbers[j, 1]);
                Console.WriteLine("Gesch. Tel.Nummer    " + Numbers[j, 2]);
                Console.WriteLine(" ");
            }
            Console.ReadKey();
            
            
        }
    }
}
vote_ok
von jingyophuong (140 Punkte) - 21.09.2015 um 14:50 Uhr
Quellcode ausblenden C#-Code
string[,] nummer = new string[5, 4];
string[] details = { "Name", "Festnetznummer", "Handynummer", "Geschaeftnummer"};
           
int erstIndex;
int zweiteIndex;
        for (erstIndex = 0; erstIndex < 5; erstIndex++)
        {
             Console.WriteLine("{0}.Person", erstIndex+16);

              for (zweiteIndex = 0;  zweiteIndex < 4; zweiteIndex++)
              {
                    Console.Write("{0}: ", details[zweiteIndex]);
                   nummer[erstIndex,zweiteIndex] = Console.ReadLine();                       
              }
         }
vote_ok
von jkim1708 (40 Punkte) - 28.11.2015 um 14:03 Uhr
Quellcode ausblenden C#-Code



static void Main(string[] args)
        {
           
                string[,] Datenfeld = new string[5, 4];

               // string[] Datenfeld1 = new string[] { "name1", "festnetznummer1", "mobilnummer1", "businessnummer1" };


               // Datenfeld[Zeilen,Spalten]

                
                for (int anzahl = 0; anzahl < 5; anzahl++)
            {
                Console.WriteLine("Name?");
                Datenfeld[anzahl ,0] = Console.ReadLine();

                Console.WriteLine("Festnetznummer");
                Datenfeld[anzahl,1] = Console.ReadLine();

                Console.WriteLine("Mobilnummer?");
                Datenfeld[anzahl,2] = Console.ReadLine();

                Console.WriteLine("Businessnummer?");
                Datenfeld[anzahl,3] = Console.ReadLine();


                for (int eintrag = 0; eintrag < anzahl + 1; eintrag++)
                {
                    Console.WriteLine("         " + eintrag + 1 + ". " + "Eintrag");
                    Console.WriteLine("             1. " + Datenfeld[eintrag, 0]);
                    Console.WriteLine("             2. " + Datenfeld[eintrag, 1]);
                    Console.WriteLine("             3. " + Datenfeld[eintrag, 2]);
                    Console.WriteLine("             4. " + Datenfeld[eintrag, 3]);

                    if (eintrag == 4)
                    {
                        Console.ReadLine();
                    }
                }
               
                
            }
vote_ok
von rebar (60 Punkte) - 19.06.2016 um 00:44 Uhr
Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ArrayTelefonbuch
{
    class Program
    {
        static void Main(string[] args)
        {
            string[,] telefonnummern = new string[5, 3];

            do
            {
                Console.Clear();
                Console.WriteLine("Willkommen beim Telefonbuch\n");
                Console.WriteLine("1. Eintrag hinzufügen\n2. Eintrag ausgeben\n3. Alle Einträge Ausgeben");
                int eingabe = Convert.ToInt32(Console.ReadLine());

                switch (eingabe)
                {
                    case 1:
                        Console.Clear();
                        for (int i = 0; i < telefonnummern.GetLength(0); i++)
                        {
                            if (telefonnummern[i, i] == null)
                            {

                                Console.WriteLine("{0}. Eintrag\nFestnetznummer: ", i + 1);
                                telefonnummern[i, 0] = Console.ReadLine();
                                Console.WriteLine("Handynummer: ");
                                telefonnummern[i, 1] = Console.ReadLine();
                                Console.WriteLine("Geschäftlich: ");
                                telefonnummern[i, 2] = Console.ReadLine();
                                break;
                            }
                        }
                        Console.WriteLine("Beliebige Taste drücken um wieder ins Hauptmenü zu gelangen");
                        Console.ReadKey();
                        break;
                    case 2:
                        Console.Clear();
                        Console.WriteLine("Welchen Eintrag möchten Sie ausgeben? (1 - 5) ");
                        int e = Convert.ToInt32(Console.ReadLine());
                        Console.WriteLine("{0}. Eintrag\nFestnetznummer: {1}\nHandynummer: {2}\nGeschäftlich: {3}\n\n", e, telefonnummern[e - 1, 0], telefonnummern[e - 1, 1], telefonnummern[e - 1, 2]);
                        Console.WriteLine("Beliebige Taste drücken um wieder ins Hauptmenü zu gelangen");
                        Console.ReadKey();
                        break;
                    case 3:
                        Console.Clear();
                        for (int i = 0; i < telefonnummern.GetLength(0); i++)
                        {
                            if (telefonnummern[i, i] != null)
                            {
                                Console.WriteLine("{0}. Eintrag\n", i + 1);
                                Console.WriteLine("Festnetznummer: {0}\nHandynummer: {1}\nGeschäftlich: {2}\n\n", telefonnummern[i, 0], telefonnummern[i, 1], telefonnummern[i, 2]);
                            }
                            else
                            {
                                break;
                            }
                        }
                        Console.WriteLine("Beliebige Taste drücken um wieder ins Hauptmenü zu gelangen");
                        Console.ReadKey();
                        break;
                    default:
                        break;
                }
            } while (true);



        }
    }
}