Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: c++ Laskin

make3003 [07.05.2008 21:49:48]

#

Hei,

Olen tekemässä laskinta itselleni ja tarvitsen pariin kysymykseen vastauksen.
1. itoa(luku_las, bufferi, 10) ; <- Miten saan tuon niin, että se ei muuta liukulukua kokonaisluvuksi, vaan pitäisi sen liukulukuna ?

2. Minulla on combobox:ssa kaks vaihtoehtoa "Betoni ja Puu" ja materiaali taulukossa on määritetty niiden kertoimet.
Miten saadaan kysyttä kumpi materiaali on valittu, kun painan "laske" ?

...
static double Materiaalit[2] = {25, 4.4} ;
...
hwndCombo1=CreateWindow("combobox", NULL, WS_CHILD|WS_VISIBLE|CBS_SORT|CBS_DROPDOWNLIST, 140, 140, 100, 80, hwnd, (HMENU) 3, hInstance, NULL); // yhdistelmäruutu
SendMessage(hwndCombo1, CB_ADDSTRING, 0, (LPARAM) "Betoni"); // tekstirivien lisäys yhdistelmäruutuun
SendMessage(hwndCombo1, CB_ADDSTRING, 0, (LPARAM) "Puu");
SendMessage(hwndCombo1, CB_SETCURSEL, 0, 0); // tehdään jokin oletusvalinta
...
if (HIWORD (wParam) == BN_CLICKED) { // napinpainallus aiheuttaa BN_CLICKED-tapahtuman
	char bufferi[10], bufferi_lev[10], bufferi_kor[10], bufferi_pak[10] ;
	double luku_las ;

	if (LOWORD(wParam) == 2 ) { //LOWORD makro purkaa bitit 1-16 wParam:sta
		GetWindowText ( hwndEdit1, bufferi_lev, 10 ) ; // Luetaan Edit1 teksti
		double luku_lev = atof(bufferi_lev) ; // Muunnetaan se numeroksi
		if (luku_lev <= 0 ) MessageBox (hwnd, "Syötä leveys mitta!", "Virhe", MB_OK | MB_SYSTEMMODAL  ) ; // Jos muunnos ei onnistunut

		GetWindowText ( hwndEdit2, bufferi_kor, 10 ) ; // Luetaan Edit1 teksti
		double luku_kor = atof(bufferi_kor) ; // Muunnetaan se numeroksi
		if (luku_kor <= 0 ) MessageBox (hwnd, "Syötä korkeus mitta!", "Virhe", MB_OK | MB_SYSTEMMODAL  ) ; // Jos muunnos ei onnistunut

		GetWindowText ( hwndEdit3, bufferi_pak, 10 ) ; // Luetaan Edit1 teksti
		double luku_pak = atof(bufferi_pak) ; // Muunnetaan se numeroksi
		if (luku_pak <= 0 ) MessageBox (hwnd, "Syötä Paksuus mitta!", "Virhe", MB_OK | MB_SYSTEMMODAL  ) ; // Jos muunnos ei onnistunut

		luku_las = double ((luku_lev * luku_kor * luku_pak) * Materiaalit[0]) ;
		itoa(luku_las, bufferi, 10) ;
		SetWindowText(hwndtxt6, bufferi);

	}
}
...

Megant [07.05.2008 23:29:28]

#

1. Ota käyttöön sprintf tai snprintf

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta