Forum Sveta kompjutera

Nazad   Forum Sveta kompjutera > Test Run > Programiranje

Programiranje Programski jezici, tehnike, alatke...

Odgovor
 
Alatke vezane za temu Vrste prikaza
Stara 21.7.2015, 12:10   #341
mica1709
Član
 
Član od: 2.5.2011.
Lokacija: Bujanovac
Poruke: 156
Zahvalnice: 205
Zahvaljeno jedanput na jednoj poruci
Određen forumom Re: How to... C++

Dobio sam zadatak da uradim kalkulator u Visual C++ u Windows formi. Uradio sam kalkulator sa osnovnim operacijama (+, -, *, /). Ali mi profesor traži da dodam još 5-6 naprednih operacija kao što su sin, cos, tan, x na kvadrat, koren od x... Pokušao sam za početak da dodam sin i x na kvadrat ali ne radi. Za nekoliko dana treba ovo da pošaljem pa mi treba pomoć. Evo šta sam uradio. Ovo nije ceo kod već samo deo koji se odnosi na operacije koje će se izvršavati pritiskom na određeno dugme.

Kod:
		double prvibroj;
		double drugibroj;
		double rezultat;
		char operacija;
#pragma endregion
	private: System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e) {
			 }
private: System::Void button17_Click(System::Object^  sender, System::EventArgs^  e) {
			 prvibroj = Convert::ToDouble(lblDisplay->Text);
			 lblDisplay->Text="0";
			 operacija = '/';
		 }
private: System::Void button16_Click(System::Object^  sender, System::EventArgs^  e) {
			 prvibroj = Convert::ToDouble(lblDisplay->Text);
			 lblDisplay->Text="0";
			 operacija = '*';
		 }
private: System::Void button15_Click(System::Object^  sender, System::EventArgs^  e) {
			 prvibroj = Convert::ToDouble(lblDisplay->Text);
			 lblDisplay->Text="0";
			 operacija = '-';
		 }
private: System::Void button14_Click(System::Object^  sender, System::EventArgs^  e) {
			 prvibroj = Convert::ToDouble(lblDisplay->Text);
			 lblDisplay->Text="0";
			 operacija = '+';
		 }
private: System::Void button18_Click(System::Object^  sender, System::EventArgs^  e) {
			 prvibroj = Convert::ToDouble(lblDisplay->Text);
			 lblDisplay->Text="0";
			 operacija = 'sin';
		 }
private: System::Void button19_Click(System::Object^  sender, System::EventArgs^  e) {
				prvibroj = Convert::ToDouble(lblDisplay->Text);
				lblDisplay->Text="0";
				operacija = 'x2';
		 }
private: System::Void button13_Click(System::Object^  sender, System::EventArgs^  e) {
			 drugibroj = Convert::ToDouble(lblDisplay->Text);

			 switch(operacija)
			 {
			 case '+': 
				 rezultat = prvibroj + drugibroj;
				 lblDisplay->Text = System::Convert::ToString(rezultat);
				 break;
			 case '-':
				 rezultat = prvibroj - drugibroj;
				 lblDisplay->Text = System::Convert::ToString(rezultat);
				 break;
			 case '*':
				 rezultat = prvibroj * drugibroj;
				 lblDisplay->Text = System::Convert::ToString(rezultat);
				 break;
			 case '/':
				 rezultat = prvibroj / drugibroj;
				 lblDisplay->Text = System::Convert::ToString(rezultat);
				 break;
			 case 'sin':
				 rezultat = prvibroj * 3.14159 / 180.00;
				 lblDisplay->Text = System::Convert::ToString(rezultat);
				 break;
			 case 'x2':
				 rezultat = prvibroj * prvibroj;
				 lblDisplay->Text = System::Convert::ToString(rezultat);
			 }
		 }
mica1709 je offline   Odgovor sa citatom ove poruke
Stara 21.7.2015, 12:47   #342
NIx Car
Deo inventara foruma
 
Član od: 28.12.2006.
Lokacija: New Now
Poruke: 3.580
Zahvalnice: 1.695
Zahvaljeno 909 puta na 511 poruka
Slanje poruke preko MSN-a korisniku NIx Car Slanje poruke preko Skypea korisniku NIx Car
Određen forumom Re: How to... C++

Zasto za sinus ne koristis ugradjenu funkciju koja se vec nalazi u sklopu jezika? Ti tu koliko ja vidim, ugao koji dobijes, pretvaras iz stepena u radijane.
Takodje, stavi da ti operacija bude tipa string, a ne char.
NIx Car je offline   Odgovor sa citatom ove poruke
Sledeći korisnik se zahvaljuje korisniku NIx Car na korisnoj poruci:
mica1709 (22.7.2015)
Stara 21.7.2015, 13:44   #343
mica1709
Član
 
Član od: 2.5.2011.
Lokacija: Bujanovac
Poruke: 156
Zahvalnice: 205
Zahvaljeno jedanput na jednoj poruci
Određen forumom Re: How to... C++

Citat:
NIx Car kaže: Pregled poruke
Zasto za sinus ne koristis ugradjenu funkciju koja se vec nalazi u sklopu jezika? Ti tu koliko ja vidim, ugao koji dobijes, pretvaras iz stepena u radijane.
Takodje, stavi da ti operacija bude tipa string, a ne char.
Hvala na savetima. Već sam rešio kompletan zadatak. Čim sam napisao onu predhodnu poruku kao da mi se odjednom sve razbistrilo u glavi i završio sam sve za pola sata.
mica1709 je offline   Odgovor sa citatom ove poruke
Stara 8.8.2015, 19:38   #344
2233
Član
 
Član od: 26.2.2010.
Poruke: 57
Zahvalnice: 5
Zahvaljeno 0 puta na 0 poruka
Određen forumom Re: How to... C++

Imam dva problema u vezi mog učenja C++ programiranja.
1. Kada zadam par komandi IF i na kraju ELSE(kao odgovor na sve što ostaje a nisam naveo) osim što mi odradi nešto iz komande IF uradi TAKOĐE i ELSE
Primer:
#include <iostream.h>

using namespace std;
int main()
{
int broj;
cout<<"Unesite broj: \n";
cin>>broj;
if (broj>0)
cout<<"Broj je pozitivan"<<endl;
if(broj<0)
cout<<"Broj je negativan"<<endl;
else
cout<<"Broj je nula"<<endl;
system("PAUSE");

return 0;
}
Dole je slika u prilogu o tome kako izgleda program




II problem:
Program koji pokušavam da napravim ne radi ono šta hoću, našao sam zadatak na nekom sajtu. Dakle, treba da unesem broj koji nije 5. I program to treba da me pita u krug sve dok ne unesem 5 kada javlja:Hey! you weren't supposed to enter 5! Ali ako unesem unosim brojeve deset puta, deseti put će javiti: Wow, you're more patient then I am, you win. Uno sam sledeći kod a tu su i komentari u kojima sam napisao kako ja razmišljam šta koji red radi. Program samo izbacuje poruku da opet unesem broj koji je različit od 5 ali to radi više od 10 puta i jedino ako unesem 5 program će se zaustaviti.
#include <iostream.h>
using namespace std;


int main()
{
int number; //broj za unos
int entern=0; //brojac
do //radi...
{
entern++; //povecava brojac za 1 svaki krug
cout<<"Please enter any number different than 5";
cout<<endl;
cin>>number; //uneli smo broj koji je drukciji od 5
}
while(number==5||(entern==10)); //...dok: uneti broj je 5 ILI brojac stigne do 10
if (number=5) //nakon toga ako je broj 5 izbacuje sledecu poruku
{
cout<<endl<<"Hey! you weren't supposed to enter 5!" <<endl;}
if(entern==0) //ova poruka ako je brojacanik istekao
{cout<<"Wow, you're more patient then I am, you win."<<endl;
}
system("PAUSE");
return 0;
}
Priložene slike
Kliknite na sliku za veću verziju

Ime:	else.png
Viđeno:	12 puta
Veličina:	2,5 KB
ID:	52814  
2233 je offline   Odgovor sa citatom ove poruke
Stara 8.8.2015, 19:56   #345
voodoo_
V.I.P. GNU/Linux
 
Avatar korisnika voodoo_
 
Član od: 1.11.2005.
Poruke: 10.471
Zahvalnice: 1.712
Zahvaljeno 4.505 puta na 2.551 poruka
Određen forumom Re: How to... C++

Za prvi slučaj ti treba

Kod:
if (broj>0)
    cout<<"Broj je pozitivan"<<endl;
else if(broj<0)
    cout<<"Broj je negativan"<<endl;
else
    cout<<"Broj je nula"<<endl;
Ovo drugo me mrzi da čitam, to će neko drugi
voodoo_ je offline   Odgovor sa citatom ove poruke
Sledeći korisnik se zahvaljuje korisniku voodoo_ na korisnoj poruci:
2233 (8.8.2015)
Stara 8.8.2015, 20:00   #346
2233
Član
 
Član od: 26.2.2010.
Poruke: 57
Zahvalnice: 5
Zahvaljeno 0 puta na 0 poruka
Određen forumom Re: How to... C++

Hvala za prvi odgocor. Nego aj mi pojasni, znači i da sam imo , lupam, 5 IFova samo prvi bi moro da bude IF a ostali ELSE IF ?
2233 je offline   Odgovor sa citatom ove poruke
Stara 8.8.2015, 20:10   #347
ivan90BG
Veteran
 
Član od: 3.5.2008.
Lokacija: Beograd
Poruke: 760
Zahvalnice: 81
Zahvaljeno 213 puta na 144 poruka
Određen forumom Re: How to... C++

if(entern==10) //ova poruka ako je brojacanik istekao
ivan90BG je offline   Odgovor sa citatom ove poruke
Stara 8.8.2015, 20:16   #348
2233
Član
 
Član od: 26.2.2010.
Poruke: 57
Zahvalnice: 5
Zahvaljeno 0 puta na 0 poruka
Određen forumom Re: How to... C++

Citat:
ivan90BG kaže: Pregled poruke
if(entern==10) //ova poruka ako je brojacanik istekao
Da primetio sam, to je inače ostalo jer sam pokušavo i da idem sa entern=10 pa preko -- da dovedem do 0. A inae program svakako ne radi , probo sam i ispravljeno.
2233 je offline   Odgovor sa citatom ove poruke
Stara 8.8.2015, 20:44   #349
voodoo_
V.I.P. GNU/Linux
 
Avatar korisnika voodoo_
 
Član od: 1.11.2005.
Poruke: 10.471
Zahvalnice: 1.712
Zahvaljeno 4.505 puta na 2.551 poruka
Određen forumom Re: How to... C++

Citat:
2233 kaže: Pregled poruke
Hvala za prvi odgocor. Nego aj mi pojasni, znači i da sam imo , lupam, 5 IFova samo prvi bi moro da bude IF a ostali ELSE IF ?
Zavisi da li su ti if-ovi uzajamno isključivi. U tvom slučaju jesu (odnosno hoćeš da prođe samo jedan uslov od nekoliko uslova), i tad ih vezuješ sa else if. Ako napišeš

Kod:
if (uslov1)
   nešto;
if (uslov2)
   nešto_drugo;
if (uslov3)
   nešto_treće;
else
   nešto_četvrto;
To su onda razdvojeni if-ovi, prva dva uslova mogu da prođu nezavisno od trećeg (odnosno možeš da imaš situaciju da se desi i nešto i nešto_drugo i nešto_treće ili četvrto), a poslednji else pripada samo poslednjem if-u.

Else-if se u principu koristi samo kad mora jer nije najlepši konstrukt, ja umesto toga koristim switch-case kad god mogu (tj. kad logika provere to dozvoljava).
voodoo_ je offline   Odgovor sa citatom ove poruke
Stara 8.8.2015, 21:25   #350
Neutrino
Deo inventara foruma
 
Član od: 17.6.2011.
Poruke: 6.641
Zahvalnice: 88
Zahvaljeno 2.902 puta na 1.775 poruka
Određen forumom Re: How to... C++

Citat:
voodoo_ kaže: Pregled poruke
Za prvi slučaj ti treba

Kod:
if (broj>0)
    cout<<"Broj je pozitivan"<<endl;
else if(broj<0)
    cout<<"Broj je negativan"<<endl;
else
    cout<<"Broj je nula"<<endl;
Ovo drugo me mrzi da čitam, to će neko drugi
Uf kad vidim ovako nakalemljen if prosto mi dođe da samom sebi oprostim što ponekad smatram da ugnježdeni ternarni operatori imaju svoju upotrebnu vrednost

Kod:
#include <iostream>
#include <cstdlib>

int main(int argc, char *argv[] )
{
    int broj;
    std::cin >> broj;
    std::cout << "Broj je " << ((broj == 0) ? "nula" : ((broj < 0) ? "negativan" : "pozitivan")) << ".\n";
    return EXIT_SUCCESS;
}
Neutrino je offline   Odgovor sa citatom ove poruke
Stara 8.8.2015, 21:59   #351
voodoo_
V.I.P. GNU/Linux
 
Avatar korisnika voodoo_
 
Član od: 1.11.2005.
Poruke: 10.471
Zahvalnice: 1.712
Zahvaljeno 4.505 puta na 2.551 poruka
Određen forumom Re: How to... C++

Zapravo hteo sam i to da napišem jer mnogo volim ternarni operator i rado ga koristim (u C-u i Javi, pa me Java programeri gledaju popreko ), ali reko' onda moram i to da objašnjavam
voodoo_ je offline   Odgovor sa citatom ove poruke
Stara 8.8.2015, 22:05   #352
Neutrino
Deo inventara foruma
 
Član od: 17.6.2011.
Poruke: 6.641
Zahvalnice: 88
Zahvaljeno 2.902 puta na 1.775 poruka
Određen forumom Re: How to... C++

Citat:
voodoo_ kaže: Pregled poruke
Zapravo hteo sam to da napišem jer mnogo volim ternarni operator u C-u i rado ga koristim, ali reko' onda moram i to da objašnjavam
Ma ja ga izbegavam kad god mogu, nevezano za jezik, al' ovde je prosto ko poručen
Neutrino je offline   Odgovor sa citatom ove poruke
Stara 8.8.2015, 22:26   #353
Flash91
Veteran
 
Član od: 24.10.2007.
Lokacija: Beograd
Poruke: 694
Zahvalnice: 222
Zahvaljeno 215 puta na 121 poruka
Određen forumom Re: How to... C++

Citat:
voodoo_ kaže: Pregled poruke
Zapravo hteo sam i to da napišem jer mnogo volim ternarni operator i rado ga koristim (u C-u i Javi, pa me Java programeri gledaju popreko ), ali reko' onda moram i to da objašnjavam
Nesto najstrasnije sa cim sam se susreo u programiranju za sve godine. Najpre zbog citanja koda, svaki put totalni mindfuck.
Flash91 je offline   Odgovor sa citatom ove poruke
Stara 8.8.2015, 22:31   #354
Neutrino
Deo inventara foruma
 
Član od: 17.6.2011.
Poruke: 6.641
Zahvalnice: 88
Zahvaljeno 2.902 puta na 1.775 poruka
Određen forumom Re: How to... C++

Citat:
Flash91 kaže: Pregled poruke
Nesto najstrasnije sa cim sam se susreo u programiranju za sve godine. Najpre zbog citanja koda, svaki put totalni mindfuck.
Osnovno pravilo kad pišeš kompleksne ternarne operatore - koristi zagrade. Neuporedivo se lakše čita kod u bilo kom editoru koji ima podršku za uparivanje otvorenih i zatvorenih zagrada.

I još bitnije, ako baš moraš da koristiš ternarne operatore nikada ne idi dublje od dva nivoa.
Neutrino je offline   Odgovor sa citatom ove poruke
Stara 8.8.2015, 22:35   #355
voodoo_
V.I.P. GNU/Linux
 
Avatar korisnika voodoo_
 
Član od: 1.11.2005.
Poruke: 10.471
Zahvalnice: 1.712
Zahvaljeno 4.505 puta na 2.551 poruka
Određen forumom Re: How to... C++

Citat:
Flash91 kaže: Pregled poruke
Nesto najstrasnije sa cim sam se susreo u programiranju za sve godine. Najpre zbog citanja koda, svaki put totalni mindfuck.
Ma tripujem se kako će kod biti optimizovaniji (naročito u interapt rutinama) jer nema grananja i ne radi branch prediction, i onda imam "stalnije" performanse (što verovatno nema veze sa životom pošto nisam zapravo analizirao assembly i pojma nemam kako to kompajler na kraju izoptimizuje), ali eto, my code my rules
voodoo_ je offline   Odgovor sa citatom ove poruke
Stara 8.8.2015, 22:38   #356
Djordje Turjacanin
Deo inventara foruma
 
Član od: 15.6.2008.
Lokacija: Prnjavor, RS
Poruke: 3.872
Zahvalnice: 491
Zahvaljeno 1.031 puta na 664 poruka
Slanje poruke preko MSN-a korisniku Djordje Turjacanin Slanje poruke preko Skypea korisniku Djordje Turjacanin
Određen forumom Re: How to... C++

Citat:
2233 kaže: Pregled poruke
Da primetio sam, to je inače ostalo jer sam pokušavo i da idem sa entern=10 pa preko -- da dovedem do 0. A inae program svakako ne radi , probo sam i ispravljeno.
Zar u do...while petlji uslov ne treba da bude
while ((number!=5)&&(entern!=10)) odnosno petlja treba se vrti sve dok broj nije jednak 5, i dok ukupno nisi 10 puta unio, čim jedan od ta dva uslova nije tačan, izlazi se iz petlje.
U tvom slučaju
while(number==5||(entern==10))
Iz petlje će izaći uvijek, osim u slučaju da uneseš 5 ili da je entern jednak 10.

Evo primjer.
Prvi ulazak u petlju, entern ti je 0, on ti se uveća u 1. Uneseš broj npr. 8. provjerava se uslov, number ti je razlicit od 5, tu imaš logičku nulu, entern ti je različit od 10, znači i tu ti je logička nula, 0 ili 0 ti je uvijek 0, odnosno uslov nije ispunjen i petlja se završava. Tj. iskače ti iz petlje odmah čim prvi broj uneseš.

Citat:
Flash91 kaže: Pregled poruke
Nesto najstrasnije sa cim sam se susreo u programiranju za sve godine. Najpre zbog citanja koda, svaki put totalni mindfuck.
Nešto najmrže ikad kad vidim, a pogotovo na ispitu, pa pita koji je rezultat izvršenja programa.
Djordje Turjacanin je offline   Odgovor sa citatom ove poruke
Stara 8.8.2015, 22:48   #357
voodoo_
V.I.P. GNU/Linux
 
Avatar korisnika voodoo_
 
Član od: 1.11.2005.
Poruke: 10.471
Zahvalnice: 1.712
Zahvaljeno 4.505 puta na 2.551 poruka
Određen forumom Re: How to... C++

Ali to je samo skraćena if-then-else sintaksa, tako je i čitajte
voodoo_ je offline   Odgovor sa citatom ove poruke
Stara 8.8.2015, 22:50   #358
Flash91
Veteran
 
Član od: 24.10.2007.
Lokacija: Beograd
Poruke: 694
Zahvalnice: 222
Zahvaljeno 215 puta na 121 poruka
Određen forumom Re: How to... C++

Citat:
Neutrino kaže: Pregled poruke
Osnovno pravilo kad pišeš kompleksne ternarne operatore - koristi zagrade. Neuporedivo se lakše čita kod u bilo kom editoru koji ima podršku za uparivanje otvorenih i zatvorenih zagrada.

I još bitnije, ako baš moraš da koristiš ternarne operatore nikada ne idi dublje od dva nivoa.
Ma da, samo sto u 100% slucajeva postoji daleko citljiviji, pa cak i elegantniji nacin da se problem resi, bez doticnog operatora.

Citat:
voodoo_ kaže: Pregled poruke
Ma tripujem se kako će kod biti optimizovaniji (naročito u interapt rutinama) jer nema grananja i ne radi branch prediction, i onda imam "stalnije" performanse (što verovatno nema veze sa životom pošto nisam zapravo analizirao assembly i pojma nemam kako to kompajler na kraju izoptimizuje), ali eto, my code my rules
Sad sam bas citao, gledajuci JIT assembly za if-then blokove i ternarni operator, ljudi su zakljucili da je ternarni neoptimizovaniji, pogotovo za x86 kod. LINK. Mada cenim da sa danasnjim kompajlerima stvarno nema neke razlike...
Flash91 je offline   Odgovor sa citatom ove poruke
Stara 8.8.2015, 22:51   #359
Neutrino
Deo inventara foruma
 
Član od: 17.6.2011.
Poruke: 6.641
Zahvalnice: 88
Zahvaljeno 2.902 puta na 1.775 poruka
Određen forumom Re: How to... C++

Citat:
Flash91 kaže: Pregled poruke
Ma da, samo sto u 100% slucajeva postoji daleko citljiviji, pa cak i elegantniji nacin da se problem resi, bez doticnog operatora.
Šta je elegantnije u pisanju šest linija umesto jedne?

Citat:
Flash91 kaže: Pregled poruke
Sad sam bas citao, gledajuci JIT assembly za if-then blokove i ternarni operator, ljudi su zakljucili da je ternarni neoptimizovaniji, pogotovo za x86 kod. LINK. Mada cenim da sa danasnjim kompajlerima stvarno nema neke razlike...
To šta će (i da li će) biti brže ne zavisi od koda već kako kompajler razbija kontrolu toka i ternarni operator. U 99% slučajeva oba će imati istu brzinu. U onom 1% gde dolaze do izražaja zvrčke Microsoft-ovog kompajlera može da se pojavi razlika. Tako da ne obraćaj pažnju na mikro-optimizaciju osim ako baš nemaš neki dobar razlog. Piši šta ti više odgovara. Ternarni operator je sasvim čitljiv ako se poštuju pravila koja sam postovao prethodno.
Neutrino je offline   Odgovor sa citatom ove poruke
Sledeći korisnik se zahvaljuje korisniku Neutrino na korisnoj poruci:
Flash91 (8.8.2015)
Stara 9.8.2015, 12:08   #360
ivan90BG
Veteran
 
Član od: 3.5.2008.
Lokacija: Beograd
Poruke: 760
Zahvalnice: 81
Zahvaljeno 213 puta na 144 poruka
Određen forumom Re: How to... C++

Ja isto mnogo volim ternarni operator. Toliko da kada iskucam neki if else i zaključim da mogu da ga zamenim ternarnim operatorom to ću i da uradim (a da pre pisanja nisam razmišljao da li će moći). Čak i ako posle nekog vremena čitam neki kod i prometim da mogu negde da uglavim ternatni operator, to ću i uraditi. Nije zbog optimizacije, jer znam da je nema, nego mi nekako izgleda lepo, onako jedna dodela sa grananjem u nutar samog izraza.

Ali, vodim računa da ako su grane imalo veći izrazi lepo to formatiram
Kod:
nekaPromenljiva = neki > uslov ? neki.veliki(izraz + sa.dosta(), stvari)
                               : još.jedan(veliki.izraz(), sa -> sa.još().stvari)
ivan90BG je offline   Odgovor sa citatom ove poruke
Sledeći korisnik se zahvaljuje korisniku ivan90BG na korisnoj poruci:
voodoo_ (9.8.2015)
Odgovor

Bookmarks sajtovi

Tagovi
c++, how to, pomoc, programiranje

Alatke vezane za temu
Vrste prikaza

Vaš status
Ne možete postavljati teme
Ne možete odgovarati na poruke
Ne možete slati priloge uz poruke
Ne možete prepravljati svoje poruke

BB kod: uključeno
Smajliji: uključeno
[IMG] kod: uključeno
HTML kod: isključeno



Sva vremena su po Griniču +2 h. Sada je 12:19.


Powered by vBulletin® verzija 3.8.7
Copyright ©2000–2020, vBulletin Solutions, Inc.
Hosted by Beograd.com