Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  Kuidas tuvastada, et tegu pole numbriga? märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale. Teata moderaatorile
otsing:  
Lennnukas
HV kasutaja
Lennnukas

liitunud: 24.10.2004




sõnum 03.05.2010 18:42:29 Kuidas tuvastada, et tegu pole numbriga? vasta tsitaadiga

Kirjutan hetkel andmepuu koodi C keeles ning jäin rumala asjaga hätta. Kasutaja peab sisestama elemendi vanema numbrilisel kujul, kuid seda mitte tehes, läheb programm lolliks. Seega üritan kirjutada tingimuslauset, mis siis tuvastab, et tegu ei ole numbriga ja suunab goto abil uuesti sisestamise kohta.
Spoiler Spoiler Spoiler
Kommentaarid: 14 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 14
tagasi üles
vaata kasutaja infot saada privaatsõnum
andrusny
Kreisi kasutaja
andrusny

liitunud: 20.03.2006




sõnum 03.05.2010 18:55:53 vasta tsitaadiga

Kas C keeles pole mingit analoogi PHP is_numeric() functionile? Kasuta seda.
_________________
Kommentaarid: 7 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 7
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
Lennnukas
HV kasutaja
Lennnukas

liitunud: 24.10.2004




sõnum 03.05.2010 19:19:06 vasta tsitaadiga

Kahjuks ei leidnud googlest analoogilist funktsiooni.
Kommentaarid: 14 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 14
tagasi üles
vaata kasutaja infot saada privaatsõnum
hexmex
HV kasutaja

liitunud: 13.06.2006




sõnum 03.05.2010 19:23:39 vasta tsitaadiga

Mina, kui puht võhik C keele alal, lõin google lahti ja tippisin sinna "C check numeric", võtsin esimese tulemuse ja leidsin sealt et kasuta taolist funktsiooni
int is_numeric(const char *p) {
     if (*p) {
          char c;
          while ((c=*p++)) {
                if (!isdigit(c)) return 0;
          }
          return 1;
      }
      return 0;
}

_________________
Olgem sõbralikud!
Kommentaarid: 5 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 2
tagasi üles
vaata kasutaja infot saada privaatsõnum
mesilased
HV kasutaja

liitunud: 31.07.2004




sõnum 03.05.2010 23:15:38 vasta tsitaadiga

Jep, kasuta isdigit() funtsiooni stdio headeris. Aga see kontrollib ainult ühte chari niiet terve stringi jaoks on vaja loop kirjutada.

PS. Kui see on kooliülesanne siis tavaliselt võetakse "goto" statemendi eest hinnet alla. Lisa sinna selle asemel näiteks while(true) koos continue ja break-iga icon_smile.gif
Kommentaarid: 9 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 8
tagasi üles
vaata kasutaja infot saada privaatsõnum
Deadlock
Kreisi kasutaja

liitunud: 16.07.2004




sõnum 04.05.2010 00:43:54 vasta tsitaadiga

Jah, goto on lihtsalt halb harjumus, seda ei tohiks kasutada, muidu saad omale spagetikoodi.

numbri testimine peaks lihtne olema isegi siis, kui vastavat funktsiooni juba leiutatud poleks. Numbri char-koodid on 48st 57ni, vaatad lihtsalt, kas iga char asub seal vahemikus.

_________________
"Believe you can, believe you can't; either way, you're right." - Henry Ford
Kommentaarid: 8 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 8
tagasi üles
vaata kasutaja infot saada privaatsõnum
Lennnukas
HV kasutaja
Lennnukas

liitunud: 24.10.2004




sõnum 05.05.2010 16:01:02 vasta tsitaadiga

Aitäh,
Sain tööle!
Kommentaarid: 14 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 14
tagasi üles
vaata kasutaja infot saada privaatsõnum
Aruta
HV vaatleja

liitunud: 29.10.2009




sõnum 09.05.2010 16:38:25 vasta tsitaadiga

Kui transleerida seda hexmex näidet siis
masinkoodis on seal näiteks 3 jmp käsku mis on goto sisuliseks analoogiks.
Tulemus sõltub kõvasti sellest millist translaatorit kasutada.
Kuna see EI PAISTA C tekstist välja, siis kõik on rahul.

Natuke mõeldes oleks neid tühikäske võimalik vältida.
Kui kirjutada ASMmis või parandada translaatori tehtud ASMkoodi.
Selles näites on vahe tähtsusetu aga pikkade stringide otsingul võib
ajaline võit olla vägagi suur.
tagasi üles
vaata kasutaja infot saada privaatsõnum
THNS
HV vaatleja

liitunud: 12.05.2010




sõnum 12.05.2010 14:54:43 vasta tsitaadiga

Kas asi võib ka mingis muus arvu süsteemis olla peale kümnend?
tagasi üles
vaata kasutaja infot saada privaatsõnum
HacaX
HV Guru
HacaX

liitunud: 22.01.2004




sõnum 20.05.2010 18:24:02 vasta tsitaadiga

Aruta kirjutas:
Kui transleerida seda hexmex näidet siis
masinkoodis on seal näiteks 3 jmp käsku mis on goto sisuliseks analoogiks.
Tulemus sõltub kõvasti sellest millist translaatorit kasutada.
Kuna see EI PAISTA C tekstist välja, siis kõik on rahul. [...]
Kuna masinkoodi tasemel pole miski muu kui JMPid võimalikud siis polegi võimalik kellelgi rahulolematu olla. Kõrgkeeles on aga muud konstruktsioonid võimalikud icon_wink.gif
Tänapäeva kompilaatorid peaksid optimeerimises suht asjalikud olema ja ka riistvara kiirus on nüüdseks selline et, ma vähemalt arvan nii, panustamine koodi ülevaatlikkusele mõttekam on kui koodilõikude assemblerissekonvertimine.

_________________
IMO & GPLed
Kommentaarid: 24 loe/lisa Kasutajad arvavad:  :: 1 :: 0 :: 22
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  Kuidas tuvastada, et tegu pole numbriga?
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.