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

Pomoc oko C koda

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

[ Pregleda: 2939 | Odgovora: 13 ] > FB > Twit

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 - pre 233 meseci
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();
}

 
Odgovor na temu

Reljam
Relja Markovic
San Francisco

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



+18 Profil

icon Re: Pomoc oko C koda26.01.2005. u 06:11 - pre 233 meseci
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 );
}
 
Odgovor na temu

zvrba
The Lord of Chaos

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



Profil

icon Re: Pomoc oko C koda26.01.2005. u 08:59 - pre 233 meseci
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;
  }
}
 
Odgovor na temu

3MAJ86
Marko Radić
Business Development Manager, Beauty
Industry
München

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

Sajt: marko-radic.blogspot.com


+137 Profil

icon Re: Pomoc oko C koda26.01.2005. u 10:18 - pre 233 meseci
@ 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
when there is a why there is no how
 
Odgovor na temu

[Unknown]

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



Profil

icon Re: Pomoc oko C koda26.01.2005. u 18:14 - pre 233 meseci
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 [email protected] da probam...
 
Odgovor na temu

obranko
severna amerika

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



+1 Profil

icon Re: Pomoc oko C koda27.01.2005. u 00:45 - pre 233 meseci
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).
 
Odgovor na temu

Reljam
Relja Markovic
San Francisco

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



+18 Profil

icon Re: Pomoc oko C koda27.01.2005. u 01:09 - pre 233 meseci
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.
 
Odgovor na temu

vladab
Vladimir Bašanović
Beograd

Član broj: 9512
Poruke: 498
195.252.106.*



Profil

icon Re: Pomoc oko C koda27.01.2005. u 07:01 - pre 233 meseci
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++.
 
Odgovor na temu

yuColoniel
Ivan Stajic
BG

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



Profil

icon Re: Pomoc oko C koda27.01.2005. u 07:34 - pre 233 meseci
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.
 
Odgovor na temu

3MAJ86
Marko Radić
Business Development Manager, Beauty
Industry
München

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

Sajt: marko-radic.blogspot.com


+137 Profil

icon Re: Pomoc oko C koda27.01.2005. u 08:49 - pre 233 meseci
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?
when there is a why there is no how
 
Odgovor na temu

vladab
Vladimir Bašanović
Beograd

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



Profil

icon Re: Pomoc oko C koda27.01.2005. u 09:30 - pre 233 meseci
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
 
Odgovor na temu

Riste Pejov
Team Leader/Senior Software Developer @
Ein-Sof ltd Skopje
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 - pre 233 meseci
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.
 
Odgovor na temu

vladab
Vladimir Bašanović
Beograd

Član broj: 9512
Poruke: 498
195.252.106.*



Profil

icon Re: Pomoc oko C koda30.01.2005. u 11:47 - pre 233 meseci
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)
 
Odgovor na temu

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

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

Sajt: dejan.lekic.org


+2 Profil

icon Re: Pomoc oko C koda30.01.2005. u 16:36 - pre 233 meseci
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
 
Odgovor na temu

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

[ Pregleda: 2939 | Odgovora: 13 ] > FB > Twit

Postavi temu Odgovori

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