Autor Beitrag
Rakeem
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 27



BeitragVerfasst: Do 19.03.09 17:08 
Hi bin dabei ein Programm zuschreiben das Daten ordnet aber irgendwie kriege ich einen fehler nicht weg.




ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
/******************************************************************
Programm: Switch case 
Funktion: Ordnen von Daten
Bemerkung: fehlt
Autor(en): 
Letzte Aenderung:
    --  erste Version           
******************************************************************/

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

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int tag1, monat1, jahr1;
            int tag2, monat2, jahr2;
            int tag, monat, jahr;
            double schaltjahr = 0;
            int i = 0;

            Console.WriteLine("\t\t______________________________________________");
            Console.Write("\t\tBitte geben Sie einen gewünschten Tag ein: ");
            tag = Convert.ToInt32(Console.ReadLine());
            Console.Write("\t\tBitte geben Sie einen gewünschten Monat ein: ");
            monat = Convert.ToInt32(Console.ReadLine());
            Console.Write("\t\tBitte geben Sie einen gewünschtes Jahr ein: ");
            jahr = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("\t\t______________________________________________");


            for(i = 0;i < 3 ;i++)
            {
                if(tag>= 32 && monat == 1 || monat == 3 || monat == 5 || monat == 7 || monat == 8 || monat == 10 || monat == 12// Monate mit 31 tagen
          {
            Console.WriteLine("Fehler!Bitte geben Sie ein gültiges Datum ein!");
          }
                else
                {
                    if(tag>= 31 && monat == 4 || monat == 6 || monat == 9 || monat == 11// Monate mit 30 tagen
                    {
                        Console.WriteLine("Fehler!Bitte geben Sie ein gültiges Datum ein!");
            }
            else
            {
                        if (jahr % 4 == 0// schaltjahr
              {
                if(jahr % 100 == 0)
                {
                  if (jahr % 400 == 0)
                                {
                                    schaltjahr = 1;
                                }
                                else
                                {
                                    schaltjahr = 0;
                                }
                                switch(i)
                                {
                                    case 1:
                                        Console.Write("tag");
                                        Console.Write("monat");
                                        Console.Write("jahr");
                                        break;
                                    case 2:
                                        Console.Write("tag");
                                        tag=tag1;
                                        Console.Write("monat");
                                        monat=monat1;
                                        Console.Write("jahr");
                                        jahr=jahr1;
                                        break;
                                    case 3:
                                        Console.Write("tag");
                                        tag=tag2;
                                        Console.Write("monat");
                                        monat=monat2;
                                        Console.Write("jahr");
                                        jahr=jahr2;
                                        break;
                                }
                                if(tag && monat && jahr > tag1 && monat1 && jahr1)
                                {
                                    Console.Write(tag);
                        Console.Write(monat);
                        Console.Write(jahr);
                      }
                      else
                      {
                                    if(tag && monat && jahr > tag2 && monat2 && jahr2)
                                    {
                                        Console.Write(tag);
                            Console.Write(monat);
                            Console.Write(jahr);
                          }
                          else
                          {
                                        if (tag1 && monat1 && jahr1 > tag && monat && jahr)
                                        {
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}



Moderiert von user profile iconChristian S.: Topic aus Basistechnologien verschoben am Do 19.03.2009 um 18:19


Zuletzt bearbeitet von Rakeem am Mi 08.12.10 20:05, insgesamt 2-mal bearbeitet
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Do 19.03.09 17:43 
user profile iconRakeem hat folgendes geschrieben Zum zitierten Posting springen:
Hi bin dabei ein Programm zuschreiben das Daten ordnet aber irgendwie kriege ich einen fehler nicht weg.

Was denn für einen Fehler? Compiler oder Laufzeit? Wie lautet die Fehlermeldung; wenn es keine gibt: woran merkst du, dass etwas falsch ist?

Außerdem ist Code unbedingt als solcher zu markieren. So ist es überhaupt nicht lesbar. Ändere deinen ersten Beitrag (der Button mit der Schere), markiere den Code-Bereich, drücke auf "Bereiche", wähle C# aus, drücke den Plus-Button. Danach kann man vielleicht antworten.

Zur Prüfung, ob ein gültiges Datum eingegeben wurde, gibt es die schöne DateTime.TryParse-Methode.

Jürgen
Rakeem Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 27



BeitragVerfasst: Do 19.03.09 17:51 
als fehler ist gekenzeichnet Der Operator "&&" kann nicht auf Operanden vom Typ "int" angewendet werden.
Skiller-1988
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 100

Win XP | Debian | Ubuntu
C# | PHP | VB.NET
BeitragVerfasst: Do 19.03.09 18:23 
Ja denn && ist ein Logischer Verküpfungsoperator also das AND was nur zwei bool - werte ( Wahr / Falsch Bedingung ) miteinander Verknüpfen kann.

Der Fehler ist also :
ausblenden C#-Quelltext
1:
if (tag && monat && jahr > tag2 && monat2 && jahr2)					


Statt dessen könntest du die 2 Daten in ein DateTime umwandeln und dann die DateTimes verglichen.

_________________
~ Wer Rechtschreibfehler findet darf sie behalten ~
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Do 19.03.09 19:10 
user profile iconSkiller-1988 hat folgendes geschrieben Zum zitierten Posting springen:
Statt dessen könntest du die 2 Daten in ein DateTime umwandeln und dann die DateTimes verglichen.

Das empfehle ich vorrangig; deshalb habe ich DateTime.TryParse vorgeschlagen.

user profile iconSkiller-1988 hat folgendes geschrieben Zum zitierten Posting springen:
Der Fehler ist also :
ausblenden C#-Quelltext
1:
if (tag && monat && jahr > tag2 && monat2 && jahr2)					

Lösung innerhalb dieses Versuchs: Du musst jeden einzelnen Wert vergleichen, sodass drei AND entstehen für drei bool-Werte, die sich durch den Vergleich je zweier int-Werte ergeben:
ausblenden C#-Quelltext
1:
if ( (tag > tag2) && (monat > monat2) && (jahr > jahr2) )					

Das wäre eine logisch einwandfreie Formulierung.

Aber das ist sowieso als Vergleich zweier Datumsangaben Quatsch: Der 1.4.2009 liegt später als der 28.2.2009, würde aber bei dem, was Du anscheinend versuchst, eine falsche Antwort ergeben.

Jürgen
Rakeem Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 27



BeitragVerfasst: Do 19.03.09 20:05 
Ja danke hab denn Fehler beheben können.
Ja hab ich auch gemerkt das es als falsch ausgegeben wird haste vllt ein vorschlag wie ich es richtig machen könnte.
Nemag
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 132
Erhaltene Danke: 2



BeitragVerfasst: Fr 20.03.09 07:25 
Naja der Jürgen hat dir doch schon die DateTime.TryParse Methode gesagt, du müsste halt deine 3 Variablen Jahr Monat Tag damit in ein Zeitformat umwandeln.

Falls du mit der Methode nicht klar kommst dann mach halt:
(Wovon ich aber abrate und wieder zu TryParse verweise)

DateTime xxx1 = new DateTime(jahr1, monat1, tag1 , ...)
DateTime xxx2 = new DateTime(jahr2, monat2, tag2 , ...)

edit: übrigens wenn du in DateTime konvertierst gibt es auch die schöne Funktion IsLeapYear womit du dir deine ganze Schaltjahr abfrage sparst.