» »

[C++] tip spremenljivke

[C++] tip spremenljivke

dejans ::

npr. da mora uporabnik vnašati v konzoli cela števila (int) in sedaj bi rad ugotovil če je uporabnik vnesel kakšen znak oz. črko in ga opozoril.

poskušal sem že vse mogoče kombinacije s sizeof() in castat v char (oz. da bi kar char vnesel pa pol gledal cifre) pa mi nekam ni ratal...:\
[?]

Gundolf ::

Najprej povej kako beres stevila. Ker metod je namrec ogromno in pri vsaki se drugace pogleda ali je prebrano res stevilo ali morda kaj drugega.

dejans ::

Aja z cin>>... (iosteam.h)
[?]

SasoS ::

isdigit makro.

Exilian ::

c++ hhmmm.. nevem amapk v c gre takole.. bereš kot char nato char spremeniš v byte ( "unsigned char b = (unsigned char)c;" ) in nato gledaš v ascii tabelo in primerjaš byte z unimi ciframi tm...

torej


//c koda
int main (int argc, char **argv)
{
char c = '3';
unsigned char b = (unsigned char)c;

if ((b > 47) && (b < 58))
printf ("JE CIFRA!!\n");

return 0;
}


seveda lahko to tudi spremenis v makro :)
umm.. zakaj mi pre zbriše presledke v kodi?
It's not the opensource i hate.
It's the fanclub I cannot stand.

Zgodovina sprememb…

  • spremenilo: Exilian ()

Exilian ::

update: tole boš v makro bolj težko spravu :)
It's not the opensource i hate.
It's the fanclub I cannot stand.

BigWhale ::

Exy,

isdigit() se nahaja v ctype.h ;)

Pa tudi tistega zgoraj ni tak problem spravit v makro... ;>

Exilian ::

Spoštovani BW... narobe!

tisto ni macro.. ako ne verjamete se lahko spustite z "vim /usr/include/ctype.h" v raziskovanje.

kaj pa je? samo redefinicija iz complicated v less-complicated

2. Kako bi vi BW spravili funkcijo, ki vrača boolean v macro? :).. a ste vi BW ziher da znate programirati?
It's not the opensource i hate.
It's the fanclub I cannot stand.

Zgodovina sprememb…

  • spremenilo: Exilian ()

Gundolf ::

Ce reces:
int cifra;
cin >> cifra;
in na vhodu ni cifra ampak besedilo bo verjetno cin vrnil kaksen error, mar ne? Malo poglej v help za istream. Verjetno bo ena izmed naslednjih funkcij v takem primeru true:
cin.fail()
cin.bad()
Ko zaznas error in to poves uporabniku pa klices se
cin.clear();
ki zbrise vse error bite v cin in ti tako omogoci da beres dalje.

Aja, se nekaj. Ne navadi se na nestandardne knjiznice iostream.h in podobne. Uporabi iostream. Se pravi namesto #include "iostream.h" napisi #include "iostream". In seveda uporabi trikotne oklepaje namesto ", jaz sem zdajle prelen da bi pisal st.koda tag, zato sem napisal tako. Ko si to naredil, dodaj se using namespace std; in bos mel na voljo vse iste funkcije kot poprej, le da bo tokrat dejansko po standardu.

Zgodovina sprememb…

  • spremenil: Gundolf ()

dejans ::

Gundolf: nobenega errorja ne vrže ven ampak kr lepo vse požre (probi), c++ pač ni pascal ...

aja pa isdigit čist kul dela :D
[?]

Zgodovina sprememb…

  • spremenil: dejans ()

BigWhale ::

Exy,

Kaj te pa muci?

isdigit() ni makro, nisem nikjer trdil, da je, samo povedal sem kje se nahaja. Kako je pa izveden, pa ne vem. Me niti ne zanima. Hotel sem ti samo povedati, kjer se nahaja isdigit(), ki to pocne namesto tebe... Preverja kaj je stevilka in kaj ni.

Tisto kodo, ki si jo pa ti zapisal se pa da prav preprosto spremeniti v makro. Makro lahko vrne kar hoces...

#define IS_DIG(A) ( ((unsigned char)A) > 47 && ((unsigned char)A) < 58  ? (1) : (0))


Nevem, kdo zdaj zna in kdo ne zna programirati... Od kje ti ideja, da macro ne more vrniti boolean vrednosti. Kar ces lahko vrne.

Zgodovina sprememb…

  • spremenil: BigWhale ()

BigWhale ::

Na, se cel program...

#include <stdlib.h>
#include <stdio.h>

#define IS_DIG(A) ( ((unsigned char)A) > 47 && ((unsigned char)A) < 58 ? (1) : (0))
int main()
{
  printf("9 is digit: %d\n", IS_DIG('9'));
  printf("a is digit: %d\n", IS_DIG('a'));
}

BigWhale ::

Makro v bistvu sam po sebi ne vraca nicesar....

Gundolf ::

@dejans: Nisem mislil na error, ki bi ti crashov program. Pac pa, kot sem napisal - error, ki ga je treba preveriti z eno od funkcij (recimo cin.fail()).

In res, se sreca da C++ ni Pascal :D

Zgodovina sprememb…

  • spremenil: Gundolf ()


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[C++] problem z binarnimi datotekami

Oddelek: Programiranje
9955 (820) mallard
»

C++ problem: težava z hirerarhijo razreda

Oddelek: Programiranje
141237 (1077) fiction
»

vprasanje c++

Oddelek: Programiranje
422475 (2474) Volk|
»

[C#] unmanaged->managed code

Oddelek: Programiranje
112145 (2020) Zzzzzzz
»

c++ datoteke

Oddelek: Programiranje
464061 (3550) Vesoljc

Več podobnih tem