Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > .NET Languages
You last visited: Today at 12:46

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[C#]1 Jahr u. 2 Monate anstatt 14 Monate

Discussion on [C#]1 Jahr u. 2 Monate anstatt 14 Monate within the .NET Languages forum part of the Coders Den category.

Reply
 
Old   #1
 
.BritainAndy's Avatar
 
elite*gold: 0
Join Date: Jan 2010
Posts: 1,385
Received Thanks: 1,006
[C#]1 Jahr u. 2 Monate anstatt 14 Monate

Hi Com,

sorry erstmal für den Fenstertitel, mir ist nichts eingefallen.
Also mein Problem ist folgendes:
Ich habe ein Programmer gecodet, wo man sein Einkommen, seine Ausgaben und sein Wunsch betrag eingeben muss .
So und als ergebnis wird in ein Label dann geschrieben "Du musstr noch xx monate warten bis du dein wunschbetrag erreicht hast".
Klappt alles wunderbar, nur ich will dass anstatt "Du hast in 1 Jahr oder 14 Monaten dein Betrag" lieber "Du hast in 1,2 Jahren dein Betragt .." ausgegeben wird.
Nur weiß ich nicht, wie ich das mache. Hier mein Source:

Code:
        private void button1_Click(object sender, EventArgs e)
        {

            int kontostand = Convert.ToInt32(txtEinkommen.Text);
            int ausgaben = Convert.ToInt32(txtAusgaben.Text);
            int gewinn = (Convert.ToInt32(txtEinkommen.Text)) - (Convert.ToInt32(txtAusgaben.Text));
            int wunsch = Convert.ToInt32(textBox1.Text);
            int monate = 0;

            while (kontostand < wunsch)
            {
                monate++;
                kontostand = kontostand + gewinn;
            }

            lblErgebnis.Text = "Du musst noch:" + Environment.NewLine + monate / 12 + " Jahre oder" + Environment.NewLine + monate + " Monate sparen";
        }
.BritainAndy is offline  
Old 04/23/2011, 16:22   #2
 
xNopex's Avatar
 
elite*gold: 0
Join Date: May 2009
Posts: 827
Received Thanks: 471
Code:
int jahre = monate / 12;
int restMonate = monate % 12;
lblErgebnis.Text = "Noch " + jahre + " Jahre und " + restMonate + " Monate";
oder, wenn du das als Kommazahl haben möchtest:

Code:
double zeit = monate / 12;
xNopex is offline  
Thanks
1 User
Old 04/23/2011, 16:22   #3
 
HardCore.1337's Avatar
 
elite*gold: 1
Join Date: Feb 2009
Posts: 1,726
Received Thanks: 729
Ich würde es so machen (hab keine ahnung von C#)

Code:
schleife
   ...andere code...
  if(Monate==12) 
  {
    Jahr = Jahr + 1;
    Monate = 0
  }
  ...mehr code...
HardCore.1337 is offline  
Old 04/23/2011, 21:59   #4
 
elite*gold: 0
Join Date: May 2010
Posts: 793
Received Thanks: 268
Quote:
Originally Posted by xNopex View Post
Code:
double zeit = monate / 12;
ahh das klappt nicht ^^
wenn "monate" und "12" ein int ist ist das ergebniss auch ein int was dann einen double zugewiesen wird.
du müsstest
Code:
double zeit = monate / 12d;
(mit dem d dahinter)
schreiben.

ich persönich finde es acuh besser eine jahesangabe nicht als kommastelle zu schreiben.
ich würde es so wei nope im ersten code machen nur das ich die jahre und moate in einem neuen objekt speiechere.
Code:
            int gesamtmonate = 66;//dein wert für die monsate
            int monateImJahr = 12;
            var zeit = new { monate = gesamtmonate % monateImJahr, jahre = gesamtmonate / monateImJahr };
            string text = "Du musst noch " + zeit.monate + " monate und " + zeit.jahre + " Jahre warten.";
nkkk is offline  
Thanks
1 User
Old 04/24/2011, 10:17   #5
 
.BritainAndy's Avatar
 
elite*gold: 0
Join Date: Jan 2010
Posts: 1,385
Received Thanks: 1,006
Dankeschön für die Hilfe :-)
Das mit dem Objekt gefällt mir gut, nur da muss ich mein Wissen noch etwas weiter aufbauen in C# um das genau zu verstehen.

Thread kann geschlossen werden

Andy

€dit:

Ah doch nicht ich habe ne Frage.

Quote:
int gesamtmonate = 66;//dein wert für die monsate
var zeit = new { monate = gesamtmonate % monateImJahr, jahre = gesamtmonate / monateImJahr };
Und zwar, die gesamtmonate die weiß ich ja nicht.
die Monate wie lang man sparen muss (das meinst du als gesamtmonate, oder?) die sollen ja berechnet werden.

Und noch ne frage, was genau bewirkt dieser code:
Quote:
monate = gesamtmonate % monateImJahr
Andy
.BritainAndy is offline  
Old 04/24/2011, 11:10   #6
 
xNopex's Avatar
 
elite*gold: 0
Join Date: May 2009
Posts: 827
Received Thanks: 471
Quote:
Und noch ne frage, was genau bewirkt dieser code:
Zitat:
monate = gesamtmonate % monateImJahr
Eine einfache Modulo-Rechnung:
Modulo operation - Wikipedia, the free encyclopedia
xNopex is offline  
Thanks
1 User
Old 04/24/2011, 12:55   #7
 
elite*gold: 0
Join Date: May 2010
Posts: 793
Received Thanks: 268
die gesamtmonate sind dioch das was du in deinem orogö asl monate abspeichert. ich habs in geasmtmonate um benannt weil ich sonst in mionem code "monate = monate % monateImJahr" schreiben müsste was man eig. nicht macht wenn es sich um 2 verschiedene variablen handlet
nkkk is offline  
Old 04/24/2011, 17:33   #8
 
.BritainAndy's Avatar
 
elite*gold: 0
Join Date: Jan 2010
Posts: 1,385
Received Thanks: 1,006
edit:

ich idiot ich hatte den Code an der falschen stelle.
Nur wenn ich z.b. als Einnahmen 10 euro hinschreibe als Ausgabe 1 euro und als wunschbetrag 27 euro sagt er als ergebnis 2 monate obwohl es doch 3 sind..

Source:

PHP Code:
       {
            
int kontostand Convert.ToInt32(txtEinkommen.Text);
            
int ausgaben Convert.ToInt32(txtAusgaben.Text);
            
int gewinn = (Convert.ToInt32(txtEinkommen.Text)) - (Convert.ToInt32(txtAusgaben.Text));
            
int wunsch Convert.ToInt32(textBox1.Text);
            
int monateImJahr 12;
            
int gesamtmonate = new int();

            while (
kontostand wunsch)
            {
                
gesamtmonate++;
                
kontostand kontostand gewinn;
            }

            var 
zeit = new { monate gesamtmonate monateImJahrjahre gesamtmonate monateImJahr };
            
string text "Du musst noch " zeit.monate " monate und " zeit.jahre " Jahre warten.";
            
lblErgebnis.Text ""+text+"";
        } 
.BritainAndy is offline  
Old 04/24/2011, 18:59   #9
 
elite*gold: 0
Join Date: May 2010
Posts: 793
Received Thanks: 268
Quote:
Originally Posted by .BritainAndy View Post
edit:

ich idiot ich hatte den Code an der falschen stelle.
Nur wenn ich z.b. als Einnahmen 10 euro hinschreibe als Ausgabe 1 euro und als wunschbetrag 27 euro sagt er als ergebnis 2 monate obwohl es doch 3 sind..

Source:

PHP Code:
       {
            
int kontostand Convert.ToInt32(txtEinkommen.Text);
            
int ausgaben Convert.ToInt32(txtAusgaben.Text);
            
int gewinn = (Convert.ToInt32(txtEinkommen.Text)) - (Convert.ToInt32(txtAusgaben.Text));
            
int wunsch Convert.ToInt32(textBox1.Text);
            
int monateImJahr 12;
            
int gesamtmonate = new int();

            while (
kontostand wunsch)
            {
                
gesamtmonate++;
                
kontostand kontostand gewinn;
            }

            var 
zeit = new { monate gesamtmonate monateImJahrjahre gesamtmonate monateImJahr };
            
string text "Du musst noch " zeit.monate " monate und " zeit.jahre " Jahre warten.";
            
lblErgebnis.Text ""+text+"";
        } 
ja das stimmt, aber das liegt nicht an meinem code...
ich glaube
Code:
            int kontostand = Convert.ToInt32(txtEinkommen.Text);
ist der fehler, warum ist auf dem kontostand am anfang schon ein einkommen, er sollte null sein.
nkkk is offline  
Old 04/24/2011, 20:29   #10
 
.BritainAndy's Avatar
 
elite*gold: 0
Join Date: Jan 2010
Posts: 1,385
Received Thanks: 1,006
ich habs jetzt mal durch

Code:
            while (kontostand < wunsch)
            {
                gesamtmonate++;
                kontostand = kontostand + gewinn -1;
            }
gelöst
.BritainAndy is offline  
Reply


Similar Threads Similar Threads
6 Monate Bann anstatt 1 Tag tztztzt
12/08/2008 - Metin2 - 18 Replies
doofe GMs ^^ vor drei Tagen komme ich genervt von der Arbeit und denk mir mal so, setzte dich vorm PC und zockst bissl metin2. Packe meinen acc aus und wer steht nich vor mir ein (möchtegern) GM.:D Da ich den zu meiner Zeit mal ausgebildet habe zum GM schrieb ich den mal an. Naja bissl small talk eben. nachner Zeit fragte ich ihn ob diese Person noch da wäre dich mich damals aus Team gekickt hat, weil sie angst hatte das ich schneller aufsteige als sie.



All times are GMT +1. The time now is 12:48.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.