Jak pokazać kilka rysowanych obiektów na jednym ekranie

0

Mam napisać program, który narysuje wykres, i teoretycznie mam go napisanego bezbłędnie, ale wyświetla mi tylko jedną pionową linię, zamiast wykresu zależności. Wiem, że jest takie polecenie, którego trzeba użyć, żeby wyświetlić kilka obiektów na jednym ekranie (żeby kolejne nie kasowały poprzednich), ale nie mogę znaleźć, jak ono brzmi i gdzie powinno się znaleźć - przypuszczam, że właśnie tego powinnam użyć, żeby program zadziałał jak trzeba. Czy potraficie mi wskazać błąd lub podszepnąć, co trzeba tu dodać? Pliska :<

#define USE_CONSOLE 
#define _USE_MATH_DEFINES 
#include <iostream> 
#include <vector> 
#include <ctime> 
#include <cstdlib> 
#include <allegro.h> 
#include <cmath> 

using namespace std; 

const double kb=1.3806488*1.0e-23;
const double h=6.626069*1.0e-34;
const double c=2.99792*1.0e8; 

vector <double> lmbd; //vector długości fal 
double ro (double, double);  //prototyp f-kcji liczacej gestosc promieniowania 
double osy [4][150]; //tablica dwuwym. zawierająca temperatury i długości fal(os y)  

//deklaracje zmiennych 
double T; 


int main() 
{ 
	allegro_init ();
	install_keyboard();
	set_color_depth(desktop_color_depth());
	set_gfx_mode(GFX_AUTODETECT_WINDOWED,640,480,0,0);

	/*instr przygotowawcze*/ 
	acquire_screen(); 
//układ współrzędnych 
hline (screen, 0, 470, 640, makecol (200, 50, 0)) ; //os x
vline (screen, 0, 470, 0, makecol (200, 50, 0));  //os y 

//wykres gestosci od dlugosci fal 

lmbd.push_back(0); //wykres od punktu 0 
int i=1; 
while (lmbd[i-1] <= 1.5) //oś x dla wartości długości fal 
{ 
lmbd.push_back(0.01*i); 
i=i++; 
} 

for (int k=1; k<4; k++) 
{ 
T = 4000+1000*k; 
for (int n=1; n<150; n++) 
{ 
osy[k][n] = ro (lmbd[n], T); 
} 
}  
 //wykres 
for (int k=1; k<4; k++) 
{ 
for (int n=1; n<=150; n++) 
{ 
putpixel  (screen, lmbd[n], 470-osy[k][n], makecol (0,100,100)); 
} 
}
	
	/*zwolnienie ekranu*/
	release_screen();
	readkey();
	return 0;
} 
END_OF_MAIN (); 
double ro (double lmbd, double T)
{
double wartosc = (8*M_PI*h*c)/(pow(lmbd,5))*(exp(h*c/(lmbd*kb*T)));
return wartosc;
}

EDIT: udało mi się znaleźć błąd przy rysowaniu układu współrzędnych, jednak nadal nie wiem, dlaczego program nie realizuje rysowania wykresu.

0

dokładniej, działa do momentu, w którym przekazuję wartość 0 do tablicy lmbd, później od pętli while, już nie działa.

1 użytkowników online, w tym zalogowanych: 0, gości: 1