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

Da li moze sa int-om?

[es] :: C programiranje :: Da li moze sa int-om?

[ Pregleda: 1116 | Odgovora: 13 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

strahinja_ftn

Član broj: 77998
Poruke: 7
*.110.eunet.yu.



Profil

icon Da li moze sa int-om?17.12.2005. u 19:51

Pitanje je sledece: Da li je moguce da ulazna konverzija bude %d tj. int a da program proverava da li je korisnik uneo ceo broj? kada stavim da je ulazna konverzija %d program prima samo prvi ceo broj npr: 33.45 program primi 33, a 45 unese kao sledeci podatak. Meni treba da izbaci poruku o gresci i da se unos vrsi ponovo. Ak' nek' zna pomagaj!!
17.12.2005. u 19:51 

del-boy
Bojan Delić
Novi Sad

Član broj: 9330
Poruke: 847
*.113.EUnet.yu.

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


Profil

icon Re: Da li moze sa int-om?17.12.2005. u 20:34
Koristi konverziju za realne tipove (%f ili %lf) i onda proveri kof je tipa promenljiva! I mene je zanimalo kako da odredim kod je tipa promenljiva pa sam pitao! Pogledaj temu http://www.elitesecurity.org/t...aznati-kog-je-tipa-promenljiva!

btw. Kolega, dobrodošao na forum! :D
I ja blog za trku imam...
17.12.2005. u 20:34 

strahinja_ftn

Član broj: 77998
Poruke: 7
*.194.EUnet.yu.



Profil

icon Re: Da li moze sa int-om?18.12.2005. u 00:33
Pozz! Markoski (asistent) kaze da sve moze da se odradi sa int-om. Ja koristio double a on kaze da mu se ne svidja posto zauzima vise memorije?! Mora da moze sa int-om ali kako???
18.12.2005. u 00:33 

NrmMyth
Split, Kaštela

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



Profil

icon Re: Da li moze sa int-om?18.12.2005. u 09:38
Neka ti on onda pojasni pa nam ti postaj da vidimo sta je to bilo.
18.12.2005. u 09:38 

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 2849
*.nat-pool.po.sbb.co.yu.

Jabber: xfiles@elitesecurity.org
Sajt: www.antivari.com


Profil

icon Re: Da li moze sa int-om?18.12.2005. u 10:04
Citat:

Ja koristio double a on kaze da mu se ne svidja posto zauzima vise memorije?!


:) Štedljiv neki čovek...

No, dobro...


// NETESTIRANO !!!

Code:

#include <stdlib.h> // zbog system PAUSE
#include <stdio.h> // zbog printf, scanf, ...

int main(int argc, char* argv[])
{
    int x;
    int y;

    printf( "Unesi prvi broj:" );
    scanf( "%d", &x);

    // **************************************
    fflush ( stdin ); // <- MOŽDA OVO
    // **************************************
        
    printf( "Unesi drugi broj:" );
    scanf( "%d", &y );

    printf ( "x=%d, y=%d\n", x, y );

    system( "PAUSE" );
    return 0;
}





[Ovu poruku je menjao X Files dana 18.12.2005. u 11:07 GMT+1]
FREEWARE
Di rečnik, v1.0.058 (srp-eng/eng-srp priručni rečnik)
http://www.antivari.com
18.12.2005. u 10:04 

NrmMyth
Split, Kaštela

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



Profil

icon Re: Da li moze sa int-om?18.12.2005. u 11:08
Bojim se da nisi shvatio covjeka. Pogledaj prvi post.
18.12.2005. u 11:08 

del-boy
Bojan Delić
Novi Sad

Član broj: 9330
Poruke: 847
*.59.EUnet.yu.

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


Profil

icon Re: Da li moze sa int-om?18.12.2005. u 12:20
Citat:
strahinja_ftn: Pozz! Markoski (asistent) kaze da sve moze da se odradi sa int-om. Ja koristio double a on kaze da mu se ne svidja posto zauzima vise memorije?! Mora da moze sa int-om ali kako???


Meni nije on asistent nego Žarko, a on ne zeza mnogo oko tih stvari! Ovo što on traži ne znam kako da uradim. Pitaj njega!
I ja blog za trku imam...
18.12.2005. u 12:20 

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 2849
*.nat-pool.po.sbb.co.yu.

Jabber: xfiles@elitesecurity.org
Sajt: www.antivari.com


Profil

icon Re: Da li moze sa int-om?18.12.2005. u 12:54
Ono sto znam od ranije je da scanf() funkcija omogucuje samo osnovnu
funkcionalnost unosa, i ne ostavlja previse mesta za validaciju unosa. Za bilo
koji ozbiljniji unos treba koristiti buffere koji se kasnije parsuju po zelji.

dakle: fgets, fflush, sscanf, ...

Mozda moze i sa scanf, ali ja ne znam...







Ovde ima mozda jedno od lepsih resenja...
http://andromeda.fesb.hr/fesbX...is/diskretni/cstart/c_055a.htm

[Ovu poruku je menjao X Files dana 18.12.2005. u 18:25 GMT+1]
FREEWARE
Di rečnik, v1.0.058 (srp-eng/eng-srp priručni rečnik)
http://www.antivari.com
18.12.2005. u 12:54 

Nedeljko
Nedeljko Stefanovic

Član broj: 314
Poruke: 2125
*.dial.InfoSky.Net.



Profil

icon Re: Da li moze sa int-om?18.12.2005. u 19:13
Citat:
strahinja_ftn: Pozz! Markoski (asistent) kaze da sve moze da se odradi sa int-om. Ja koristio double a on kaze da mu se ne svidja posto zauzima vise memorije?! Mora da moze sa int-om ali kako???

Mislim da je hteo da kaže da se zadatak koji rešavaš može uraditi bez realnih tipova, a ne da se to odnosi na unos sa tastature. Za 100% bezbedan unos unosi stringove, pa ih onda parsiraj. Znači, za unos koristi fgets(), pa onda konvertuj.
Nedeljko Stefanovic
18.12.2005. u 19:13 

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 2849
*.nat-pool.po.sbb.co.yu.

Jabber: xfiles@elitesecurity.org
Sajt: www.antivari.com


Profil

icon Re: Da li moze sa int-om?18.12.2005. u 21:51
Mozda ovako, za proveru unosa (nekog integera)

Code:

#include <stdio.h>
int main()
{
    int ret, x = 0;
    char c;

    printf( "Unesite X: " );
    ret = scanf( "%d", &x );

    printf( "X = %d\tret = %d\n", x, ret );

    if( ret != 1 )
       printf("Nije broj!\n");
    else
    {
       ret = scanf("%c", &c);
       if ( c != '\n' )
          printf("Greska!\n");
    }
    system( "PAUSE" );
    return 0;
}

FREEWARE
Di rečnik, v1.0.058 (srp-eng/eng-srp priručni rečnik)
http://www.antivari.com
18.12.2005. u 21:51 

strahinja_ftn

Član broj: 77998
Poruke: 7
*.ftn.ns.ac.yu.



Profil

icon Re: Da li moze sa int-om?21.12.2005. u 10:40
Sad kaze da u opste nemora da se vrsi provera zato sto jos nismo stigli do toga?! Eto tako vam je to.
Mada drugi asistent kaze da se tor radi sa fgets.
21.12.2005. u 10:40 

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 2849
*.nat-pool.po.sbb.co.yu.

Jabber: xfiles@elitesecurity.org
Sajt: www.antivari.com


Profil

icon Re: Da li moze sa int-om?21.12.2005. u 16:43
fgets() je najbolje resenje jer se lako moze naknadno ispitati sta je uneto... u svakom
slucaju imas kod gore koji sam ostavio, i koji radi, pa kombinuj...
FREEWARE
Di rečnik, v1.0.058 (srp-eng/eng-srp priručni rečnik)
http://www.antivari.com
21.12.2005. u 16:43 

chupcko
Beograd

Član broj: 5560
Poruke: 1075
*.mobtel.co.yu.

Sajt: www.google.com


Profil

icon Re: Da li moze sa int-om?30.12.2005. u 12:34
Nije mi bas najjasnije sta zelis da uradis, ali ajde da pokusam da rekonstruisem pitanje:

Zelis koristeci samo int promennljive da ucitas neki niz karaktera i da dozovlis unosenje samo celobrojnih vrendosti:

3287 => ispravno
-76 => ispravo
783.0000 => ispravno (ili mozda nije)
788.6576 => neispravno

Recimo nesto ovako ti moze dosta pomoci ?

Code:

#include <stdio.h>

int main(void)
{
  int a, b, n;

  n = scanf("%d.%d", &a, &b);
  printf("n:%d a:%d b:%d\n", n, a, b);
}


CIsto za podsetnik: scanf vraca koliko je uspesno skeniranih entiteta pronasao :).
Mozes da koristis i %*d, u tom slucaju on ocekuje broj ali ga ne smesta ni u jednu varijablu :).

Doduse kao sto neko rece, mozda je najoblje da sam napravis neki automat za prepoznavanje brojeva na ulazu.

P.S. man 3 scanf

CHUPCKO
30.12.2005. u 12:34 

Mali Misha
Mihajlo Anđelković

Član broj: 79396
Poruke: 313
*.powernet.bg.

ICQ: 195487525


Profil

icon Re: Da li moze sa int-om?30.12.2005. u 15:41
Ako pristupis buffer-u stdin, mozes direktno da procitas sta je ostalo iza int-a. Ako ti je samo bitno da nije unet realan broj dovoljno je da proveris da li su ostali tacka ( '.' ) i jedna cifra ( '0' - '9' ). Ako korisnik treba da unese striktno samo int, tamo treba da se nadje samo znak za novu liniju ( '\n' ).

Sad, eh, ja samo ne znam standardan nacin da se do ovog bafera dodje. Kod MS VC++ 6.0 je to stdin->_ptr kod BCC 5.5 stdin->curp. Dakle, recimo ovako:

Code:
#include <stdio.h>
#include <ctype.h>

main()
{
    int x;

    scanf("%d",&x);

    if(stdin->_ptr[0]=='.' && isdigit(stdin->_ptr[1]) )
    {
        printf("NOT OK"); // realan broj
    }
    else printf("OK"); // ceo broj + moguc ostatak koji nije realan br.
    
    return 0;
}
ili
Code:
// ...
    if(stdin->_ptr[0]=='\n')
    {
        printf("OK"); // samo ceo broj
    }
    else printf("NOT OK"); // ceo broj + ostatak
// ...

Ako gresim, bicu ispravljen ;)
Dim di dam...
30.12.2005. u 15:41 

[es] :: C programiranje :: Da li moze sa int-om?

[ Pregleda: 1116 | Odgovora: 13 ]

Postavi temu Odgovori

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