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

Kako saznati kog je tipa promenljiva!

[es] :: C/C++ programiranje :: Kako saznati kog je tipa promenljiva!

[ Pregleda: 2830 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

del-boy
Bojan Delić
Beograd

Član broj: 9330
Poruke: 1089

Sajt: www.delic.in.rs


+21 Profil

icon Kako saznati kog je tipa promenljiva!14.12.2005. u 21:03 - pre 223 meseci
Imam jedan problem, koji ne znam kako da rešim!
Čitao sam po forumu, ali nisam našao odgovor.

Meni u stvari treba način na koji mogu da prepoznam kog tipa je unešena brojevna promenljiva!

Npr: Ako uvedem promenljivu realnog tipa (float ili double) i u nju nešto učitam sa tastature, korisnik može da unese i ceo broj, naravno. E sad, kako ja da ispišem tu promenljivu bez decimala ako je ona tako unešena u originalu? Nadam se da znate na šta mislim.

Ako recimo kornik unese 2.15 da mu program to i napiše na ekranu, znači 2.15, a ako korisnik unese 2 da mu i ispiše 2, a ne 2.00!

PS: pomogla bi mi i neka funkcija iz biblioteka, ali više bi mi pomogao kod koji radi ovo, pošto na faxu nismo radili sve biblioteke ( u stvari radili smo ih baš malo)!
 
Odgovor na temu

Ivand
Ivan Dimitrijević
...
yu/pa

Član broj: 17
Poruke: 2161
194.106.175.*

Sajt: www.webmanijak.com


+4 Profil

icon Re: Kako saznati kog je tipa promenljiva!14.12.2005. u 22:03 - pre 223 meseci
Mozes pri deljenju sa jedan vidis da li je ostatak veci od nule.
Verovatno postoji i pametniji nacin...
 
Odgovor na temu

BigSmallMan

Član broj: 55561
Poruke: 7
*.nspoint.net.



Profil

icon Re: Kako saznati kog je tipa promenljiva!14.12.2005. u 22:10 - pre 223 meseci
Probaj nesto ovako:
Code:

#include <stdio.h>

int main(void)
{
    float fff;
    int iii;
    
    scanf(" %f", &fff);
    while(fff)
    {
        iii=(int)fff;
        if(iii==fff)
            printf("%d\n", iii);
        else
            printf("%f\n", fff);
        scanf(" %f", &fff);
    }
    return 0;
}
 
Odgovor na temu

del-boy
Bojan Delić
Beograd

Član broj: 9330
Poruke: 1089

Sajt: www.delic.in.rs


+21 Profil

icon Re: Kako saznati kog je tipa promenljiva!15.12.2005. u 00:01 - pre 223 meseci
Citat:
Ivand: Mozes pri deljenju sa jedan vidis da li je ostatak veci od nule.
Verovatno postoji i pametniji nacin...


Ali kako da dobijem ostatak pri deljenju sa 1 kod realnih tipova? Ako na primer broj 2.15 podelim sa 1 dobuću 2.15 i tu je ostatak nula, znači da ovo ne bi radilo!
Citat:
BigSmallMan: Probaj nesto ovako:
Code:

#include <stdio.h>

int main(void)
{
float fff;
int iii;

scanf(" %f", &fff);
while(fff)
{
iii=(int)fff;
if(iii==fff)
printf("%d\n", iii);
else
printf("%f\n", fff);
scanf(" %f", &fff);
}
return 0;
}


OK, ovo mi se već malo više sviđa! Hvala!

Ako neko zna još neko elegantno rešenje, dobrodošlo je naravno...
 
Odgovor na temu

Ivand
Ivan Dimitrijević
...
yu/pa

Član broj: 17
Poruke: 2161
194.106.175.*

Sajt: www.webmanijak.com


+4 Profil

icon Re: Kako saznati kog je tipa promenljiva!15.12.2005. u 00:54 - pre 223 meseci
Izvinjavam se moja greska kada sam rekao ostatak deljenja , mislio sam na celobrojno deljenje ( % )

Code:

if((f-(f%1))!=0) // ovo nije ceo broj
else // ovo jeste ceo broj 





 
Odgovor na temu

del-boy
Bojan Delić
Beograd

Član broj: 9330
Poruke: 1089

Sajt: www.delic.in.rs


+21 Profil

icon Re: Kako saznati kog je tipa promenljiva!15.12.2005. u 01:36 - pre 223 meseci
Ni ovo ne razumem! Mislim logiku razimem, ali kompajler ne može ni da prevede kod u kome se nalazi ovako nešto. Ne možeš kod realnog broja tražiti ostaak pri deljenju ovako!

Možda da u ovu promenljivu stavim konvertovan relan broj u ceo pa da gledam tu razliku, to je onda ostatak, ali to je u suštini i BigSmallMan-ovo rešenje, samo malo drukčije zapisano!
 
Odgovor na temu

Goranowsky

Član broj: 70620
Poruke: 45
*.dialup.sezampro.yu.



Profil

icon Re: Kako saznati kog je tipa promenljiva!15.12.2005. u 18:33 - pre 223 meseci
Momci, to se radi sa template-om.

http://www.cplusplus.com/doc/tutorial/templates.html
 
Odgovor na temu

NrmMyth
Ivan Maček
Split

Član broj: 63456
Poruke: 849
*.cmu.carnet.hr.

Sajt: www.dump.hr


Profil

icon Re: Kako saznati kog je tipa promenljiva!15.12.2005. u 19:10 - pre 223 meseci
Citat:
Goranowsky: Momci, to se radi sa template-om.

http://www.cplusplus.com/doc/tutorial/templates.html

Nece template pomoci da se razazna tip unosa.

Najprvo sta mi pada na pamet je da uneses kao string i provjeris dali u tom string je sadrzana tocka ( '.' ), ako je spremas u float varijablu, ako nije u int...
 
Odgovor na temu

Goran Arandjelovic
Beograd

Član broj: 29116
Poruke: 387
*.141.eunet.yu.



+9 Profil

icon Re: Kako saznati kog je tipa promenljiva!15.12.2005. u 20:57 - pre 223 meseci
Code:

/* NETESTIRANO */
include <iostream>
using namespace std;

int main(int argc, char *argv[])
{
  double p;
  int r;
  cout << "Unesi vrednost: ";
  cin >> p;
  r = (int)p;
  if(r<p){
    cout << "Ovo nije celobrojna vrednost";
  }
  if(r==p){
    cout << "Ovo je celobrojna vrednost";
  }
}


Nadam se da je jasno...
Pozdrav.
 
Odgovor na temu

idb
Ivan Bulic
Beograd

Član broj: 4436
Poruke: 402



Profil

icon Re: Kako saznati kog je tipa promenljiva!16.12.2005. u 09:11 - pre 223 meseci
Sta ces dobiti ako unese negativne vrednosti: -2.2 ili -3?
Mozda je upotreba funcije modf bolje resenje:
Code:

#include <iostream>
#include <cmath>
using namespace std;

bool is_integer(double num, double i){
    if (modf(num, &i)==0) return true;
    else return false;    
}
int main(int argc, char *argv[]){
    double ceo_deo = 0;
    double num[] = {1.12, 2.0, 32, -1.12, -2, -8};
    for (int i=0; i<6;i++){
        if (is_integer(num[i],ceo_deo)) 
            cout <<"num["<<i<<"] = "<<num[i]<< " je ceo broj\n";
        else 
            cout <<"num["<<i<<"] = "<<num[i]<< " nije ceo broj\n";
    }
    system("PAUSE");
    return 0;
}
 
Odgovor na temu

Buffy
Stanko Culaja
Sipovo, BiH

Član broj: 45310
Poruke: 312
*.teol.net.



Profil

icon Re: Kako saznati kog je tipa promenljiva!16.12.2005. u 14:56 - pre 223 meseci
mozda bi, kako je vec neko rekao, bilo dobro da se podaci cuvaju u stringu jer tad mozes na jednostavan nacin da saznas da li je ili nije cjel broj, koliko ima cifri iza tacke itd...
Ali vjerovatno bi se gubilo dosta na brzini programa, a i program trosio bi vise memorije.
Pozdrav!

[Ovu poruku je menjao Buffy dana 16.12.2005. u 15:58 GMT+1]
 
Odgovor na temu

NrmMyth
Ivan Maček
Split

Član broj: 63456
Poruke: 849
*.cmu.carnet.hr.

Sajt: www.dump.hr


Profil

icon Re: Kako saznati kog je tipa promenljiva!16.12.2005. u 19:00 - pre 223 meseci
Stvar sa stringom bi i na informatickim natjecanjima prolazila, zasto onda ne iskoristiti??
 
Odgovor na temu

[es] :: C/C++ programiranje :: Kako saznati kog je tipa promenljiva!

[ Pregleda: 2830 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

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