Proiect bioritm in c#
-
14. května 2010 20:31
am facut un proiect care utilizeaza un grafic cu sinusoide pentru a calcula ciclurile bioritmice. bioritmul se calculeaza dupa o anumita formula in functie de numarul de zile traite de la nastere pana in prezent. ce ii ciudat este ca imi merge pentru toate lunile anului in afra de ianuarie si nu stiu de ce.
asta este codul pentru calcularea numarului de zile traite:
private
void button4_Click(object sender, EventArgs e)
{
pictureBox10.Visible =
false;
int d, m, y,x;
try
{
d =
Convert.ToInt16(comboBox1.Text);
m = comboBox2.SelectedIndex;
y =
Convert.ToInt16(comboBox3.Text);
DateTime dt = new DateTime(y, m, d);
DateTime dt2 = DateTime.Now;
x = (dt2 - dt).Days;
}
catch (Exception ex)
{
return; }
draw(x);
}
functia draw am folosit-o pentru trasarea graficului dupa formulele pe care le am pt sinusoide. va rog frumos sami raspundeti cat mai repede fiindca luni trebuie sa termin proiectu si nu inteleg de ce nu merge.
Všechny reakce
-
17. května 2010 9:51
Salut Leda_R
Structura TimeSpan te-ar putea ajuta aici.
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { DateTime myDateTime=DateTime.ParseExact("19780823120000", "yyyyMMddhhmmss", null); textBox1.Text = TotalDaysElapsed(myDateTime).ToString(); } private long TotalDaysElapsed(DateTime dtYourDate) { long lTotalDaysElapsed = 0; //Data curenta DateTime dtCurrent = DateTime.Now; //Diferenta intre data curenta si data introdusa ca parametru al functiei TimeSpan tsDiff = dtCurrent.Subtract(dtYourDate); //Total zile lTotalDaysElapsed = lTotalDaysElapsed + tsDiff.Days; return lTotalDaysElapsed; } } }Cu bine,
Robert
-
25. června 2010 13:27
Salut Robert,
E putin cam OT, dar ce surpriza placuta sa dau in sfarsit de forumurile romanesti, si - in acelasi timp - sa te aflu (si) aici.
Toate cele bune,
MarcelP.S. @Leda_R: Nu e deloc ciudat ca "nu-ti merge" pentru luna ianuarie. Daca te gandesti bine, comboBox2.SelectedIndex va returna 0 pentru primul element din lista (luna ianuarie). Dat fiind ca nu putem avea o luna cu indexul zero in constructorul lui DateTime, in momentul in care incerci sa instantiezi d.ex. DateTime dt = new DateTime(1010, 0, 26) te vei trezi cu o exceptie care te anunta ca o asemenea data nu poate fi construita. Fiindca ai optat insa sa inchizi ochii la orice exceptie aruncata (catch/return - de ce?), utilizatorul nu va afla niciodata ce s-a intamplat de fapt. Rezolvarea e simpla:
DateTime dt = new DateTime(y, m + 1, d);
- Navržen jako odpověď Robert BreitenhoferMicrosoft Contingent Staff 7. července 2010 7:58
- Označen jako odpověď Denis ChiurtuOwner 18. srpna 2010 12:10