none
Proiect bioritm in c#

    問題

  • 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.

    2010年5月14日 下午 08:31

解答

  • 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,
    Marcel

     

    P.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);

     

     

    2010年6月25日 下午 01:27

所有回覆

  • 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

    2010年5月17日 上午 09:51
  • 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,
    Marcel

     

    P.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);

     

     

    2010年6月25日 下午 01:27