Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Moze li mi ko objasniti ovu pojavu u C++

[es] :: C/C++ programiranje :: C/C++ za početnike :: Moze li mi ko objasniti ovu pojavu u C++

[ Pregleda: 1892 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

osmania
Panet

Član broj: 26316
Poruke: 773
*.20.11.vie.surfer.at.



+7 Profil

icon Moze li mi ko objasniti ovu pojavu u C++11.10.2007. u 20:58 - pre 201 meseci
evo code:

Code:

#include <iostream>
using namespace std;
main() {
  int Arbeiter, Stueck, ArbeiterFrage;
  cin >> Arbeiter >> Stueck >> ArbeiterFrage;
  cout << (Stueck/Arbeiter*ArbeiterFrage);
    system("PAUSE");
    return EXIT_SUCCESS;
}


Ukucajte brojeve 10 5 2 dobice te rezultat nula zasto je nula rezultat??? ovo je vec drugi program koji mi pravi gresku tu.
promijenio sam int u double i program radi pravilno. U cemu caka... jer unosim INT vrijednosti...

code koji radi pravilno:

Code:

#include <iostream>
using namespace std;
main() {
  double Arbeiter, Stueck, ArbeiterFrage;
  cin >> Arbeiter >> Stueck >> ArbeiterFrage;
  cout << (Stueck/Arbeiter*ArbeiterFrage);
    system("PAUSE");
    return EXIT_SUCCESS;
}


ima li ko kakvo obajsnjenje za ovo... koristim devc++ 4.9.9.2
 
Odgovor na temu

Burgos
Nemanja Borić
Amazon Web Services
Berlin

Član broj: 12484
Poruke: 1947
217.169.209.*

Sajt: stackoverflow.com/users/1..


+480 Profil

icon Re: Moze li mi ko objasniti ovu pojavu u C++11.10.2007. u 21:03 - pre 201 meseci
Zato sto je to celobrojno deljenje i pri njemu se ostatak zanemaruje.

5 / 10 = 0
0 * 2 = 0
 
Odgovor na temu

osmania
Panet

Član broj: 26316
Poruke: 773
*.20.11.vie.surfer.at.



+7 Profil

icon Re: Moze li mi ko objasniti ovu pojavu u C++11.10.2007. u 21:33 - pre 201 meseci
a sto to ovdje ne radi jer definisane su varijable kao double

Code:

#include <math.h>
#include <iostream>
using namespace std;

int main()
{
   double a,b,c,d;
   double const x = 8145060;
   cout<<"Wahrscheinlichkeit bei Lotto 6 Richtigen system 6 aus 45:\n";
   cout<< (a = 1/x) <<"\n";
   cout<< "Wahrscheinlichkeit bei Lotto 4 Richtigen system 6 aus 45\n";
   cout<< (b = 11115/x)<<"\n";
   cout<< "Wahrscheinlichkeit bei Lotto 3 Richtigen system 6 aus 45\n";
   cout<< (c = 182780/x)<<"\n";
   cout<< "Wahrscheinlichkeit bei Lotto 5 Richtigen mit Zusatzzahl system 6 aus 45\n";
   cout<< (d = 234/x*1/39)<<"\n";

   system("PAUSE");
   return EXIT_SUCCESS;
}


stavi int const x = 8145060; nece da radi zbog cega?
 
Odgovor na temu

Mali Misha
Mihajlo Anđelković
NBGD

Član broj: 79396
Poruke: 379
78.90.101.*

ICQ: 195487525
Sajt: cpptea.com


+1 Profil

icon Re: Moze li mi ko objasniti ovu pojavu u C++11.10.2007. u 21:35 - pre 201 meseci
Možeš ti i sa intidžerima da radiš (logičniji su u ovom slučaju), ali onda pri računu treba staviti nešto poput:

Code:
cout << ((double)Stueck/Arbeiter*ArbeiterFrage);

Ovo (double) pretvara Stueck u double pre deljenja sa Arbeiter, te je i rezultat double. Daljim množenjem sa int ostale double, a i dalje su sve promenljive int.

Ovo je bio odgovor na prvo pitanje. Zapravo, kako mi se čini, ovo je (zajedno sa drugim postom ovde) odgovor na oba pitanja.
Ipak se ++uje.
 
Odgovor na temu

osmania
Panet

Član broj: 26316
Poruke: 773
*.20.11.vie.surfer.at.



+7 Profil

icon Re: Moze li mi ko objasniti ovu pojavu u C++11.10.2007. u 21:40 - pre 201 meseci
Citat:
Mali Misha: (odgovor na prvi post)
Možeš ti i sa intidžerima da radiš (logičniji su u ovom slučaju), ali onda pri računu treba staviti nešto poput:

Code:
cout << ((double)Stueck/Arbeiter*ArbeiterFrage);

Ovo (double) pretvara Stueck u double pre deljenja sa Arbeiter, te je i rezultat double. Daljim množenjem sa int ostale double, a i dalje su sve promenljive int.


hmmm??? malo mi je nejasno
 
Odgovor na temu

Mali Misha
Mihajlo Anđelković
NBGD

Član broj: 79396
Poruke: 379
78.90.101.*

ICQ: 195487525
Sajt: cpptea.com


+1 Profil

icon Re: Moze li mi ko objasniti ovu pojavu u C++11.10.2007. u 21:44 - pre 201 meseci
I meni već počinje onako da biva nejasno šta te još buni. Jesi l' čuo za celobrojno deljenje? To se upravo dešava kad koristiš int. Da bi ga izbegao možeš koristiti double svo vreme, ili svoje int samo pri računu kastovati (sgn Typumwandlung) ka double.

( Ajd' sad reci da si ovo parče koda koje sam ti dao isprobao pre pisanja gornjeg odgovora pa još i da nije radilo )
Ipak se ++uje.
 
Odgovor na temu

osmania
Panet

Član broj: 26316
Poruke: 773
*.20.11.vie.surfer.at.



+7 Profil

icon Re: Moze li mi ko objasniti ovu pojavu u C++11.10.2007. u 21:46 - pre 201 meseci
all right sada je sve kako treba... kontam zbog cega zato sto uzima samo 0 ako je 0,32758768 int....
ali u cemu je fora kod drugog iskaza onog

Citat:
osmania: a sto to ovdje ne radi jer definisane su varijable kao double

Code:

#include <math.h>
#include <iostream>
using namespace std;

int main()
{
   double a,b,c,d;
   double const x = 8145060;
   cout<<"Wahrscheinlichkeit bei Lotto 6 Richtigen system 6 aus 45:\n";
   cout<< (a = 1/x) <<"\n";
   cout<< "Wahrscheinlichkeit bei Lotto 4 Richtigen system 6 aus 45\n";
   cout<< (b = 11115/x)<<"\n";
   cout<< "Wahrscheinlichkeit bei Lotto 3 Richtigen system 6 aus 45\n";
   cout<< (c = 182780/x)<<"\n";
   cout<< "Wahrscheinlichkeit bei Lotto 5 Richtigen mit Zusatzzahl system 6 aus 45\n";
   cout<< (d = 234/x*1/39)<<"\n";

   system("PAUSE");
   return EXIT_SUCCESS;
}


stavi int const x = 8145060; nece da radi zbog cega?
 
Odgovor na temu

Mali Misha
Mihajlo Anđelković
NBGD

Član broj: 79396
Poruke: 379
78.90.101.*

ICQ: 195487525
Sajt: cpptea.com


+1 Profil

icon Re: Moze li mi ko objasniti ovu pojavu u C++11.10.2007. u 21:51 - pre 201 meseci
Možda zato što se račun obavlja pre dodele?
Elem, razlog je isti. Celobrojno deljenje.
Ipak se ++uje.
 
Odgovor na temu

MadHouseRock

Član broj: 154937
Poruke: 7
*.BVCOM.NET.



Profil

icon Re: Moze li mi ko objasniti ovu pojavu u C++11.10.2007. u 22:03 - pre 201 meseci
Mozda te zbunjuje sto pise 1,22774e-007 to je normalan rezultat samo sto je pomnozen sa 107
Stavi ovo iznad prvog cout to ce da zaokruzi rezultat na 6 decimala

Code:

cout.setf( ios_base::fixed, ios_base::floatfield );
cout.precision(6);
 
Odgovor na temu

osmania
Panet

Član broj: 26316
Poruke: 773
*.20.11.vie.surfer.at.



+7 Profil

icon Re: Moze li mi ko objasniti ovu pojavu u C++11.10.2007. u 22:05 - pre 201 meseci
Citat:
Mali Misha: Možda zato što se račun obavlja pre dodele?
Elem, razlog je isti. Celobrojno deljenje.

e ovo bas ne kontam jer ovdje je konstanta int i ona je dodjeljena x znaci jedan cjelobrojni broj je dodjeljen x a ostale varijable su double...
kako ja to vidim a = 1/int je sigurno double vrijednost a ta double vrijednost se dodjljuje double varijabli ili mozda grijesim ne kontam bas ovu zezanciju ????
 
Odgovor na temu

MadHouseRock

Član broj: 154937
Poruke: 7
*.BVCOM.NET.



Profil

icon Re: Moze li mi ko objasniti ovu pojavu u C++11.10.2007. u 22:14 - pre 201 meseci
Izvini sad sam video da pise ono za int x = 8145060

Problem je sto on prvo radi 1/x i posto je x int rezultat toga ce biti int tj 0, stavi (double) ispred x i onda ce on prvo biti pretvoren u double pa ce se raditi 1/x i rezultat ce biti double
Npr:
Code:

cout<< (a = 1/(double)x) <<"\n";
 
Odgovor na temu

osmania
Panet

Član broj: 26316
Poruke: 773
*.20.11.vie.surfer.at.



+7 Profil

icon Re: Moze li mi ko objasniti ovu pojavu u C++11.10.2007. u 22:17 - pre 201 meseci
hvala punooo..... ekipa hvala jos jednom svaka cast ....
 
Odgovor na temu

Mali Misha
Mihajlo Anđelković
NBGD

Član broj: 79396
Poruke: 379
78.90.101.*

ICQ: 195487525
Sajt: cpptea.com


+1 Profil

icon Re: Moze li mi ko objasniti ovu pojavu u C++11.10.2007. u 22:52 - pre 201 meseci
Kad imaš ovako brojeve, osim

Code:
1/(double)x

može i:
Code:
1.0/x


Inače, izrazi poput
Code:
cout<< (a = 1/(double)x) <<"\n";

nisu baš poželjni. Zašto ne bi mogao da definišeš sve vrednosti pri vrhu? Znači:

Code:
   int const x = 8145060;
   double a = 1.0 / x,
          b = ... ,
          c = ... ,
          d = ... ;

I onda ih jednostavno štampaš kao a,b,c,d. Ili pak, ako ti a,b,c,d ne trebaju kasnije, slobodno ih izbaci.
Preglednije je.
Ipak se ++uje.
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: Moze li mi ko objasniti ovu pojavu u C++

[ Pregleda: 1892 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.