u pravu si 3 god u osnovama a tako mi i treba kad sam krenuo sa pokazivačima i dadotekama,
Dilema između jezika C, C++, Java, C#, ...
- poruka: 59
- |
- čitano: 22.940
- |
- moderatori:
Lazarus Long, XXX-Man, vincimus
Mišljenja sam da će mu učenje programiranja biti zanimljivije ako vidi tamo neke trokute da se vrte nego pusta slova na crnoj pozadini.
Od knjigovodstvenih aplikacija teško do kruha.
vijerovali ili ne već sam naišao na problem oko varijabli
//05.05.2011-Senaid Maksumić-Računske operacije//
#include<iostream>
#include<cstdlib>
using namespace std;
int main()
{
int a,b;
cout<<"Unesi dva cijela broja"<<endl;
cin>>a>>b;
cout<<"OK,unijeli ste "<<a<<" i "<<b<<endl;
cout<<"Program će ispisati zbir,razliku,prozvod,kolicnik brojeva "<<a<<" i "<<b<<endl;
cout<<"Zbir "<<a<<" i "<<b<<" je "<<a+b<<endl;
cout<<"Razlika "<<a<<" i "<<b<<" je "<<a-b<<endl;
cout<<"Proizvod "<<a<<" i "<<b<<" je "<<a*b<<endl;
double c=a/b;
cout<<"Kolicnik "<<a<<" i "<<b<<" je "<<c<<endl;
system("PAUSE");
return 0;
}
Nisi rekao u čemu je problem.
EDIT: Mislim da sam shvatio. Pretpostavljam da ti je problem u tome što će ti kao rezultat dijeljenja uvijek ispisati cijeli broj iako si c definirao kao double. Problem je u tome što su i a i b cijelobrojni pa će rezultat njihova dijeljenja uvijek biti cijelobrojan rezultat. Da bi to riješio moraš ili i ili b ili oboje definirati kao double ili float. Ili umjesto:
c=a/b;
staviti:
c=static_cast<double>(a)/b;
aha znači cast služi za pretvaranje iz povratnog tipa u drugi,ali što static oprosti na peglanju ali programiranje mi je živ.cilj
Mišljenja sam da će mu učenje programiranja biti zanimljivije ako vidi tamo neke trokute da se vrte nego pusta slova na crnoj pozadini.
Od knjigovodstvenih aplikacija teško do kruha.
naprotiv open gl i sl mene neinteresira interesuju me ozb.jezici a za gui ću koristiti vb za početak i c# ako ikad shvatim j***nu logiku
Ja bih te pitao što tvoj program kaže ako uneseš b=0 ?
A static cast je onaj najobičniji cast jednog tipa u drugi, on neće ništa provjeravati, samo će konvertirati varijablu u tip koji si naglasio. Ako su tipovi nekombatibilni može biti svega, on pretpostavlja da znaš što radiš i da ta konverzija ima smisla.
Ja bih te pitao što tvoj program kaže ako uneseš b=0 ?
A static cast je onaj najobičniji cast jednog tipa u drugi, on neće ništa provjeravati, samo će konvertirati varijablu u tip koji si naglasio. Ako su tipovi nekombatibilni može biti svega, on pretpostavlja da znaš što radiš i da ta konverzija ima smisla.
ok hvala znači static cast- ako konverzija ima smisla
Ja bih te pitao što tvoj program kaže ako uneseš b=0 ?
A static cast je onaj najobičniji cast jednog tipa u drugi, on neće ništa provjeravati, samo će konvertirati varijablu u tip koji si naglasio. Ako su tipovi nekombatibilni može biti svega, on pretpostavlja da znaš što radiš i da ta konverzija ima smisla.
ok hvala znači static cast- ako konverzija ima smisla
količnik 5 i 0 je Infinity
količnik 5 i 0 je Infinity
A to nije baš dobro, jel ? Sa nulom ne bismo smjeli dijeliti koliko ja znam ;-)
Idući korak je popravit program tako da se dijeljenje ne izvršava ako unesemo b=0 nego se samo ispiše "Ne smijemo dijeliti s nulom".
if(b==o){
cout<<"Nemozemo dijeliti sa nulom"<<endl;
}
else{
.......}
if(b==o){
cout<<"Nemozemo dijeliti sa nulom"<<endl;
}
else{
.......}
Dobro! No sad malo nadogradi kod tako da korisnik ima izbor hoće li zbrajati, oduzimati, dijeliti ili množiti.
switch(i){
case 1:
.....break;
...
default:
cout<<"Unesite 1,2,3,4 meni će se ponovo pokrenuti"<<endl;
system("PAUSE");
goto L1;
}
switch(i){
case 1:
.....break;
...
default:
cout<<"Unesite 1,2,3,4 meni će se ponovo pokrenuti"<<endl;
system("PAUSE");
goto L1;
}
Ovu naredbu goto moraš obavezno izbjegavati. Ona se ne preporučuje za programiranje i općenito predstavlja loš način programiranja.
čitao sam to ali eto tu nisam znao ništa drugo upotrijebiti
Probaj sa while i do-while petljama.
neka počeo sam ispočetka jer vidiš kako sam znao c++ "znam" switch,strukture i unije a neznam varijable
Ja ponovo dosađujem sa junior problemima ,al evo nakon debug-iranja ovog koda nakon unosa 0 ispiše samo Press Any Key To Continue.
//06.05.2011-Maksumić Senaid-Apsolutna vrijednost//
#include<iostream>
#include<cstdlib>
using namespace std;
int main()
{
float a;
cout<<"Unesi neki broj"<<endl;
cin>>a;
if(a<0){
cout<<"Apsolutna vrijdnost broja "<<a<<" je "<<-a<<endl;
}
if(a>0){
cout<<"Apsolutna vrijednost broja "<<a<<" je "<<-a<<endl;
}
if(a=0){
cout<<"Broj nula nema svoju apsolutnu vrijednost"<<endl;
}
system("PAUSE");
return 0;
}
Probao sam i mijenjat povratnu vrijednost a static castom ali ponovo nece u int ali neće.
treba ići if(a==0)
to je operator s kojim provjeravaš je li vrijednost varijable s lijeve strane jednaka vrijednosti s desne
i šta ne bi onda kod slučaja (a>0) trebalo ispisati a, a ne -a
treba ići if(a==0)
to je operator s kojim provjeravaš je li vrijednost varijable s lijeve strane jednaka vrijednosti s desne
i šta ne bi onda kod slučaja (a>0) trebalo ispisati a, a ne -a
hvala ,a probao sam sve varijante ali samo ova izbaci tačno
u zabuni sam koristio sam c i c++ do saznanja o c#,javi,python-u,vb-u.......
u c i c++ nisam loš strukture,pomalo klase i pokazivači,pomalo nizovi i dadoteke, i slično
u c#
using system;
public static void main()
{
out.writeln("*********************");
}
mislim da je ovako
pomozite šta da radim da učim nevedene osim pythona i koji ili da nastavim sa c/c++ i kako
MOLIM POMOĆ
aj ti ljepo pocmi ispocetka s jednim jezikom a ne ih 5 odjednom i uci od pocetka knjige, detaljno.....
@senaid
jednostavno moraš detaljno čitati knjigu ako želiš programirati, ne smije ti se desiti da brkaš dodjelu (a=0) i operator usporedbe (a==0)
operatore usporedbe moraš znati kao tablicu množenja.
na to moraš nadograditi programersko razmišljanje
u konkretnom primjeru to izgleda ovako:
ako je a = -5, apsolutna vrijednost je suprotna od tog broja - dakle 5
programerski to postigneš tako da napišeš:
if(a<0)
{
-a; // ako je a manje od 0 varijabli a pridružujemo suprotnu vrijednost od broja a tj. -a
}
ako je a = 5, apsolutna vrijednost je također 5 tj:
if(a>0)
{
a; // ne mijenja se vrjednost, tj. predznak varijable a
}
Ovim si pretočio matematičku relaciju u programski jezik.
Kao što možeš vidjeti i sam da bi dobio apsolutnu vrijednost promjenu predznaka vršiš samo kod brojeva manjih od 0.
To otvara mogućnost da cijelu matematičku relaciju riješiš jednom jedinom if else uvjetnom naredbom, pošto imaš dva stanja, a ne tri.
Dakle:
if(a>=0)
{
a; // ako je broj veći od nula ili nula ostavljaš predznak
}
else
{
-a; // ako je broj manji od 0 mijenjaš predznak
}
ok,ali kad stavim else i sa zagradama i bez zagrada on ispiše i ono pod else ali mogu stavit
else{
if{
----
}
}
zar ne?
edit:a ustvari to nije ni potrebno ali nema veze ja ću ovako a tebi hvala na savjetu.
ok,ali kad stavim else i sa zagradama i bez zagrada on ispiše i ono pod else ali mogu stavit
else{
if{
----
}
}
zar ne?
edit:a ustvari to nije ni potrebno ali nema veze ja ću ovako a tebi hvala na savjetu.
budes li pilo po forumima neces nikad nis naucit nego sam moras isprobavat
ali probam sve osim ovoga što je bilo znam teoretski da je operator jednakosti == a pridruživanje =
ali džaba kad to neznam primjeniti.
ali probam sve osim ovoga što je bilo znam teoretski da je operator jednakosti == a pridruživanje =
ali džaba kad to neznam primjeniti.
kazes da ucis 3g ako se nevaram a jos neznas osnove osnova.....mozda ovo ipak i nije bas za tebe
Mora ti if else raditi (jesi probao uopće?)
#include <iostream>
using namespace std;
int main()
{
int broj;
cout<< "Unesi cijeli broj: ";
cin>> broj;
if(broj>=0)
{
cout<< "|" << broj << "|" << " = " << broj << endl;
}
else
{
cout<< "|" << broj << "|" << " = " << -broj << endl;
}
cin.get();
return 0;
}
To otvara mogućnost da cijelu matematičku relaciju riješiš jednom jedinom if else uvjetnom naredbom, pošto imaš dva stanja, a ne tri.
Dakle:
if(a>=0)
{
a; // ako je broj veći od nula ili nula ostavljaš predznak
}
else
{
-a; // ako je broj manji od 0 mijenjaš predznak
}
Ako ne mora čuvati upisanu vrijednost, onda zapravo može i sa samo jednom if-naredbom:
Znači, if (a < 0) a = -a;
#include <iostream>
using namespace std;
int main()
{
int broj;
cout<< "Unesi cijeli broj: ";
cin>> broj;
if(broj>=0)
{
cout<< "|" << broj << "|" << " = " << broj << endl;
}
else
{
cout<< "|" << broj << "|" << " = " << -broj << endl;
}
cin.get();
return 0;
}
Iako je ovo ispravno, bolje bi to bilo izbjegavati - da u if-else u oba uvjeta guraš praktički istu naredbu. Za to bi bilo bolje ili a) rascijepati taj cout na prije i poslije uvjeta ili b) uvesti dodatnu varijablu. Znači, ovako:
a)
#include <iostream>
using namespace std;
int main()
{
int broj;
cout<< "Unesi cijeli broj: ";
cin>> broj;
cout<< "|" << broj << "|" << " = ";
if (broj < 0) broj = -broj;
cout << broj << endl;
cin.get();
return 0;
}
b)
#include <iostream>
using namespace std;
int main()
{
int broj, absbroj;
cout<< "Unesi cijeli broj: ";
cin>> broj;
if (broj>=0) absbroj = broj;
else absbroj = -broj;
cout<< "|" << broj << "|" << " = " << absbroj << endl;
cin.get();
return 0;
}
ok
ali što program stopirate sa cin.get(); get()-jeli to funkcija iz c gets(); samo što tu nemora varijabla biti string
ok
ali što program stopirate sa cin.get(); get()-jeli to funkcija iz c gets(); samo što tu nemora varijabla biti string
Nemoj se opterećivati sa stvarima koje ti u ovom trenutku nisu bitne. Ako ako baš moraš - jel znaš što je cin? Objekt klase istream. Klasa istream ima metodu (funkciju) get - Get unformatted data from stream. Više o istreamu imaš ovdje: http://www.cplusplus.com/reference/iostream/istream/
Programi inače se ne "stopiraju" - nisam obraćao pažnju na to. Ne stopiraju se zato što u cin-u ostane onaj Enter koji pritisneš nakon što ukucaš broj. To se može spriječiti tako da ispred cin.get(); zadaš naredbu cin.ignore();, kojom će se ignorirati svi znakovi koji se u tom trenutku nalaze u bufferu.
ok
ali što program stopirate sa cin.get(); get()-jeli to funkcija iz c gets(); samo što tu nemora varijabla biti string
Nemoj se opterećivati sa stvarima koje ti u ovom trenutku nisu bitne. Ako ako baš moraš - jel znaš što je cin? Objekt klase istream. Klasa istream ima metodu (funkciju) get - Get unformatted data from stream. Više o istreamu imaš ovdje: http://www.cplusplus.com/reference/iostream/istream/
Programi inače se ne "stopiraju" - nisam obraćao pažnju na to. Ne stopiraju se zato što u cin-u ostane onaj Enter koji pritisneš nakon što ukucaš broj. To se može spriječiti tako da ispred cin.get(); zadaš naredbu cin.ignore();, kojom će se ignorirati svi znakovi koji se u tom trenutku nalaze u bufferu.
ok,hvala ali eto zato ja i neznam programirat što me uvjek interesuje nešto što netreba.
Ali kako ste vi svi naučili programirati,ustvari šta programirate console,gui,win api,qt,i kako ste vi naučili programirati.