C# Array erstellen - Wochentage und Temperatur?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Ich würde ehrlich gesagt ein Dictionary erstellen. Dies ist im Grunde nichts anderes, als ein assoziatives Array, heißt, statt dem Index, kannst du einen beliebigen Typ als Key wählen. Als Key nutzt du ein Enum, welches alle Wochentage auflistet.

using System;
using System.Collections.Generic;

public class Test { private enum Days { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday };
public static void Main() { var temperaturesPerWeek = new Dictionary[Days, int]{ // spitze Klammern!
{ Days.Monday, 17 }, { Days.Tuesday, 22 }, { Days.Wednesday, 10 }, { Days.Thursday, 19 }, { Days.Friday, 21 }, { Days.Saturday, 22 }, { Days.Sunday, 27 } };
foreach(var data in temperaturesPerWeek){ Console.WriteLine(data.Key.ToString() + ": " + data.Value); } } }

Statt | solltest du natürlich die Spitzen Klammern nutzen! In dem Editor von GF sind sie leider nicht erlaubt.

Um dem Dictionary nicht inital einen Wert zuweisen, gibt es entweder die Methode Add oder den Indexer:

temperaturesPerWeek[Days.Monday] = 19;

Weitere Informationen zu Dictionarys findest du in der Dokumentation von Microsoft: https://msdn.microsoft.com/de-de/library/xfhwa508(v=vs.110).aspx

Danke,

Das werde ich gleich mal Ausprobieren. 

Aber geht sowas auch mit dem Array? 

0
@ANDROUDT

Nein.

Du kannst höchstens in Kombination mit einem Enum arbeiten:

using System;

public class Test { private enum Weekdays { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday };
public static void Main() { var days = Enum.GetValues(typeof(Weekdays)); int[] temperatures = new int[days.Length];
foreach(var day in days) { Console.WriteLine(string.Format("{0}: {1}", day.ToString(), temperatures[(int)day])); } } }
1
@regex9

Oder du erstellst dir ein Struct / eine Hilfsklasse, die Temperatur und Name des Wochentags speichert. Dann erstellst du ein Array, welches diesen neuen Typ aufnimmt:

using System;

public struct DayData {
public string Day;
public int Temperature;
}
public class Test
{
public static void Main()
{
DayData[] days = new DayData[] {
new DayData { Day = "Monday", Temperature = 22 },
new DayData { Day = "Tuesday", Temperature = 23 },
new DayData { Day = "Wednesday", Temperature = 19 },
new DayData { Day = "Thursday", Temperature = 22 },
new DayData { Day = "Friday", Temperature = 26 },
new DayData { Day = "Saturday", Temperature = 27 },
new DayData { Day = "Sunday", Temperature = 21 }
};
foreach(var day in days)
{
Console.WriteLine(string.Format("{0}: {1}", day.Day, day.Temperature));
}
}
}
0

Würde ich anders machen! Speicher doch deine Wochentage in einem Enum!

Montag die 0, Dienstag die 1, Sonntag die 6.

Dann nimmste dein Array und schreibst dir da die Temperaturen rein.

Dann fragst du noch ab, was im enum die (bsp:) 3 ist und dann weißt du auch den tag dazu

Vielen Dank, 

Würde es auch nur mit Array und einer Schleife gehen? 

Das mit dem Enum werde ich aber versuchen zu realisieren. 

0
@ANDROUDT

Ja klar geht das auch. Entweder machst du eine eigene Klasse mit Wochentag und Temperatur als Eigenschaften

Oder du nimmst 2 Arrays und speicherst beides parallel

Oder du nimmst eine sortedList

Oder mit Enum probieren

Es gibt verschiedene Ansatzwege

1

Erstelle noch ein array des typen String in dem du für jeden Wochentag, den String eines Wochentags speicherst. Außerdem "i+1" wird nicht funktionieren, da man somit über das Array Limit hinaus kommt wenn i = anzahl -1 ist.

Danke für die Antwort. :-)

Wie würde es denn dann aussehen? 

Ich habe keinen Plan wie es mit String Array gehen soll...

0
@ANDROUDT
using System;

public class Test { public static void Main() { string[] weekdays = { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" }; int[] temperatures = new int[weekdays.Length];
for(int i = 0; temperatures.Length > i; ++i) Console.WriteLine(string.Format("{0}: {1}", weekdays[i], temperatures[i]));
} } }
1

C# Kalenderblatt Problem?

Hallo Community, ich habe ein kleines Problem. Wir müssen für die Schule einen Kalnder erstellen, der dir nach eingabe des Datums das dazugehörige Kalenderblatt anzeigt. Soweit so gut, den Wochentag errechnen klappt, die Tage des Monats errechnen auch, nur den Starttag des Monats wählen, klappt nicht. Er nimmt immer meinen Tag den ich eingegeben habe und zählt ab dem +1 hoch, bis halt zur maximalen Tage Anzahl des Monats. Gebe ich beispielsweise den 26.04.2016 eingebe kommt mit dem Julianischen Wochentag eine 2 raus, was für einen Dienstag steht und da fängt das Problem an: er fängt immer an dem eingegeben Tag an.

 for (int zähler = 1; zähler < 8; zähler++)
            {
                if (zähler == tag)
                    Console.ForegroundColor = ConsoleColor.Blue;
                else
                    Console.ForegroundColor = ConsoleColor.White;     //Wenn Tag nicht zwischen 0 und 6 ist, dann wird Tag weiß makiert

                if (zähler == (wochentag) || (wochentag == 0 && zähler == 7)) //wenn zähler ist gleich wochentag oder wochentag gleich 0 und zähler = 7 dann
                {
                    Console.Write(1 + "\t");

                    if (wochentag > 0 && wochentag < 7)  //wenn wochentag größer ist als 0 und wochentag kleiner ist als 7, dann wochentag + 1 rechnen
                        wochentag = wochentag + 1;
                    else
                        wochentag = 1;   //wenn nicht dann wochentag = 1

                    break;
                }
                else

                Console.Write("\t");
            }

            for (int i = 2; i <= tagemonat; i++)  // deklarieren Variable i mit dem Wert 2, solange i kleiner gleich tagemonat, dann i + 1
            {
                if (i == tag)  //wenn i gleich tag (das was einglesen wurde), dann blau makieren
                    Console.ForegroundColor = ConsoleColor.Blue;
                else
                    Console.ForegroundColor = ConsoleColor.White; //wenn nicht, dann weiß makieren


                if (wochentag == 1)  //wenn Wochentag gleich 1, dann n=Zeilenwechsel und r=Wagenrücklauf
                    Console.Write("\n\r");

                Console.Write(i + "\t");  // i und horizontalen tabulator ausgeben

                if (wochentag < 7) //wenn wochentag < 7, dann wochentag + 1
                    wochentag = wochentag + 1;
                else  //wenn nicht dann wochentag gleich 1
                    wochentag = 1;

Jetzt mal ein bisschen Code:

...zur Frage

Ich möchte die Daten aus meiner 2D Array Schleife auslesen ist das möglich und wie?

char hSymbol = '#';

        int[,] array = new int[119, 29];
        Random Rnd = new Random();

        int hz = 0;
        do
        {
            int i = Rnd.Next(119);
            int j = Rnd.Next(29);
            Console.SetCursorPosition(i, j);
            Console.Write(hSymbol);
            hz++;
        } while (hz < 10);

Hier brauche ich praktisch die 10 Random generierten Arrays

...zur Frage

Anzahl Array mit Inhalt in C#?

double[] i = new double [12];

alle arrays sind mit 0 vordefiniert weil sie leer sind.

jetzt habe ich manche Arrays im laufe des Programmes mit Zahlen gefüllt und möchte nun herausfinden wie viele Arrays beschrieben sind.

Wenn nur 4 Arrays Daten enthalten, dann will Ich mit der 4 weiterrechnen, aber ich bekomme es nicht mehr hin.

...zur Frage

Weiß jemand wie man die Summe von m bis n in C# mit einer for -schleife programmiert?

Also ich habe das hier programmiert (jedoch kommt nach dem debuggen "siehe bild"):

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace S._20Nr._5
{
    class Program
    {
        static void Main(string[] args)
        {
            int m, n, i , summe;

            Console.Write(" hier die Zahl für m eingeben ");
            m = Convert.ToInt32(Console.ReadLine());
            Console.Write(" hier die Zahl für n eingeben ");
            n = Convert.ToInt32(Console.ReadLine());
            summe = 1;
            for (i = m; m <= n; summe = i + n + m )
            {
                Console.Write(" Die Summe von " + m + " bis " + n + " ist " + summe );
            }
            
            Console.Read();
        }
    }
}

 

 

ich würde euch sehr dankbar sein, wenn ihr mir helfen könntet

MfG Adigraga

...zur Frage

Pyramide aus X's programmieren in C#?

hey ich soll eine Pyramide die aus lauter X's besteht programmieren.

also sowas hier:

X

XX

XXX

XXXX usw. nur das die spitze in der mitte sein soll.

bis jez hab ich das hier:

static void Main(string[] args)

{

Console.Write("Anzahl Zeilen: ");

int n = Convert.ToInt32(Console.ReadLine());

for (int i = 1; i <= n; i++)

{

for (int d = 1; d <= 2 * i - 1; d++)

{

Console.Write("X");

Console.ReadLine();

}

was fehlt mir noch? des stimmt einfach nicht

...zur Frage

Was möchtest Du wissen?