Izračunavanje postotka pomocu varijabli

poruka: 5
|
čitano: 9.874
|
moderatori: Lazarus Long, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
16 godina
offline
Izračunavanje postotka pomocu varijabli u C++

Počeo sam učiti C++ prije par dana i imam jedan problemčić...

 

Naime želim napraviti jednostavni programčić koji će koristiti varijable za izračunavanje postotaka. Pogledao sam cijeli kod par puta i trebao bi raditi ispravno, ali iz nekog razloga dobijem čudan rezultat :S

 

#include <iostream>

using namespace std;

int main()
{
long float a;
long int b;
long float c;
long float d;
cout << "Upisi zeljeni broj" << endl;
cout << endl;
cin >> a;
cout << endl;
cout << "Koliko posto zelis odvojiti od broja "; cout << a; cout << endl;
cout << endl;
cin >> b; c = a / 100; d = c * b;
cout << endl;
cout << b; " posto od broja "; cout << a; " jednako je "; cout << d; cout << endl;
cout << endl;
system("PAUSE");
return 0;
}

Ne stavljajte ruku u ventilator dok ventilator radi. Upozorenje na klimatizacijskom uređaju
Poruka je uređivana zadnji put ned 24.10.2010 18:54 (lovac82).
Moj PC  
0 0 hvala 0
16 godina
odjavljen
offline
RE: Izračunavanje postotka pomocu varijabli u C++

Tvoj program podijeli int sa 100, odbaci sve iz decimalne točke, a tek onda dodijeli float varijabli. Trebaš stavit:

c = ((long float)a) / 100;

Heart: _/\_/\_/\_/\_/\_/\_/\_/\_ Brain: __________________________
16 godina
neaktivan
offline
RE: Izračunavanje postotka pomocu varijabli u C++
Probaj malo urednije pisati kod jer je to poprilicno necitko :(
Kada koristis cout i zelis isapisati tekst zatim neki broj netrebas 2 puta pisati cout
cout << "neki tekst"; cout << a ; cout << endl; 
jednostavno umjesto ; napisi << i nastavi pisati kao sto si to upotrijebio ovdje
cout << "Upisi zeljeni broj" << endl;
Znaci pises samo
cout << "Neki tekst" << a << endl;
druga stvar koju bi napomenu je da netrebas za svaki izracun novu varijablu nego sve mozes ubacit u isti red umjesto
c = a / 100;
d = c * b;
mozes jednostavno pisati
c = a / 100 * b;
istu "gresku" si napravio i u inicijalizaciji varijabli netreba pisati
long float a;
long float b;
long float c;
nego jednostavno
long float a, b , c;
Neznam gdje si vidio long float ili tome slicne stvari ali mislim da se netrebas time zamarati na pocetku jer se neces sluziti tako velikim brojevima jednostavno pisi float / double za brojave sa decimalnom tockom i int za cijele brojeve
ako te zanimaju opsezi brojevi i detalji o tome imas ovdje http://www.cplusplus.com/doc/tutorial/variables/
Sad kada sam vec ispisao toliko evo jos jedna napomena u vezi rjesenja koje je predlozio  MrBlc
Ako za neku varijablu i stavis da je float ona to "nece" biti ako barem jedna od varijabli koja je ukljucena u formulu za dobijanje rjesenja nije toga ili vecega tipa znaci ako si stavio 
int a, b;
float c = a / b; // rezultat je sada 2
dobit ces krivi rezultat jer su i a i b tipa int koji je "manji" od floata sto znaci da ce se varijabli c pridruziti vrijednost u obliku int bez obzira sto je ona deklarirana kao float
ako je pak ili varijabla a ili varijable b veceg ili istoga tipa od float gdje se zapisuje rezultat odna ce rezultat biti tipa float
npr
int a = 11;
double b = 5;
float c = a / b; // rezultat je sada 2.2
ako ti pak niti jedna od varijabli nije deklarirana istog ili veceg tipa kao rezultat odna mozes koristiti ovo sto je predlozeno u postu prije a to je da jednu varijablu pretvoris u veci tip znaci napises 
int a, b;
float c = (float)a / b;
sada je najveci tip unutar formule prije dodjeljivanja rezultata float jer je a koji je bio tipa int prije racunanja pretvoren u float. Sobzirom da se najveci tip unutar izraza podudara sa tipom rezultata opet dobivamo tocan rezultat osnosno 2.2 iz primjera prije.
Evo ode tvoj program malo urednije napisan pa baci oko
#include <iostream>
using namespace std;
int main()
{
   float a, c;
   int b;
   
   cout << "Upisi zeljeni broj" << endl << endl;
   cin >> a;
   cout << "Koliko posto zelis odvojiti od broja " << a << endl;
   cin >> b; 
   
   c = a / 100 * b;
   
   cout << b << " posto od broja " << a << " je " << c << endl;
   
   system("PAUSE");
   return 0;
}
Napomena: termin veci manji tip je kriv ovo san  koristia samo zato jer mi se cinilo lakse objasnit
EDIT: Zasot tekst odjednom zavrsava ovako zbijen a nisan ga tako pisa (izbrisane su prazne linije izmedju dvaju blokova)
Poruka je uređivana zadnji put ned 24.10.2010 19:49 (Orinem).
16 godina
offline
RE: Izračunavanje postotka pomocu varijabli u C++
Orinem kaže...
Probaj malo urednije pisati kod jer je to poprilicno necitko :(
Kada koristis cout i zelis isapisati tekst zatim neki broj netrebas 2 puta pisati cout
cout << "neki tekst"; cout << a ; cout << endl; 
jednostavno umjesto ; napisi << i nastavi pisati kao sto si to upotrijebio ovdje
cout << "Upisi zeljeni broj" << endl;
Znaci pises samo
cout << "Neki tekst" << a << endl;
Ovo nisam znao, hvala na savjetu
druga stvar koju bi napomenu je da netrebas za svaki izracun novu varijablu nego sve mozes ubacit u isti red umjesto
c = a / 100;
d = c * b;
mozes jednostavno pisati
c = a / 100 * b;
OK...
istu "gresku" si napravio i u inicijalizaciji varijabli netreba pisati
long float a;
long float b;
long float c;
nego jednostavno
long float a, b , c;
Ovo znam jer sam već čitao oko toga, samo ovo mi je prvi program kojeg pokušavam pisati tako da mi se u početku jednostavnije činilo da svaku varijablu definiram u posebnom redu xD
Neznam gdje si vidio long float ili tome slicne stvari ali mislim da se netrebas time zamarati na pocetku jer se neces sluziti tako velikim brojevima jednostavno pisi float / double za brojave sa decimalnom tockom i int za cijele brojeve
Heh, koristio sam long float jer sam odmah u početku htio napraviti programčić koji može baratati s jako velikim brojevima
ako te zanimaju opsezi brojevi i detalji o tome imas ovdje http://www.cplusplus.com/doc/tutorial/variables/
Sad kada sam vec ispisao toliko evo jos jedna napomena u vezi rjesenja koje je predlozio  MrBlc
Ako za neku varijablu i stavis da je float ona to "nece" biti ako barem jedna od varijabli koja je ukljucena u formulu za dobijanje rjesenja nije toga ili vecega tipa znaci ako si stavio 
int a, b;
float c = a / b; // rezultat je sada 2
dobit ces krivi rezultat jer su i a i b tipa int koji je "manji" od floata sto znaci da ce se varijabli c pridruziti vrijednost u obliku int bez obzira sto je ona deklarirana kao float
ako je pak ili varijabla a ili varijable b veceg ili istoga tipa od float gdje se zapisuje rezultat odna ce rezultat biti tipa float
npr
int a = 11;
double b = 5;
float c = a / b; // rezultat je sada 2.2
ako ti pak niti jedna od varijabli nije deklarirana istog ili veceg tipa kao rezultat odna mozes koristiti ovo sto je predlozeno u postu prije a to je da jednu varijablu pretvoris u veci tip znaci napises 
int a, b;
float c = (float)a / b;
sada je najveci tip unutar formule prije dodjeljivanja rezultata float jer je a koji je bio tipa int prije racunanja pretvoren u float. Sobzirom da se najveci tip unutar izraza podudara sa tipom rezultata opet dobivamo tocan rezultat osnosno 2.2 iz primjera prije.
Evo ode tvoj program malo urednije napisan pa baci oko
#include <iostream>
using namespace std;
int main()
{
   float a, c;
   int b;
   
   cout << "Upisi zeljeni broj" << endl << endl;
   cin >> a;
   cout << "Koliko posto zelis odvojiti od broja " << a << endl;
   cin >> b; 
   
   c = a / 100 * b;
   
   cout << b << " posto od broja " << a << " je " << c << endl;
   
   system("PAUSE");
   return 0;
}
Napomena: termin veci manji tip je kriv ovo san  koristia samo zato jer mi se cinilo lakse objasnit
EDIT: Zasot tekst odjednom zavrsava ovako zbijen a nisan ga tako pisa (izbrisane su prazne linije izmedju dvaju blokova)
Hvala, ovo ću sada proučiti
E i još nešto, ako napišem primjer ovako:
int a;
int b;
int c;
ili ovako:
int a, b, c;Ima li tu kakve razlike u zauzeću memorije ili je ovaj drugi primjer samo pregledniji?
Ne stavljajte ruku u ventilator dok ventilator radi. Upozorenje na klimatizacijskom uređaju
Poruka je uređivana zadnji put ned 24.10.2010 19:55 (lovac82).
16 godina
neaktivan
offline
RE: Izračunavanje postotka pomocu varijabli u C++

Nema razlike u zauzimanju memorije u pitanju je samo preglednost

 

1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice