» »

Microsoft visual C++ pozabo kako zacet

Microsoft visual C++ pozabo kako zacet

«
1
2

bisernik ::

Par let nazaj smo na faksu nekaj se učili programirat s C++. in takrat sem delal v "Microsoft Visual C++". Zaj bi spet nekaj rabo en enostavni program naret. Zdaj vmes nisem nič delal s tem in sem čist pozabo, kak se sploh naredi fail, da lahko potem zaženeš to vse skup.

Torej grem na "File>", tam pa ne vem več, ka morš dat. Men se zdi, da pod "New Projects". Potem tam zberem "Utility project", pa vpišem "Project name". Ko potrdim, mi izpiše sporočilo, nekaj da ni blo nobenega fajla dodanega v ta projekt, al kaj...

Skratka če mi nekdo pove, kak nardim program, da ga potem zalaufam, ker to nekaj brezveze probujem in mi ne rata.

Tutankhamun ::

New project tko kot si sam ugotovu. Pol maš pa tam na levi strani project type. Pol pa gledaš pod Visual C++. če boš v konzoli delu, vrjetn greš pod win32->Console Application. Če rabš MFC, izbereš MFC.... itd.
AMD Phenom QUAD 9950 Black Edition, 8GB

bisernik ::

Aha, je šlo... Ko sem odprl nov projekt, sem moral potem v njem odpret še "nev file". To me je zezalo. Vseeno hvala. Mogoče bom še kaj vprašo, če bo kaj...

Zgodovina sprememb…

  • spremenilo: bisernik ()

bisernik ::

To, kaj sn htel naret, mi nekak ne rata spelat... Mogo bi naret program, ki mi tri točke na krožnici razporedi na enakomerno razdaljo, torej, da bo med posameznima točkama povsod 120°. Npr., med točko 1 in 2 imam 61 enot, med točko 2 in 3 mam 69 enot, in med točko 3 in 1 mam 79 enot. Zdaj bi mi moral pa program izpisat, kam in za kolko moram kero točko zasukat na krožnici, da bojo enakomerno razporejene.

//izracun zamaknjenosti kotov med utori

#include <iostream.h>

int main()

{

	double kot1_2, kot2_3, kot3_1, sr_vr, 
	odstopanje1_2, odstopanje2_3, odstopanje3_1, p1;

	//vnos kotov med utori
	cout << "vnesi kot med utoroma 1 in 2: ";
	cin >> kot1_2;
	cout << "vnesi kot med utoroma 2 in 3: ";
	cin >> kot2_3;
	cout << "vnesi kot med utoroma 3 in 1: ";
	cin >> kot3_1;
	
	//izracun srednje vrednosti
	sr_vr = (kot1_2 + kot2_3 + kot3_1)/3;

	//izračun odstopanja od srednje vrednosti
	odstopanje1_2 = sr_vr - kot1_2;
	odstopanje2_3 = sr_vr - kot2_3;
	odstopanje3_1 = sr_vr - kot3_1;

	//izpis srednje vrednosti in odstopanj
	cout <<"srednja vrednost je : "<< sr_vr << endl;
	cout <<"odstopanje kota med utoroma 1 in 2 je: "<< odstopanje1_2 << endl;
	cout <<"odstopanje kota med utoroma 2 in 3 je: "<< odstopanje2_3 << endl;
	cout <<"odstopanje kota med utoroma 3 in 1 je: "<< odstopanje3_1 << endl;
// do tu še dela ok.

	//primerjava s srednjo vrednostjo //tu naprej ne dela več,
mogo bi nakak najt najmanjšega, al največjega, al kak

	if ( odstopanje1_2 > 0 );
	p1 = 1;
	else if ( odstopanje1_2 = 0 );
	p1 = 0;
	else ( odstopanje1_2 < 0 );
	p1 = -1;

	cout << "odstopanje je " << p1 << endl;

	return 0;

}


Zdaj v tem primeru dobim (za zgoraj opisane vrednosti) med 1 in 2 odstopanje 8.6666, med 2 in 3 odstopanje 0,6666 in med 3 in 1 odstopanje -9.3333. Zdaj mora mi pa program izpisat (v tem primeru), da moram prvo točko (utor) zarotirat 9.3333 enot v smeri ure, točko 3 pa 0,6666 enote v nasprotno smer ure. Takrat so točke razporejene enakomerno po krožnici. če hočem to tak naret, ko sn si zamislo, bi mogo utora, ki mata enak predznak (oba pozitivno, ali oba negativno), zarotirat proti utoru, ki ma obratn predznak. Zaj pa ne vem, kak naj to nardim, z kakimi zankami, al kaj. Ker sn vse pozabo, kak dela (sicer se mi je zdelo da še vem, ampak me že ona "if" zanka na koncu nekaj ne dela prav... Vem da sn zakompliciral, jebi ga.

Zgodovina sprememb…

  • spremenil: Senitel ()

roba87 ::

nekaj napak imaš v sami sintaxi. Za pogojem if stavka se pravi za () ni podpičja in v else se ne piše pogoja se pravi da je brez ().

Tutankhamun ::

else if ( odstopanje1_2 = 0 );


Pa tuki si tut hotu napisat dva enačaja namesto samo enega!
AMD Phenom QUAD 9950 Black Edition, 8GB

bisernik ::

zakaj je zaj pa to narobe?

//izbira nacina izracuna
	if ( kot1_2 + kot2_3 == -kot3_1 )
	{
		if (kot3_1 > 0)
		cout << "rotiraj utor 1 "<< kot1_2 <<endl;
		cout << "rotiraj utor 3 "<< kot2_3 <<endl;
		else //za to vrstico mi izpiše error c2181: illegal else without matching if
		cout << "rotiraj utor 1 "<< kot1_2 <<endl;
		cout << "rotiraj utor 3 "<< kot2_3 <<endl;
	}
	else if ( kot2_3 + kot3_1 == -kot1_2 )
	{
		if (kot1_2 > 0)
		cout << "rotiraj utor 2 "<< kot2_3 <<endl;
		cout << "rotiraj utor 1 "<< kot3_1 <<endl;
		else //za to vrstico mi izpiše error c2181: illegal else without matching if
		cout << "rotiraj utor 2 "<< kot2_3 <<endl;
		cout << "rotiraj utor 1 "<< kot3_1 <<endl;
	}
	else
	{
		if (kot2_3 > 0)
		cout << "rotiraj utor 1 "<< kot1_2 <<endl;
		cout << "rotiraj utor 2 "<< kot3_1 <<endl;
		else //in za to vrstico mi izpiše error c2181: illegal else without matching if
		cout << "rotiraj utor 2 "<< kot1_2 <<endl;
		cout << "rotiraj utor 3 "<< kot3_1 <<endl;
	}

ka je zdaj narobe s temi "else"? kak naj nardim, da bo delalo?

Zgodovina sprememb…

  • spremenil: Senitel ()

darkolord ::

Če želiš da se pri if stavku izvede več kot 1 vrstica, moraš vedno uporabit zavite oklepaje { }

if (pogoj)
{
     // bla
     // bla
}
else
{
     // bla
     // bla
}


Za if maš ti dve vrstici, šele potem else.

Zgodovina sprememb…

  • spremenilo: darkolord ()

bisernik ::

jao, hvala! Zaj je vredi!

bisernik ::

Zakaj mi zdaj to ne dela prav:

if ((odstopanje1_2 + odstopanje2_3 == -odstopanje3_1) && (odstopanje1_2 != -odstopanje3_1))

torej če je "odstopanje1_2 + odstopanje2_3" enako "-odstopanje3_1" in hkrati "odstopanje1_2"
ne sme bit enako "-odstopanje3_1"

ko mi tega pogoja nebi smelo upoštevat, mi ga vseeno upošteva. A mam kaj narobe v tem stavku?

Zgodovina sprememb…

  • spremenil: Senitel ()

darkolord ::

Ne. Problem je očitno nekje v logiki.

Uporabi debugging.

bisernik ::

Vse skup zgleda tak:

//izbira nacina izracuna
	if ((odstopanje1_2 + odstopanje2_3 == -odstopanje3_1) && (odstopanje1_2 != -odstopanje3_1))
	{
		if (odstopanje3_1 < 0)
		{
			cout << "rotiraj utor 1 za "<< odstopanje1_2 <<" (v smeri ure)!" <<endl;
			cout << "rotiraj utor 3 za "<< odstopanje2_3 <<" (v nasprotni ure)!" <<endl;
		}
		else if (odstopanje3_1 > 0)
		{
			cout << "rotiraj utor 1 za "<< odstopanje1_2 <<" (v nasprotni smeri ure)!" <<endl;
			cout << "rotiraj utor 3 za "<< odstopanje2_3 <<" (v smeri ure)!" <<endl;
		}
		else //(odstopanje3_1 = 0)
		{
			if (odstopanje1_2 > odstopanje2_3)
			cout << "rotiraj utor 2 za "<< odstopanje1_2 <<" (v nasprotni smeri ure)!" <<endl;
			else
			cout << "rotiraj utor 2 za "<< odstopanje2_3 <<" (v smeri ure)!" <<endl;
		}

	}
	else if (( odstopanje2_3 + odstopanje3_1 == -odstopanje1_2 ) && (odstopanje2_3 != -odstopanje1_2))
	{
		if (odstopanje1_2 > 0)
		{
		cout << "rotiraj utor 1 za "<< odstopanje3_1 <<" (v nasprotni smeri ure)!" <<endl;
		cout << "rotiraj utor 2 za "<< odstopanje2_3 <<" (v smeri ure)!" <<endl;
		}
		else if (odstopanje1_2 < 0)
		{
		cout << "rotiraj utor 1 za "<< odstopanje3_1 <<" (v smeri ure)!" <<endl;
		cout << "rotiraj utor 2 za "<< odstopanje2_3 <<" (v nasprotni smeri ure)!" <<endl;
		}
		else //(odstopanje1_2 = 0)
		{
			if (odstopanje2_3 > odstopanje3_1)
			cout << "rotiraj utor 3 za "<< odstopanje2_3 <<" (v nasprotni smeri ure)!" <<endl;
			else
			cout << "rotiraj utor 3 za "<< odstopanje3_1 <<" (v smeri ure)!" <<endl;
		}
	}
	else //(( odstopanje1_2 + odstopanje3_1 == -odstopanje2_3) && (odstopanje1_2 != -odstopanje2_3))
	{
		if (odstopanje2_3 > 0)
		{
		cout << "rotiraj utor 2 za "<< odstopanje1_2 <<" (v nasprotni smeri ure)!" <<endl;
		cout << "rotiraj utor 3 za "<< odstopanje3_1 <<" (v smeri ure)!" <<endl;
		}
		else if (kot2_3 < 0)
		{
		cout << "rotiraj utor 2 za "<< odstopanje1_2 <<" (v smeri ure)!" <<endl;
		cout << "rotiraj utor 3 za "<< odstopanje3_1 <<" (v nasprotni smeri ure)!" <<endl;
		}
		else //(odstopanje2_3 = 0)
		{
			if (odstopanje3_1 > odstopanje1_2)
			cout << "rotiraj utor 1 za "<< odstopanje3_1 <<" (v nasprotni smeri ure)!" <<endl;
			else
			cout << "rotiraj utor 1 za "<< odstopanje1_2 <<" (v smeri ure)!" <<endl;
		}
	}


Zaj men se zdi, da se ti pogoji, ko mam napisane, med sabo ne izklučujejo, al kak bi reko... Da nekak nisn vredi definiral vseh stanj al nakak tak in mi potem ne vzame pravega izračuna za pravo stanje.

Najbrž bi mogo to nekak drugač naret, ker na tak način ne vem, če bom namrežo kaj skup. Kako bi med temi tremi vrednostmi na krožnici določil najmanjšo vrednost s for zanko? Mogo bi dobit najmanjšo, oz. največjo vr., da bi potem ostali dve vedel, kam je treba premaknit.

Zgodovina sprememb…

  • spremenil: Senitel ()

Tutankhamun ::

To tko noben ne ve kaj si hotu. Zakaj pa ne poslušaš darklord-a pa uporabš debuger, pa greš skozi po vrsticah in takoj vidš kako tvoj programček deluje? Sej za to je debuger.
AMD Phenom QUAD 9950 Black Edition, 8GB

mchaber ::

Zakaj mi zdaj to ne dela prav:

if ((odstopanje1_2 + odstopanje2_3 == -odstopanje3_1) && (odstopanje1_2 != -odstopanje3_1))

torej če je "odstopanje1_2 + odstopanje2_3" enako "-odstopanje3_1" in hkrati "odstopanje1_2"
ne sme bit enako "-odstopanje3_1"

ko mi tega pogoja nebi smelo upoštevat, mi ga vseeno upošteva. A mam kaj narobe v tem stavku?


To si nekaj zelo zelo zakompliciral. Ta drug pogoj je sumljiv, ker bi lahko samo preveril, ali je odstopanje2_3 razlicno od 0.
.

Zgodovina sprememb…

  • spremenil: Senitel ()

bisernik ::

Zakaj mi zdaj to ne dela prav:

if ((odstopanje1_2 + odstopanje2_3 == -odstopanje3_1) && (odstopanje1_2 != -odstopanje3_1))

torej če je "odstopanje1_2 + odstopanje2_3" enako "-odstopanje3_1" in hkrati "odstopanje1_2"
ne sme bit enako "-odstopanje3_1"

ko mi tega pogoja nebi smelo upoštevat, mi ga vseeno upošteva. A mam kaj narobe v tem stavku?


To si nekaj zelo zelo zakompliciral. Ta drug pogoj je sumljiv, ker bi lahko samo preveril, ali je odstopanje2_3 razlicno od 0.


je to bi najbrž res blo boljše tak, bom probal.

Zgodovina sprememb…

  • spremenil: Senitel ()

bisernik ::

Zaj mam tak:

/izbira nacina izracuna
	if ((odstopanje1_2 + odstopanje2_3 == -odstopanje3_1) && (odstopanje2_3 != 0) && (odstopanje1_2 !=0))
	{
		if (odstopanje3_1 < 0)
		{
			cout << "rotiraj utor 1 za "<< -odstopanje1_2 <<" (v smeri ure)!" <<endl;
			cout << "rotiraj utor 3 za "<< odstopanje2_3 <<" (v nasprotni ure)!" <<endl;
		}
		else if (odstopanje3_1 > 0)
		{
			cout << "rotiraj utor 1 za "<< -odstopanje1_2 <<" (v nasprotni smeri ure)!" <<endl;
			cout << "rotiraj utor 3 za "<< odstopanje2_3 <<" (v smeri ure)!" <<endl;
		}
		else //(odstopanje3_1 = 0)
		{
			if (odstopanje1_2 > odstopanje2_3)
			cout << "rotiraj utor 2 za "<< odstopanje1_2 <<" (v nasprotni smeri ure)!" <<endl;
			else
			cout << "rotiraj utor 2 za "<< odstopanje2_3 <<" (v smeri ure)!" <<endl;
		}

	}
	else if (( odstopanje2_3 + odstopanje3_1 == -odstopanje1_2 ) && (odstopanje3_1 != 0) && (odstopanje2_3 != 0))
	{
		if (odstopanje1_2 > 0)
		{
		cout << "rotiraj utor 1 za "<< odstopanje3_1 <<" (v nasprotni smeri ure)!" <<endl;
		cout << "rotiraj utor 2 za "<< odstopanje2_3 <<" (v smeri ure)!" <<endl;
		}
		else if (odstopanje1_2 < 0)
		{
		cout << "rotiraj utor 1 za "<< odstopanje3_1 <<" (v smeri ure)!" <<endl;
		cout << "rotiraj utor 2 za "<< odstopanje2_3 <<" (v nasprotni smeri ure)!" <<endl;
		}
		else //(odstopanje1_2 = 0)
		{
			if (odstopanje2_3 > odstopanje3_1)
			cout << "rotiraj utor 3 za "<< odstopanje2_3 <<" (v nasprotni smeri ure)!" <<endl;
			else
			cout << "rotiraj utor 3 za "<< odstopanje3_1 <<" (v smeri ure)!" <<endl;
		}
	}
	else if (( odstopanje1_2 + odstopanje3_1 == -odstopanje2_3) && (odstopanje1_2 != 0) && (odstopanje3_1 != 0))
	{
		if (odstopanje2_3 > 0)
		{
		cout << "rotiraj utor 2 za "<< odstopanje1_2 <<" (v nasprotni smeri ure)!" <<endl;
		cout << "rotiraj utor 3 za "<< odstopanje3_1 <<" (v smeri ure)!" <<endl;
		}
		else if (kot2_3 < 0)
		{
		cout << "rotiraj utor 2 za "<< odstopanje1_2 <<" (v smeri ure)!" <<endl;
		cout << "rotiraj utor 3 za "<< odstopanje3_1 <<" (v nasprotni smeri ure)!" <<endl;
		}
		else //(odstopanje2_3 = 0)
		{
			if (odstopanje3_1 > odstopanje1_2)
			cout << "rotiraj utor 1 za "<< odstopanje3_1 <<" (v nasprotni smeri ure)!" <<endl;
			else
			cout << "rotiraj utor 1 za "<< odstopanje1_2 <<" (v smeri ure)!" <<endl;
		}
	}
	else //( odstopanje1_2 = odstopanje2_3 = odstopanje3_1 )
		cout << "koti med utori so enaki, korigiranje kotov ni potrebno" <<endl;


	cout << "vsota odstopanj je: " << (odstopanje1_2 + odstopanje2_3 + odstopanje3_1)<< endl;


	return 0;

}


zaj sn vido, da je problem v tem, ker program naračuna recimo "odstopanje1_2" je 8,666666, za drugi kot 0,66666 in za tretjega -9,3333333, potem ko enači, seveda ni isto, ker pride do razlike na nevemkeri decimalki. če je to sploh to... in potem mi vzeme, da je pravi zadnji pogoj, ko pač nobeden od prvih treh ne velja. Kak zaj če bom zaokrožo vse na določeni decimalki, bi moglo delat, al kako... Kako se pa zaokroži?

Zgodovina sprememb…

  • spremenil: Senitel ()

bisernik ::

zaj nekaj gledam in študiram, pa se mi zdi, da so ti moji pogoji čisto sfaljeni... grem spat.

uroszo ::

Imam kar nekaj knjig na temo c++, če si zainteresiran PM.
http://www.ozvocenja.si

Person ::

Ja drugače lahko preveriš, če sta 2 odstopanja enaka, namesto da ju enačiš narediš tako:
Abs(odstopanje_1 - odstopanje_2) < epsilon

Torej z drugimi besedami ... preveriš, če je absolutna vrednost razlike njunih vrednosti manjša od nekega epsilona (to je neka majhna cifra, naprimer 0.000001, lahko tudi manja ali več, odvisno kok natančno preverjanje potrebuješ).

LP A
Let's make something useful!

Zgodovina sprememb…

  • spremenil: Person ()

Senitel ::

Kot je Person omenil: števil s plavajočo vejico (float, double) se NIKOLI ne primerja eksaktno (torej == ali !=).

In kot drugo: že osnovna logika programa ne deluje. Koti bi se moral seštet v 360 stopinj a ti tega niti ne daš v vhodnih podatkih, niti ne preveriš tega pogoja. Srednja vrednost bi pa lahko bila zafiksirana na 120 stopinj (in potem izbereš dva najmanjša premika recimo).

bisernik ::

To tko noben ne ve kaj si hotu. Zakaj pa ne poslušaš darklord-a pa uporabš debuger, pa greš skozi po vrsticah in takoj vidš kako tvoj programček deluje? Sej za to je debuger.


nism še nikol delal s tem debugerjem. bom probal, sn najdo en link nan netu o uporabi tega debugerja.

Tutankhamun ::

Sej se hecaš :). Če maš Visual studio, sam prtisn F10 pa ti bo VS prevedu pa zagnov tvoj programček pa ga ustavu na prvi vrstici. Pol pa ko hočeš it na naslednjo komando prtisenš spet F10 itd. Pol maš pa spodi watch window kjer lahko gledaš vrednosti določenih spremenljivk. Pa če greš z miško čez kšno spremenljivko v tvoji kodi lahko tudi dobiš njeno vrednost.
AMD Phenom QUAD 9950 Black Edition, 8GB

bisernik ::

Zaenkrat hvala za pomoč, zaj sn vse skup spravo tak daleč, da mi izračuna potreben premik utorov za vsako možno kombinacijo. Edino na koncu, ko mam še pogoj, za primer enakosti vseh treh kotov (da bi mi izpisalo, da rotiranje ni potrebno), mi ne izpiše. Pa mi spet ni jasno zakaj.

//izracun zamaknjenosti kotov med utori

#include <iostream.h>

int main()

{

	double kot1_2, kot2_3, kot3_1, sr_vr, 
	odstopanje1_2, odstopanje2_3, odstopanje3_1;

	//vnos kotov med utori
	cout << "vnesi kot med utoroma 1 in 2: ";
	cin >> kot1_2;
	cout << "vnesi kot med utoroma 2 in 3: ";
	cin >> kot2_3;
	cout << "vnesi kot med utoroma 3 in 1: ";
	cin >> kot3_1;
	
	//izracun srednje vrednosti
	sr_vr = (kot1_2 + kot2_3 + kot3_1)/3;

	//izračun odstopanja od srednje vrednosti
	odstopanje1_2 = sr_vr - kot1_2;
	odstopanje2_3 = sr_vr - kot2_3;
	odstopanje3_1 = sr_vr - kot3_1;

	//izpis srednje vrednosti in odstopanj
	cout <<"srednja vrednost je : "<< sr_vr << endl;
	cout <<"odstopanje kota med utoroma 1 in 2 je: "<< odstopanje1_2 << endl;
	cout <<"odstopanje kota med utoroma 2 in 3 je: "<< odstopanje2_3 << endl;
	cout <<"odstopanje kota med utoroma 3 in 1 je: "<< odstopanje3_1 << endl;

	//izbira nacina izracuna
	if ((odstopanje1_2 > 0) && (odstopanje2_3 > 0) && (odstopanje3_1 < 0))
	{
		cout <<"Rotiraj utor 1 za: " << -(odstopanje1_2) <<" (v smeri ure)!" << endl;
		cout <<"Rotiraj utor 3 za: " << (odstopanje2_3) <<" (v nasprotni smeri ure)!" << endl;
	}
	else if ((odstopanje1_2 < 0) && (odstopanje2_3 > 0) && (odstopanje3_1 > 0))
	{
		cout <<"Rotiraj utor 1 za: " << odstopanje3_1 <<" (v nasprotni smeri ure)!" << endl;
		cout <<"Rotiraj utor 2 za: " << -odstopanje2_3 <<" (v smeri ure)!" << endl;
	}
	else if ((odstopanje1_2 > 0) && (odstopanje2_3 < 0) && (odstopanje3_1 > 0))
	{
		cout <<"Rotiraj utor 2 za: " << odstopanje1_2 <<" (v nasprotni smeri ure)!" << endl;
		cout <<"Rotiraj utor 3 za: " << -odstopanje3_1 <<" (v smeri ure)!" << endl;
	}
	else if ((odstopanje1_2 < 0) && (odstopanje2_3 < 0) && (odstopanje3_1 > 0))
	{
		cout <<"Rotiraj utor 1 za: " << -odstopanje1_2 <<" (v nasprotni smeri ure)!" << endl;
		cout <<"Rotiraj utor 3 za: " << odstopanje2_3 <<" (v smeri ure)!" << endl;
	}
	else if ((odstopanje1_2 > 0) && (odstopanje2_3 < 0) && (odstopanje3_1 < 0))
	{
		cout <<"Rotiraj utor 1 za: " << odstopanje3_1 <<" (v smeri ure)!" << endl;
		cout <<"Rotiraj utor 2 za: " << -odstopanje2_3 <<" (v nasprotni smeri ure)!" << endl;
	}
	else if ((odstopanje1_2 < 0) && (odstopanje2_3 > 0) && (odstopanje3_1 < 0))
	{
		cout <<"Rotiraj utor 2 za: " << odstopanje1_2 <<" (v smeri ure)!" << endl;
		cout <<"Rotiraj utor 3 za: " << -odstopanje3_1 <<" (v nasprotni smeri ure)!" << endl;
	}
	else if ((odstopanje1_2 + odstopanje2_3 < 0.0001) && (odstopanje3_1 < 0.0001))
	{
		if (odstopanje2_3 < 0)
		cout <<"Rotiraj utor 2 za: " << odstopanje1_2 <<" (v nasprotni smeri ure)!" << endl;
		else if (odstopanje2_3 > 0)
		cout <<"Rotiraj utor 2 za: " << odstopanje1_2 <<" (v smeri ure)!" << endl;
	}
	else if ((odstopanje2_3 + odstopanje3_1 < 0.0001) && (odstopanje1_2 < 0.0001))
	{
		if (odstopanje3_1 < 0)
		cout <<"Rotiraj utor 3 za: " << odstopanje2_3 <<" (v nasprotni smeri ure)!" << endl;
		else if (odstopanje3_1 > 0)
		cout <<"Rotiraj utor 2 za: " << odstopanje2_3 <<" (v smeri ure)!" << endl;
	}
	else if ((odstopanje3_1 + odstopanje1_2 < 0.0001) && (odstopanje2_3 < 0.0001))
	{
		if (odstopanje1_2 < 0)
		cout <<"Rotiraj utor 1 za: " << odstopanje3_1 <<" (v nasprotni smeri ure)!" << endl;
		else if (odstopanje1_2 > 0)
		cout <<"Rotiraj utor 1 za: " << odstopanje3_1 <<" (v smeri ure)!" << endl;
	}
	else if ((odstopanje1_2 > 0.0001) && (odstopanje2_3 < 0.0001) && (odstopanje3_1 < 0.0001))
	cout <<"Vsi koti med utori so enaki, korekcija ni potrebna!";
			
	return 0;

}

Če vpišem vse tri vrednosti iste, bi moglo to izpisat, vendar mi takrat nič ne izpiše.

In kot drugo: že osnovna logika programa ne deluje. Koti bi se moral seštet v 360 stopinj a ti tega niti ne daš v vhodnih podatkih, niti ne preveriš tega pogoja. Srednja vrednost bi pa lahko bila zafiksirana na 120 stopinj (in potem izbereš dva najmanjša premika recimo).


Vrednosti se vpišejo take, kot pokaže na merilni pripravi, važno je potem samo razmerje med njimi. Če jih sešteješ, niso točno 360°, ker mer. ura je pač nastavljena na določeno vrednost, iz teh vrednosti je potem potrebno izračunat odstopanje posameznega kota.

Sej se hecaš :). Če maš Visual studio, sam prtisn F10 pa ti bo VS prevedu pa zagnov tvoj programček pa ga ustavu na prvi vrstici. Pol pa ko hočeš it na naslednjo komando prtisenš spet F10 itd. Pol maš pa spodi watch window kjer lahko gledaš vrednosti določenih spremenljivk. Pa če greš z miško čez kšno spremenljivko v tvoji kodi lahko tudi dobiš njeno vrednost.


Z onim debugerjem pa si tudi nism najbolj na jasnem, če stiskam ˇF10ˇ, mi gre po stavkih, ja. Ampak nevem, kako potem razberem tam vun kaj konkretnega.

Zaj bi pa še mogo vedet, kak ta program samostojno zaženem na drugem računalniku, kjer nimam "Visual C++" inštaliranega. Če presnemam celo mapo (Workplace) in na drugem računalniku zaženem exe, mi sicer zažene in vpišem vhodne podatke, ampak potem mi vgasne, ko stisnem "Enter", da sploh ne morm kaj naret.

Zgodovina sprememb…

  • spremenil: Senitel ()

MeGreat ::

ja pač skačeš po vrsticah in gledaš kakšne vrednosti dobivajo spremenljivke

roba87 ::

Probaj tak :
if ((odstopanje1_2 < 0.0001) && (odstopanje2_3 < 0.0001) && (odstopanje3_1 < 0.0001))
	cout <<"Vsi koti med utori so enaki, korekcija ni potrebna!";

Zgodovina sprememb…

  • spremenil: Senitel ()

bisernik ::

Probaj tak :
if ((odstopanje1_2 < 0.0001) && (odstopanje2_3 < 0.0001) && (odstopanje3_1 < 0.0001))
	cout <<"Vsi koti med utori so enaki, korekcija ni potrebna!";


Hvala, dela, če dam samo "if". Z "else if" pa ni šlo. Zakaj pa tej tak?

Zgodovina sprememb…

  • spremenilo: bisernik ()

bisernik ::

Zakaj program ne dela, če ga zaženem samostojno (ne pod visual C++)? Ko vpišem vh. podatke in pritisnem enter, mi izklopi.

Tutankhamun ::

če hočeš vidt vrednosti spremenljivk zapel miško čez to spremenljivko pa se ti pojav njena vrednost. Al pa v watch window vpiš ime spremenljivke pa boš tut meu njeno vrednost.
AMD Phenom QUAD 9950 Black Edition, 8GB

Senitel ::

Zakaj program ne dela, če ga zaženem samostojno (ne pod visual C++)? Ko vpišem vh. podatke in pritisnem enter, mi izklopi.

Zato ker ga nisi pognal iz samostojne konzole. Ti poženeš program, se naredi nova konzola, vneseš podatke, program izpiše rezultat in se zaključi (zapre konzolo).

bisernik ::

Zakaj program ne dela, če ga zaženem samostojno (ne pod visual C++)? Ko vpišem vh. podatke in pritisnem enter, mi izklopi.

Zato ker ga nisi pognal iz samostojne konzole. Ti poženeš program, se naredi nova konzola, vneseš podatke, program izpiše rezultat in se zaključi (zapre konzolo).

In kaj naj zdaj naredim, da se ne bo kar zaključo? Kaj je mišljeno samostojna konzola sploh?

Senitel ::

Da poženeš "cmd" preko start run in se potem prestaviš do tvojega programa in ga poženeš. Kar koli "konzolskega" boš pognal direkt iz GUI-ja se bo po zaključku izvajanja takoj zaprlo.

Person ::

Lahko pa tik pred koncem ukaza napišeš še en tekst, npr. Pritisni enter za končanje, pa potem za tem še eno vrstico, kjer kao prebereš nek znak, pa bo se pač tam na koncu program ustavil, dokler ne boš pač pritisnil enter.
Let's make something useful!

bisernik ::

Kako se pa nardi, da mi po vsaki možnosti skoči na tisti del programa, kjer mam potem napisano, npr. "pritisni "ENTER" za izklop"?

bisernik ::

Em... Zaj mam nareto tak, da prtisnem pac eno tipko na tipkovnici, pa potem enter, da pol zapre program.

Kak naj pa nardim, da bom prtisno samo "enter", pa potem zapre?

Zgodovina sprememb…

  • spremenilo: bisernik ()

Tutankhamun ::

Mislm da je getch
AMD Phenom QUAD 9950 Black Edition, 8GB

roba87 ::

ja, pred return 0, daš getch(), pa vključit moraš conio.h v program.

Zgodovina sprememb…

  • spremenil: roba87 ()

bisernik ::

Jo, to z getch dela, hvala!

bisernik ::

Spet mam nekaj brezveznega... Rad bi, da mi rezultate zaokrožuje na 4 decimalke in jih potem tudi tako izpiše. Sem naredo tak, pa ne dela:

odstopanje1_2 = ( round ( ( sr_vr - meritev1_2 / 100 ) * konstanta ), 4 );

Na začetku programa mam tudi vključeno "math.h" knjižnico. Mi pa napiše, da "round" ni deklarirano, al nekaj tekega.

Zgodovina sprememb…

  • spremenil: Senitel ()

Tutankhamun ::

tuki sm neki na hitrco najdu. Sej google use najde.
AMD Phenom QUAD 9950 Black Edition, 8GB

bisernik ::

Zadeva zaj dela, tako kot treba. Zaj bi pa rad vse skup "nadgradil". Na kratko povedano bi rad naredo tak, da bi mel na začetku programa dve možnosti. Najprej bi program vprašal, kaj želi uporabnik, ali želi spremenit podatke o geometriji merjenih kosov, ali hoče samo izmeriti kos na podlagi nazadnje urejenih podatkov o geometriji. Če bi izbral določitev gometrije, bi se podatki shranili in potem bi pri meritvi vedno upoštevalo te podatke, do naslednje spremembe geometrije. Polmer, na katerem bi potekale spremembe in kot postavitve merilne ure sta pri določeni vrsti kosov enaka, potem pa če so kosi drugi, ju je potrebno spremeniti, pa ne bi rad pri vsaki meritvi posebej vpisoval teh dveh parametrov.Upam, da sem bil dovolj jasen.
Skratka, nimam pojma, kako se naredi, da program določene podatke shrani, potem pa so te vrednosti take, do spremembe. Podatki geometrije se ob zaprtju programa ne bi smeli zbrisat.

Zgodovina sprememb…

  • spremenilo: bisernik ()

Tutankhamun ::

za shrant podatke ob zaprtju programa je možn samo če zapišeš na disk, datoteka, register, baza ...
Za uporabljat podatke, pač vpelješ spremenljivke katere prebereš iz datoteke, in jih uporabljaš v tvojem programu...
Nič lažjega :P
AMD Phenom QUAD 9950 Black Edition, 8GB

bisernik ::

Ja, Tutankhamun, ampak to glih je problem, ker ne vem, kak se to nardi... A mi lahko mogoče približno opišeš kaki ukazi so to, al pa kak primer kode za kaj podobnega. Nakaj iščem po forumu pa po netu pa nekak ne najdem nič takega (al se pa samo men zdi, da ne)...

Tutankhamun ::

Samo hitr primer... Za svojo kodo moreš pač po svoje kej narest... Ampak gre na en tak način!

	int a;
	int b;

	// pridobi vrednosti spremenljivk a in b. Će datoteka s podatki obstaja
	// jih pridobi iz datoteke, drugače preko konzole
	ifstream ifs;
	ifs.open("datoteka");
	if(!ifs.is_open())
	{
		cout << "vpisi a: ";
		cin >> a;

		cout << "vpisi b: ";
		cin >> b;
	}
	else
	{
		ifs >> a;
		ifs >> b;

		cout << "vrednost a = " << a << ", vrednost b = " << b << endl;

		ifs.close();
	}

	// shranjevanje podatkov v datoteko
	ofstream ofs;
	ofs.open("datoteka");
	ofs << a << " ";
	ofs << b;

	ofs.close()

	/* kšna koda ki uporablja spremenljivki a in b
	 umes lahko tudi vprašaš za vpis novih podatkov...
	 lahko tudi funkcijo narediš posebej za shranjevanje, tako
	 da lahko tudi kličeš samo funkcijo, da ne kopiraš kode... */
	for(float i = 0; i < 10000; i++)
	{
		cout << (a*a + b*b) / i;
	}

	return 0;
AMD Phenom QUAD 9950 Black Edition, 8GB

Zgodovina sprememb…

bisernik ::

Aha, zgleda še kar obetavno... Bom probal premlet...

Tutankhamun ::

sm probu narest čim bol enostavn :D. Ampak nevem pa če se prevede, ker sm tko direkt pisu :). Sam tok da približn vidš.
AMD Phenom QUAD 9950 Black Edition, 8GB

bisernik ::

Kako pa zaj zgleda ta txt datoteka, kaj more pisat v njej, da se da potem to spreminjat in kje more bit, a more bit v isti mapi kot program, al je lahko kjer kol? A tam ko piše "ifs.open("datoteka");" more se napisat pot do datoteke v oklepaju, al more bit v isti mapi in jo sam najde?

Tutankhamun ::

kako zgleda datoteka je čist tvoja stvar. Tko kot sm ti js napisu bi bla usebina če je a=5 in b=2

vsebina:
5 2

če napišeš samo ine datoteke, pol se bo nahajala namestu kot je tvoj program. Če pa cela pot pol pa ...
AMD Phenom QUAD 9950 Black Edition, 8GB

bisernik ::

Aha, je v tisti mapi kot program, ja. Sn pogledo. Hvala.

bisernik ::

zaj mam nareto tak:
#include <fstream.h>
#include <math.h>
#include <conio.h>


int main()

{
	
	int izbira_1;
	double polmer, kot_meritve, kot_zamaknitve, konstanta, meritev;
	const double pi = 3.1415;

	
	 
	// pridobi vrednosti spremenljivk a in b. Će datoteka s podatki obstaja
	// jih pridobi iz datoteke, drugače preko konzole
	

	cout << endl;
	cout << endl;
	cout << endl;
	cout << endl;
	cout << "	            Program za obdelavo izmerjenih vrednosti" << endl;
	cout << endl;
	cout << endl;
	cout << endl;
	cout << endl;
	cout << "                              ********************" << endl;
	cout << "                              *                  *" << endl;
	cout << "                              *  1 - nastavitve  *" << endl;
	cout << "                              *                  *" << endl;
	cout << "                              *  2 - meritve     *" << endl;
	cout << "                              *                  *" << endl;
	cout << "                              ********************" << endl;
	cin >> izbira_1;

	if (izbira_1 == 1)
	{
		ifstream ifs;
		ifs.open ("datoteka");
	
		if (ifs.is_open())
		{
			// vnos podatkov za izračun konstante
			cout << "Vnesi polmer, na katerem je meritev: " << endl;
			cin >> polmer;
			cout << "Vnesi kot med merilno uro in med pravokotnico na merjeno ravnino: " << endl;
			cin >> kot_meritve;

			
			// shranjevanje podatkov  datoteko
			ofstream ofs;
			ofs.open("datoteka");
			ofs << polmer << " ";
			ofs << kot_meritve;
		 
			ofs.close();
		}
	
	}
	else if (izbira_1 == 2)
	{

		ifstream ifs;
		ifs.open ("datoteka");
	
		if (ifs.is_open())
		{
			//izpis polmera in kota meritve
			cout << "Trenutne nastavitve so pri polmeru " << polmer << " mm in pri kotu ure " << kot_meritve << " stopinj." << endl;
	
			//izračun konstante
			konstanta = ( cos ( kot_meritve * pi /180) * 360 ) / ( 2 * pi * polmer );
			cout << "konstanta je : " << konstanta << endl;
	
			//izračun kota zamaknitve
			cout << "Vnesi izmerjeno dolzino v mm: ";
			cin >> meritev;
			kot_zamaknitve = konstanta * meritev;
			cout << "kot zamaknitve med utoroma je : " << kot_zamaknitve << " stopinje." << endl;

		}
	}
	else
		cout << "napacna izbira!" << endl;


	 
	
	 
	/* kšna koda ki uporablja spremenljivki a in b
	 umes lahko tudi vprašaš za vpis novih podatkov...
	 lahko tudi funkcijo narediš posebej za shranjevanje, tako
	 da lahko tudi kličeš samo funkcijo, da ne kopiraš kode... */


	getch();
	
	return 0;
	
}

Zdaj mi, ko grem pod meritve in vstavim kot, naračuna neko ful malo vrednost, nekak ne vzame prav podatkov iz datoteke, al kaj. Tudi ko skompajlam mi vrže vun dva warninga, da vrednosti, ki ju bi moglo vzet iz datoteke, nekak nista prav definirani, al kaj.

To mi napiše pri compile: "Warning C4700: local variable 'kot_meritve' used without having been initialized"
isto mi napiše za "polmer".

Zgodovina sprememb…

  • spremenil: Senitel ()

Tutankhamun ::

else if (izbira_1 == 2)
{
	ifstream ifs;
	ifs.open ("datoteka");
	
	if (ifs.is_open())
	{
		//izpis polmera in kota meritve
		cout << "Trenutne nastavitve so pri polmeru " << polmer << " mm in pri kotu ure " << kot_meritve << " stopinj." << endl;
	
		//izračun konstante
		konstanta = ( cos ( kot_meritve * pi /180) * 360 ) / ( 2 * pi * polmer );
		cout << "konstanta je : " << konstanta << endl;
	
		//izračun kota zamaknitve
		cout << "Vnesi izmerjeno dolzino v mm: ";
		cin >> meritev;
		kot_zamaknitve = konstanta * meritev;
		cout << "kot zamaknitve med utoroma je : " << kot_zamaknitve << " stopinje." << endl;
	}
}


V tej funkciji nič ne prebereš iz datoteke!!!
Potem ti pa prevajalnik vrže vn da nis vstavu nobene vrednosti v spremenljivko polmer pa kot_meritve!
ifs >> polmer;
ifs >> kot_meritve;
AMD Phenom QUAD 9950 Black Edition, 8GB
«
1
2


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

USB-C (Thunderbolt) - DP alt mode

Oddelek: Zvok in slika
131984 (1589) Mavrik
»

NHL FINALE - debata 2 poizkus (strani: 1 2 3 )

Oddelek: Loža
10312039 (7453) fantasycamp
»

[c#] Meni s pomočjo switch stavka

Oddelek: Programiranje
5784 (723) Looooooka
»

Python, prosim za pomoc pri programiranju (strani: 1 2 3 )

Oddelek: Programiranje
10413777 (9879) lenika
»

"Ta prava" inflacija?

Oddelek: Loža
72061 (1054) Hammer123

Več podobnih tem