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

Pomoc oko C koda

[es] :: C programiranje :: Pomoc oko C koda

[ Pregleda: 1399 | Odgovora: 13 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

[Unknown]

Član broj: 26564
Poruke: 50
*.cmu.carnet.hr.



Profil

icon Pomoc oko C koda26.01.2005. u 02:55

Ja sam apsolutni pocetnik sto se tice C jezika, i malo se igram s njime pa me bih vas molio ako imate malo vremena da mi pomognete...

Sto napraviti u ovom kodu da kad me pita da unesem prvi broj, a ja unesem slova, da izbaci neki tekst s upozorenjem da se mogu samo brojevi unosit... ne obazirite se na ove passworde i te gluposti, to malo vjezbam if :-)

...kao sto sam vec reko totalni sam pocetnik pa imajte strpljenja ako vas bas odmah ne skuzim...

Puno hvala!

Code:

#include <stdio.h>
int main()
{
   int password,prvi,drugi,umnozak;
   printf("Unesite lozinku da biste usli dalje u program\n");
   printf("\nLozinka: ");
   scanf("%d",&password);
       if ( password == 2005 )
 {    
   printf("\nUnesite prvi broj: ");
   scanf("%d",&prvi);
   printf("\nUnesite drugi broj: " );
   scanf("%d",&drugi);
   umnozak=prvi*drugi;
   printf("\nUmnozak ta dva broja je %d",umnozak);
   } else {    
   printf("\nLozinka netocna!");
}        
getch();
}

26.01.2005. u 02:55 

Reljam
Relja Markovic
Seattle, WA

Član broj: 531
Poruke: 1739
*.client.comcast.net.

Sajt: www.linkedin.com/in/relja..


Profil

icon Re: Pomoc oko C koda26.01.2005. u 06:11
Nazalost, naleteo si na oblast u kojoj je C standardna biblioteka tanka - ne postoji lak nacin da se uradi to sto ti hoces. Ono sto bi morao da uradis je da svaki broj tretiras kao string, i da onda rucno pogledas da li je unet string u stvari broj. A ako nije, onda izbacis poruku o gresci - sto je nazalost netrivijalan kod.

C je star jezik, a C standardna biblioteka je vrlo zastarela. To ne znaci da ne vredi uciti C, ali treba da znas da ce neke stvari koje treba da budu lake biti mnogo teze nego sto ima smisla. Samo nastavi, i pazi se ovakvih gluposti.

A kad smo vec kod toga, to sto si trazio izgleda ovako nekako (varijanta za pozitivne brojeve. Citaocu se ostavlja kao vebza da izvede kod koji podrzava i negativne brojeve):

Code:

#include <conio.h>
#include <stdio.h>

int ReadInt()
{
    char buffer[20];
    int i;
    int uspeh = 0;

    while( !uspeh )
    {
        scanf("%s", buffer);  /* Zanemarimo neverovatnu rupu u ovom redu :) */

        uspeh = 1;
        for ( i = 0; i < sizeof(buffer) && buffer[i] ; i++ )
        {
            if ( !isdigit( buffer[i] ) )
            {
                uspeh = 0;
                puts("Greska! Unet string nije broj!");
                break;
            }
        }
    }

    return atoi( buffer );
}
26.01.2005. u 06:11 

zvrba
The Lord of Chaos

Član broj: 31716
Poruke: 105
*.fina.hr.



Profil

icon Re: Pomoc oko C koda26.01.2005. u 08:59
Citat:
Reljam
C je star jezik, a C standardna biblioteka je vrlo zastarela. To ne znaci da ne vredi uciti C, ali treba da znas da ce neke stvari koje treba da budu lake biti mnogo teze nego sto ima smisla. Samo nastavi, i pazi se ovakvih gluposti.


Nije manjkav nego ga treba dobro upoznati i znat upotrijebit :) Zakomplicirao si ga bespotrebno. Dakle:


Code:

long enter_number(void)
{
  char buf[256], *eptr;
  long l;

  if(!fgets(buf, sizeof(buf), stdin)) {
    /* korisnik je odustao pa se desio EOF.. handlaj kako hoces */
  } else {
    l = strtol(buf, &eptr, 10);
    if(*eptr) {
      /*
        korisnik je unio nesto sto nije poz/neg broj u bazi 10 ili string sadrzi
        jos neke znakove iza broja
      */
    }
    return l;
  }
}
26.01.2005. u 08:59 

3MAJ86
Marko Radić
Software Developer, SBS
Filmski Grad

Član broj: 46087
Poruke: 117
*.drenik.net.



Profil

icon Re: Pomoc oko C koda26.01.2005. u 10:18
@ Unknown:

slichnu stvar sam i ja sam sebi postavljao pre par meseci kada sam pochinjao da uchim c. tada sam se dosetio i pocheo da pravim svoju biblioteku funkcija (koja trenutno sadrzhi cele dve funkcije :) ) a jedna od njih je "chkint" kako sam je krstio. ova funkcija proverava da li je uneti string integer broj. i proverava da li je na svakom mestu stringa broj (znachi ako korisnik unese 123456 on tje da proveri svaki od ovih da li je broj tako da automatski izbacuje sve tipa: h123456 ili 123h456 ili 123456h gde je h == neko slovo ili neki drugi znak) a u programu mozhesh da je upotrebish ovako recimo

Code:

.....
while (1) {
        gets(ulaz);
        if (!(chkint(ulaz))) {
                fprintf(stderr, "Greshka...");
                continue;
        }
        n = atoi(ulaz);
        break;
}


uz malo izmene ovu funkciju mozhesh prepraviti, a ako hotjesh poslatju ti na mail moju malu biblioteku gde se nalazi ova funkcija? mislim da je strashno korisna - meni je mnogo puta ushtedela brdo truda i piskaranja
...seasons change, and so can I...
26.01.2005. u 10:18 

[Unknown]

Član broj: 26564
Poruke: 50
*.cmu.carnet.hr.



Profil

icon Re: Pomoc oko C koda26.01.2005. u 18:14
Hvala vam svima na odgovrima. Ipak jos moram dosta uciti da bi razumio sto sve sto ste vi napisali, bas ne razumijem sve funkcije... kad naucim malo bolje onda cu probat ovo sto vi (Reljam i zvrba) kazete


@3MAJ86

ovo tvoje mi se cini zanimljivim, pa ajde molim te posalji na gogy.gogy@gmail.com da probam...
26.01.2005. u 18:14 

obranko
severna amerika

Član broj: 36599
Poruke: 149
*.cpe.net.cable.rogers.com.



Profil

icon Re: Pomoc oko C koda27.01.2005. u 00:45
pozdrav,

mnogo ste zakomplikovali oko prostih stvari.
evo kratkog citata iz opisa scanf funkcije.
"Return Value.
The number of items succesfully read. This count doesn't include any ignored fields with asterisks (*).
If EOF is returned an error has occurred before the first assignation could be done."

prema tome. dovoljno je da proveris sta ti scanf funkicja vraca. ako vrati 1, to je znak da je korisnik uneo ono sto se trazilo (jedan integer).
27.01.2005. u 00:45 

Reljam
Relja Markovic
Seattle, WA

Član broj: 531
Poruke: 1739
*.microsoft.com.

Sajt: www.linkedin.com/in/relja..


Profil

icon Re: Pomoc oko C koda27.01.2005. u 01:09
Nismo ga mi toliko zakomplikovali koliko scanf ne radi to sto ti hoces. Naime, ako ovako scanf("%d", &i); necemu otkucas 1peramikalazaHahaha, vrednost od i ce biti 1, a on ce ti vratiti da je isprocesirao jedno polje. To je mozda tako, ali to ocigledno nije ono sto bi covek hteo, a to je poruka o gresci. Dakle, scanf ne resava problem.

I dalje stojim pored tvrdnje da je sve ovo komplikovanije nego sto treba da bude.
27.01.2005. u 01:09 

vladab
Vladimir Bašanović
Beograd

Član broj: 9512
Poruke: 496
195.252.106.*



Profil

icon Re: Pomoc oko C koda27.01.2005. u 07:01
Slazem se sa Reljam. Preporucio bih [Unknown]-u da nauci C, ali da se ne zadrzava na njemu previse, vec da kad savlada osnove C-a predje na C++.
Seven deadly sins
Seven ways to win
Seven holy paths to hell
And your trip begins

Seven downward slopes
Seven bloodied hopes
Seven are your burning fires,
Seven your desires...
27.01.2005. u 07:01 

yuColoniel
Ivan Stajic
BG

Član broj: 15979
Poruke: 13
*.ptt.yu.



Profil

icon Re: Pomoc oko C koda27.01.2005. u 07:34
Tu postoji nekoliko lepsih resenja
Na primer uneses string i u petlji prodjes kroz string i pitas sa isdigit(s) da li je u pitanju broj (za sve znake sem zadnjeg koji je /0) (funkcija se nalazi u standardnom zaglavlju <ctype.h>) pa ako su sve brojevi iskoristis funkciju atoi(s) za int atof(s) za double i atol(s) za long (ove funkcije se nalaze u standardnom zaglavlju <stdlib.h> i pretvaraju string u navedene tipove) za realne brojeve moras da proveris da li postoji i tacka i nju nebi smeo da diras i to bi bilo ono
if (alfa && '.') continue
else break;
Ovo bi trebalo da radi bez problema .I nedaj se obeshrabriti u ucenju C-a jer samo covek koji se ozbiljno ne bavi programiranjem moze ti preporuciti da samo malo prodjes c pa predjes na c++ jer veruj mi ima rutina koje postoje u c-u i predstavljaju mnogoelegantnije resenje za mnoge probleme u c++-u.Da c nevalja nebi svaki prevodioc c++-a posedovao sve standardne biblioteke c-a.
27.01.2005. u 07:34 

3MAJ86
Marko Radić
Software Developer, SBS
Filmski Grad

Član broj: 46087
Poruke: 117
*.drenik.net.



Profil

icon Re: Pomoc oko C koda27.01.2005. u 08:49
bash tako. poslao sam mu na mail moje zaglavlje. ona moja funkcija radi upravo to shto si napisao.

ushtedi dosta truda kada imash tako neshto zapisano jednom za svagda, jer zaista je chest sluchaj greshke prilikom unosa brojeva.
jedino shto je mana ove moje funkcije je shto radi samo za int. (ali meni nije trebalo za sada za ostale tipove, ali i to se da lako napraviti)

tezhnja ka jednostavnosti zar ne?
...seasons change, and so can I...
27.01.2005. u 08:49 

vladab
Vladimir Bašanović
Beograd

Član broj: 9512
Poruke: 496
*.yubc.net.



Profil

icon Re: Pomoc oko C koda27.01.2005. u 09:30
Citat:
yuColoniel:I nedaj se obeshrabriti u ucenju C-a jer samo covek koji se ozbiljno ne bavi programiranjem moze ti preporuciti da samo malo prodjes c pa predjes na c++ jer veruj mi ima rutina koje postoje u c-u i predstavljaju mnogoelegantnije resenje za mnoge probleme u c++-u.Da c nevalja nebi svaki prevodioc c++-a posedovao sve standardne biblioteke c-a.

U pravu si kada kazes da se ozbiljno ne bavim programiranjem. Rekao sam da predje na C++ iz prostog razloga sto je C++ noviji (da li je bolji necemo da raspravljamo ), a opet podrzava c kod, pa moze koristiti prednosti oba. I nisam rekao da c ne valja, nego sam se slozio sa Reljam da ima zastarele biblioteke. Postoji jos jedna stvar, koju ce mi mnogi osporiti: Kada dobro naucis C, onda ne mozes bas lako da se oslobodis nekih stvari koje u C++-u mogu da se odrade na elegantniji nacin, jer ipak je c++ objektno orijentisan, a c nije... E, sad, ako mislis da ti C bude glavni jezik u kome ces da radis i neces da radis OOP, onda si 100% u pravu.
Pozdrav
Seven deadly sins
Seven ways to win
Seven holy paths to hell
And your trip begins

Seven downward slopes
Seven bloodied hopes
Seven are your burning fires,
Seven your desires...
27.01.2005. u 09:30 

Riste Pejov
Team Leader/Senior Software Developer @ Ein-Sof ltd S..
Skopje, Macedonia

Član broj: 128
Poruke: 571
217.16.77.*

Jabber: richie@bagra.net.mk
ICQ: 154236769
Sajt: riste.softver.org.mk


Profil

icon Re: Pomoc oko C koda28.01.2005. u 10:04
Citat:
vladab: Postoji jos jedna stvar, koju ce mi mnogi osporiti: Kada dobro naucis C, onda ne mozes bas lako da se oslobodis nekih stvari koje u C++-u mogu da se odrade na elegantniji nacin, jer ipak je c++ objektno orijentisan, a c nije... :) E, sad, ako mislis da ti C bude glavni jezik u kome ces da radis i neces da radis OOP, onda si 100% u pravu. :)
Pozdrav


Evo da ja budem prvi koji ce ti to osporiti ... Zasto se neko mora osloniti na standardne C biblioteke? Evo recimo Gnomov glib implementira puno standardnih struktura, liste, stringove i sta li jos ne, i Gnome arhitektura _je_ objektno orientisana (prema nekom jest, prema nekom nije), tako da Gnome ti je prvi dokaz da se u C moze programirati objektno. E sada, objektno programiranje u C i u C++ je kao bog i sesirdzija, ali nije nemoguce. Kao sto u C++ mozes pisati ne-oop kod, tako u C mozes pisati kvazi oop kod. GLib ti moze pomoci da u C dobijes jako produktivnu razvojnu okolinu, koja mozda nije ravna C++/STL/Boost, ali je daleko produktivnija nego standardne C biblioteke.
People who think they know everything tend to irritate those of us who do.
28.01.2005. u 10:04 

vladab
Vladimir Bašanović
Beograd

Član broj: 9512
Poruke: 496
195.252.106.*



Profil

icon Re: Pomoc oko C koda30.01.2005. u 11:47
Naravno da mozes da pises oo kod i u c-u. Koliko ja znam, postoji i objektni C, ili neka biblioteka koja implementira klase i sl. Razlika izmedju OOP-a i struktiriranog programiranja nije u jeziku, vec u filozofiji programiranja. Poenta je u tome da je C++ pravljen da DIREKTNO podrzava OOP, a C nije, a ti uvek mozes da koristis filozofiju koja je tebi bliza u oba ova jezika, samo je pitanje gde ces se vise namuciti. :O)
Seven deadly sins
Seven ways to win
Seven holy paths to hell
And your trip begins

Seven downward slopes
Seven bloodied hopes
Seven are your burning fires,
Seven your desires...
30.01.2005. u 11:47 

leka
Dejan Lekić
senior software engineer, 3Developers Ltd.
London, UK

Član broj: 234
Poruke: 2530
..31.216.81.gus.vf.siwnet.net.

Sajt: dejan.lekic.org


Profil

icon Re: Pomoc oko C koda30.01.2005. u 16:36
Bez uvrede, ali se meni Reljin kod jako dopada - obozavam citak kod... - Taj kod se cita+razume onako, "u letu" sto bi se reklo. :)
Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
30.01.2005. u 16:36 

[es] :: C programiranje :: Pomoc oko C koda

[ Pregleda: 1399 | Odgovora: 13 ]

Postavi temu Odgovori

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