21.7.2015, 12:10 | #341 |
Banned
Član od: 2.5.2011.
Lokacija: Bujanovac
Poruke: 156
Zahvalnice: 205
Zahvaljeno jedanput na jednoj poruci
|
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); } } |
21.7.2015, 12:47 | #342 |
Deo inventara foruma
|
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. |
Sledeći korisnik se zahvaljuje korisniku NIx Car na korisnoj poruci: | ||
mica1709 (22.7.2015) |
21.7.2015, 13:44 | #343 |
Banned
Član od: 2.5.2011.
Lokacija: Bujanovac
Poruke: 156
Zahvalnice: 205
Zahvaljeno jedanput na jednoj poruci
|
Re: How to... C++
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.
|
8.8.2015, 19:38 | #344 |
Član
Član od: 26.2.2010.
Poruke: 59
Zahvalnice: 5
Zahvaljeno 0 puta na 0 poruka
|
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; } |
8.8.2015, 19:56 | #345 |
V.I.P. GNU/Linux
Član od: 1.11.2005.
Poruke: 11.166
Zahvalnice: 2.086
Zahvaljeno 4.923 puta na 2.859 poruka
|
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; |
Sledeći korisnik se zahvaljuje korisniku voodoo_ na korisnoj poruci: | ||
2233 (8.8.2015) |
8.8.2015, 20:00 | #346 |
Član
Član od: 26.2.2010.
Poruke: 59
Zahvalnice: 5
Zahvaljeno 0 puta na 0 poruka
|
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 ?
|
8.8.2015, 20:10 | #347 |
Veteran
Član od: 3.5.2008.
Lokacija: Beograd
Poruke: 760
Zahvalnice: 81
Zahvaljeno 213 puta na 144 poruka
|
Re: How to... C++
if(entern==10) //ova poruka ako je brojacanik istekao
|
8.8.2015, 20:16 | #348 |
Član
Član od: 26.2.2010.
Poruke: 59
Zahvalnice: 5
Zahvaljeno 0 puta na 0 poruka
|
Re: How to... C++
|
8.8.2015, 20:44 | #349 | |
V.I.P. GNU/Linux
Član od: 1.11.2005.
Poruke: 11.166
Zahvalnice: 2.086
Zahvaljeno 4.923 puta na 2.859 poruka
|
Re: How to... C++
Citat:
Kod:
if (uslov1) nešto; if (uslov2) nešto_drugo; if (uslov3) nešto_treće; else nešto_četvrto; 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). |
|
8.8.2015, 21:25 | #350 | |
Deo inventara foruma
Član od: 17.6.2011.
Poruke: 7.336
Zahvalnice: 94
Zahvaljeno 3.334 puta na 2.010 poruka
|
Re: How to... C++
Citat:
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; } |
|
8.8.2015, 21:59 | #351 |
V.I.P. GNU/Linux
Član od: 1.11.2005.
Poruke: 11.166
Zahvalnice: 2.086
Zahvaljeno 4.923 puta na 2.859 poruka
|
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
|
8.8.2015, 22:05 | #352 |
Deo inventara foruma
Član od: 17.6.2011.
Poruke: 7.336
Zahvalnice: 94
Zahvaljeno 3.334 puta na 2.010 poruka
|
Re: How to... C++
|
8.8.2015, 22:26 | #353 |
Veteran
Član od: 24.10.2007.
Lokacija: Beograd
Poruke: 694
Zahvalnice: 222
Zahvaljeno 215 puta na 121 poruka
|
Re: How to... C++
Nesto najstrasnije sa cim sam se susreo u programiranju za sve godine. Najpre zbog citanja koda, svaki put totalni mindfuck.
|
8.8.2015, 22:31 | #354 | |
Deo inventara foruma
Član od: 17.6.2011.
Poruke: 7.336
Zahvalnice: 94
Zahvaljeno 3.334 puta na 2.010 poruka
|
Re: How to... C++
Citat:
I još bitnije, ako baš moraš da koristiš ternarne operatore nikada ne idi dublje od dva nivoa. |
|
8.8.2015, 22:35 | #355 |
V.I.P. GNU/Linux
Član od: 1.11.2005.
Poruke: 11.166
Zahvalnice: 2.086
Zahvaljeno 4.923 puta na 2.859 poruka
|
Re: How to... C++
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
|
8.8.2015, 22:38 | #356 | |
Deo inventara foruma
|
Re: How to... C++
Citat:
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š. Nešto najmrže ikad kad vidim, a pogotovo na ispitu, pa pita koji je rezultat izvršenja programa. |
|
8.8.2015, 22:48 | #357 |
V.I.P. GNU/Linux
Član od: 1.11.2005.
Poruke: 11.166
Zahvalnice: 2.086
Zahvaljeno 4.923 puta na 2.859 poruka
|
Re: How to... C++
Ali to je samo skraćena if-then-else sintaksa, tako je i čitajte
|
8.8.2015, 22:50 | #358 | ||
Veteran
Član od: 24.10.2007.
Lokacija: Beograd
Poruke: 694
Zahvalnice: 222
Zahvaljeno 215 puta na 121 poruka
|
Re: How to... C++
Citat:
Citat:
|
||
8.8.2015, 22:51 | #359 | ||
Deo inventara foruma
Član od: 17.6.2011.
Poruke: 7.336
Zahvalnice: 94
Zahvaljeno 3.334 puta na 2.010 poruka
|
Re: How to... C++
Citat:
Citat:
|
||
Sledeći korisnik se zahvaljuje korisniku Neutrino na korisnoj poruci: | ||
Flash91 (8.8.2015) |
9.8.2015, 12:08 | #360 |
Veteran
Član od: 3.5.2008.
Lokacija: Beograd
Poruke: 760
Zahvalnice: 81
Zahvaljeno 213 puta na 144 poruka
|
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) |
Sledeći korisnik se zahvaljuje korisniku ivan90BG na korisnoj poruci: | ||
voodoo_ (9.8.2015) |
Bookmarks sajtovi |
Tagovi |
c++, how to, pomoc, programiranje |
|
|