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

Kako saznati kog je tipa promenljiva!

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

[ Pregleda: 1151 | Odgovora: 11 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

del-boy
Bojan Delić
Novi Sad

Član broj: 9330
Poruke: 862
*.67.eunet.yu.

ICQ: 77174165
Sajt: www.delic.in.rs


Profil

icon Kako saznati kog je tipa promenljiva!14.12.2005. u 21:03

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)!
I ja blog za trku imam...
14.12.2005. u 21:03 

Ivand
Ivan Dimitrijević
yu/pa

Član broj: 17
Poruke: 2032
194.106.175.*

Jabber: artur_dent@elitesecurity.org
Sajt: www.fotomanijak.com


Profil

icon Re: Kako saznati kog je tipa promenljiva!14.12.2005. u 22:03
Mozes pri deljenju sa jedan vidis da li je ostatak veci od nule.
Verovatno postoji i pametniji nacin...
http://fotomanijak.com kad porastem bicu dpreview ;)
14.12.2005. u 22:03 

BigSmallMan

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



Profil

icon Re: Kako saznati kog je tipa promenljiva!14.12.2005. u 22:10
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;
}
14.12.2005. u 22:10 

del-boy
Bojan Delić
Novi Sad

Član broj: 9330
Poruke: 862
*.170.EUnet.yu.

ICQ: 77174165
Sajt: www.delic.in.rs


Profil

icon Re: Kako saznati kog je tipa promenljiva!15.12.2005. u 00:01
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...
I ja blog za trku imam...
15.12.2005. u 00:01 

Ivand
Ivan Dimitrijević
yu/pa

Član broj: 17
Poruke: 2032
194.106.175.*

Jabber: artur_dent@elitesecurity.org
Sajt: www.fotomanijak.com


Profil

icon Re: Kako saznati kog je tipa promenljiva!15.12.2005. u 00:54
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 





http://fotomanijak.com kad porastem bicu dpreview ;)
15.12.2005. u 00:54 

del-boy
Bojan Delić
Novi Sad

Član broj: 9330
Poruke: 862
*.76.eunet.yu.

ICQ: 77174165
Sajt: www.delic.in.rs


Profil

icon Re: Kako saznati kog je tipa promenljiva!15.12.2005. u 01:36
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!
I ja blog za trku imam...
15.12.2005. u 01:36 

Goranowsky

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



Profil

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

http://www.cplusplus.com/doc/tutorial/templates.html
15.12.2005. u 18:33 

NrmMyth
Split, Kaštela

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



Profil

icon Re: Kako saznati kog je tipa promenljiva!15.12.2005. u 19:10
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...
15.12.2005. u 19:10 

Goran Arandjelovic
Goran Arandjelovic
Beograd

Moderator
Član broj: 29116
Poruke: 277
*.141.eunet.yu.



Profil

icon Re: Kako saznati kog je tipa promenljiva!15.12.2005. u 20:57
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.
15.12.2005. u 20:57 

idb
Ivan Bulic
Beograd

Član broj: 4436
Poruke: 380
*.hidmet.sr.gov.yu.

Sajt: www.hidmet.sr.gov.yu/lati..


Profil

icon Re: Kako saznati kog je tipa promenljiva!16.12.2005. u 09:11
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;
}
16.12.2005. u 09:11 

Buffy
Stanko Culaja
za sada sam nezaposlen!
Sipovo,Republika Srpska

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

Sajt: www.sipovo.org


Profil

icon Re: Kako saznati kog je tipa promenljiva!16.12.2005. u 14:56
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]
SAMO DA RATA NE BUDE,
LUDILA MEDJU LJUDIMA,
VELIKI NUDE ZABLUDE,
PLASE NAS RAZNIM CUDIMA
I SVAKOJ BAJCI NAUDE,
DA RATA NE BUDE.

Djordje Balasevic
16.12.2005. u 14:56 

NrmMyth
Split, Kaštela

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



Profil

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

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

[ Pregleda: 1151 | Odgovora: 11 ]

Postavi temu Odgovori

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