Program u turbo C
Prikazujem rezultate 1 do 24 od 24

Tema: Program u turbo C

  1. #1
    Početnik
    Učlanjen
    18.02.2006.
    Lokacija
    Rataje City
    Poruke
    43
    Reputaciona moć
    0

    Lightbulb Program u turbo C

    U cemu je greska kad se unece cena manja od 100
    a program izgleda ovako:
    # include <stdio.h>
    main ()
    {
    int a,b,c,d,e,f,g;
    printf("Dobrodosli u program za izracunavanje cene artika\n");
    printf("Unesite nabavnu cenu artikla\n");
    scanf("%if",&a);
    printf("Unesite poresku stopu 8 ili 18 posto\n");
    scanf("%if",&b);
    printf("Unesite marzu\n");
    scanf("%if",&c);
    d=(a/100)*b;
    e=a+d;
    f=(e/100)*c;
    g=e+f;
    printf("Cena artikla je:%i\n",g);
    getch();
    }



  2. #2
    Početnik
    Učlanjen
    11.11.2004.
    Pol
    muški
    Lokacija
    Novi Sad
    Poruke
    14
    Reputaciona moć
    0

    Podrazumevano Re: Program u turbo C

    probaj da u scanf("%if",&a); umesto ovog if stavis d i radice sigurno
    to moras da uradis i prilikom ispisa rezultata u printf

  3. #3
    Ističe se juznivetar (avatar)
    Učlanjen
    12.02.2005.
    Pol
    muški
    Lokacija
    -
    Poruke
    2.041
    Reputaciona moć
    67

    Podrazumevano Re: Program u turbo C

    Citat Original postavio Predrag_
    U cemu je greska kad se unece cena manja od 100
    a program izgleda ovako:
    # include <stdio.h>
    main ()
    {
    int a,b,c,d,e,f,g;
    printf("Dobrodosli u program za izracunavanje cene artika\n");
    printf("Unesite nabavnu cenu artikla\n");
    scanf("%if",&a);
    printf("Unesite poresku stopu 8 ili 18 posto\n");
    scanf("%if",&b);
    printf("Unesite marzu\n");
    scanf("%if",&c);
    d=(a/100)*b;
    e=a+d;
    f=(e/100)*c;
    g=e+f;
    printf("Cena artikla je:%i\n",g);
    getch();
    }
    f=(e/100)*c -> Ako si sve deklarisao kao integere INT, u ovoj formuli dakle svaki_manji_broj_od_100/100 = 0 (nula), dalje ta dobijena 0*c = 0, tako da dobijas rezultat za f = 0, ako je a minji od 100, ako je 100 <= a < 200, tada je f = c itd itd.
    Da bi ovo izbjegao deklarisi sve sa float (ngdje si deklarisao int a, b, c, d, dakle promijeni int u float) i gdje si god stavljao if stavi samo f.
    pozdarv

  4. #4
    Početnik
    Učlanjen
    25.05.2006.
    Lokacija
    Nigde
    Poruke
    34
    Reputaciona moć
    0

    Podrazumevano Re: Program u turbo C

    Ja mislim da treba ovako
    #include<stdio.h>
    #include<math.h>
    void main ()
    {
    float a,b,c,d,e,f,g;
    printf("Dobrodosli u program za izracunavanje cene artika\n");
    printf("Unesite nabavnu cenu artikla\n");
    scanf("%f",&a);
    printf("Unesite poresku stopu 8 ili 18 posto\n");
    scanf("%f",&b);
    printf("Unesite marzu\n");
    scanf("%f",&c);
    d=(a/100)*b;
    e=a+d;
    f=(e/100)*c;
    g=e+f;
    printf("Cena artikla je:%f\n",g);
    }

  5. #5
    Ističe se juznivetar (avatar)
    Učlanjen
    12.02.2005.
    Pol
    muški
    Lokacija
    -
    Poruke
    2.041
    Reputaciona moć
    67

    Podrazumevano Re: Program u turbo C

    Citat Original postavio neznalica u C++
    Ja mislim da treba ovako
    #include<stdio.h>
    #include<math.h>
    void main ()
    {
    float a,b,c,d,e,f,g;
    printf("Dobrodosli u program za izracunavanje cene artika\n");
    printf("Unesite nabavnu cenu artikla\n");
    scanf("%f",&a);
    printf("Unesite poresku stopu 8 ili 18 posto\n");
    scanf("%f",&b);
    printf("Unesite marzu\n");
    scanf("%f",&c);
    d=(a/100)*b;
    e=a+d;
    f=(e/100)*c;
    g=e+f;
    printf("Cena artikla je:%f\n",g);
    }
    Vidi, vidi uspjeo je da me razumije ovaj put i ispravi ovaj zadatak.
    Da tako treba ... Osim sto ti math.h nije potreban.

  6. #6
    Početnik
    Učlanjen
    25.05.2006.
    Lokacija
    Nigde
    Poruke
    34
    Reputaciona moć
    0

    Podrazumevano Re: Program u turbo C

    Ja mislim da ce ovo jos vise da ti se svidja

    #include<stdio.h>
    #include<math.h>
    #include<time.h>
    void prog();
    main()
    {
    prog();
    return 0;
    }
    void prog()
    {
    time_t r;
    struct tm * tinfo;
    time ( &r );
    tinfo = localtime ( &r );
    printf ( "\t\t%s", asctime (tinfo) );
    int l;
    float a,b,c,d,e,f,g;
    printf("\n\nDobrodosli u program za izracunavanje cene artika\n");
    printf("Unesite nabavnu cenu artikla\n");
    scanf("%f",&a);
    printf("Unesite poresku stopu 8 ili 18 posto\n");
    scanf("%f",&b);
    printf("Unesite marzu\n");
    scanf("%f",&c);
    d=(a/100)*b;
    e=a+d;
    f=(e/100)*c;
    g=e+f;
    printf("Cena artikla je:%f\n",g);
    printf("Novo racunanje 1= Da 2=Ne\n");scanf("%d",&l);
    switch (l) {case 1: if(l==1) prog();
    }
    }
    Zaglavlje <math.h>je biblioteka koja radi sa matematickim operacijama i nije na odmet da se stavi tj. ne skodi.
    Kod stampe rezultata u printf-u ako hoces rezultat sa manje decimala jednostavno oznaci brojem,npr printf("Cena artikla je:%0.1f\n",g); broj 0.1 -dodeljuje rezultatu 1 decimalu,a ako stavis 0.2 bice sa dve decimale i tako dalje.Ako ti treba jos nesto slobodno pitaj.

  7. #7
    Ističe se juznivetar (avatar)
    Učlanjen
    12.02.2005.
    Pol
    muški
    Lokacija
    -
    Poruke
    2.041
    Reputaciona moć
    67

    Podrazumevano Re: Program u turbo C

    @neznalice u c++ ako i ovo nije copy/paste onda ipak nesto znas ...
    Samo jedna opaska:
    Kod:
    switch (l) {case 1: if(l==1) prog();
    Cemu ovo if(l==1) ?? Njega slobodno brisi .

  8. #8
    Početnik
    Učlanjen
    25.05.2006.
    Lokacija
    Nigde
    Poruke
    34
    Reputaciona moć
    0

    Podrazumevano Re: Program u turbo C

    --------------------------------------------------------------------------------

    [QUOTE]@neznalice u c++ ako i ovo nije copy/paste onda ipak nesto znas ...
    QUOTE]
    Ne nije to copy/paste.
    Kod:
    switch (l) {case 1: if(l==1) prog();
    Cemu ovo if(l==1) ?? Njega slobodno brisi .
    Znas li sta ce da se desi?.Posto je to uslov if(l==1),ako se unese broj "1" (ulaz je u scanf("%d",&l) program se vraca na poceta, a ako uneses neki drugi broj ili neko slovo(nebitno), program se zavrsava.Ukoliko hoces da ti uslov umesto "1" bude slovo uneto sa tastature moras oznaciti ovako
    if(l== ' neko slovo ' ) , bas oznaceni sa ' ' ,samo moras paziti, razlikuju se mala i velika slova.
    Iskaz switch kako da kazem je viseznacajna odluka koja testira da li jedan iskaz odgovara nekoj od konstantnih vrednosti,i u zavisnos od toga se razgranjava.
    switch (iskaz){
    case 1;//konst.sa tastature i iskaz ukoliko je to slovo,rec, kod nas jedan slucaj if(l==1) i onda se vraca na pocetak (odmah ispod main()).
    case 2;
    case 3;
    case 4;//mozes da imas koliko hoces slucajeva,ali ako imas vise od dva slucajeva (case), na kraju moras da ukucas:
    default ;//sluzi za izrazavanje vise slucaja ili ako nijedan slucaj nije ispunjen program se zatvara,ako me razumes sta ocu da kazem.Prema tome ako obrises if(l==1) neces imati uslov i program ce se zavrsiti .

  9. #9
    Početnik
    Učlanjen
    25.05.2006.
    Lokacija
    Nigde
    Poruke
    34
    Reputaciona moć
    0

    Podrazumevano Re: Program u turbo C

    Zaboravih da kazem, kod nas je uslov if(l==1) a iskaz prog();,znaci posle uslova ide iskaz,ukoliko je uslov ispunjen trazi se iskaz,ukoliko nije program se zavrsava ili trazi sledeci uslov uloliko ga ima.

  10. #10
    Ističe se juznivetar (avatar)
    Učlanjen
    12.02.2005.
    Pol
    muški
    Lokacija
    -
    Poruke
    2.041
    Reputaciona moć
    67

    Podrazumevano Re: Program u turbo C

    [QUOTE=neznalica u C++]--------------------------------------------------------------------------------

    @neznalice u c++ ako i ovo nije copy/paste onda ipak nesto znas ...
    QUOTE]
    Ne nije to copy/paste.

    Znas li sta ce da se desi?.Posto je to uslov if(l==1),ako se unese broj "1" (ulaz je u scanf("%d",&l) program se vraca na poceta, a ako uneses neki drugi broj ili neko slovo(nebitno), program se zavrsava.Ukoliko hoces da ti uslov umesto "1" bude slovo uneto sa tastature moras oznaciti ovako
    if(l== ' neko slovo ' ) , bas oznaceni sa ' ' ,samo moras paziti, razlikuju se mala i velika slova.
    Iskaz switch kako da kazem je viseznacajna odluka koja testira da li jedan iskaz odgovara nekoj od konstantnih vrednosti,i u zavisnos od toga se razgranjava.
    switch (iskaz){
    case 1;//konst.sa tastature i iskaz ukoliko je to slovo,rec, kod nas jedan slucaj if(l==1) i onda se vraca na pocetak (odmah ispod main()).
    case 2;
    case 3;
    case 4;//mozes da imas koliko hoces slucajeva,ali ako imas vise od dva slucajeva (case), na kraju moras da ukucas:
    default ;//sluzi za izrazavanje vise slucaja ili ako nijedan slucaj nije ispunjen program se zatvara,ako me razumes sta ocu da kazem.Prema tome ako obrises if(l==1) neces imati uslov i program ce se zavrsiti .
    Ne, nisam te pitao zato sto neznam, vec zato sto ti nije potrebno. Opet malo ne razumijes neke stvari. Kada si kreirao switch petlju sa uslovom neke varijable u ovom slucaju je to vrijednost l, svaka vrijednost pored case-a se poredi sa vrijednosti koja je zadata kao uslov u switch-u. Na sledecem primjeru ces najbolje shvatiti:
    Kod:
    int broj;
    switch(broj)
    {
    case 1:
    .......................
    break;
    case 2:
    ...........
    break;
    default:
    ...............
    break;
    }
    Dakle, ako je broj == 1, automatski se izvrsava iskaz iz case 1, ako je broj 2, automatski se izvrsava iskaz iz case 2, a ako broj l nije definisan ni u jednom case-u, onda se izvrsava default, iz ovoga mozes zakljuciti da ti nije bitno to if(l == 1); Jer ako l nije jednako 1, ono nece ni uci u case 1, tako da nece ni provjeravati dali je l == 1, niti ce izvrsiti iskaz.
    Ok, nisu to katastrofalne greske, al' ipak suvisan kod nikada nije dobrodosao.

  11. #11
    Početnik
    Učlanjen
    25.05.2006.
    Lokacija
    Nigde
    Poruke
    34
    Reputaciona moć
    0

    Podrazumevano Re: Program u turbo C

    Ne, nisam te pitao zato sto neznam, vec zato sto ti nije potrebno.
    Taman posla ja nisam rekao da neznas, nego Znas li sta ce da se desi?
    Opet malo ne razumijes neke stvari. Kada si kreirao switch petlju sa uslovom neke varijable u ovom slucaju je to vrijednost l, svaka vrijednost pored case-a se poredi sa vrijednosti koja je zadata kao uslov u switch-u. Na sledecem primjeru ces najbolje shvatiti:
    Procitaj ponovo mislim da ti je promaklo.
    a ako uneses neki drugi broj ili neko slovo(nebitno), program se zavrsava.Ukoliko hoces da ti uslov umesto "1" bude slovo uneto sa tastature moras oznaciti ovako
    if(l== ' neko slovo ' ) , bas oznaceni sa ' ' ,samo moras paziti, razlikuju se mala i velika slova.
    Lose si me razumeo zar ne?Ja sam napisao sa if-om ukoliko Predrag_ hoce: printf("Novo racunanje Da ili Ne\n"); pa da unese "Da" ili "Ne" a ne brojeve, na nacin koji sam predhodno objasnio.Mada tacno je da moze i bez if-a, to znam ali samo za brojeve, a ukoliko napises case 'neko slovo': program nece raditi, kao sto sam rekao da mora da bude konstanta.Nemoj pogresno da me shvatis, nisam mislio nista pogresno.

  12. #12
    Početnik
    Učlanjen
    25.05.2006.
    Lokacija
    Nigde
    Poruke
    34
    Reputaciona moć
    0

    Podrazumevano Re: Program u turbo C

    int broj;
    switch(broj)
    {
    case 1:
    .......................
    break;
    case 2:
    ...........
    break;
    default:
    ...............
    break;
    }
    Bolje je ovako:
    int broj;
    switch (broj) {
    case 1: iskaz
    case 2: iskaz
    .
    .
    default : iskaz
    }
    Nepotrebno ti je break ;.Jer ako je uslov ispunjen nece dalje,zasto ga kocis?

  13. #13
    Ističe se juznivetar (avatar)
    Učlanjen
    12.02.2005.
    Pol
    muški
    Lokacija
    -
    Poruke
    2.041
    Reputaciona moć
    67

    Podrazumevano Re: Program u turbo C

    Kod:
    nego Znas li sta ce da se desi?
    Da, isto sto i bez if(l==1);
    Kod:
    int broj;
    switch (broj) {
    case 1: iskaz
    case 2: iskaz
    .
    .
    default : iskaz
    
    }Nepotrebno ti je break ;.Jer ako je uslov ispunjen nece dalje,zasto ga kocis?
    Eh, opet grijesis, ako nestavis break, vidi sta se desava se tzv propadanje, pa recimo ako ti je broj = 1, izradit ce se iskaz kod case 1 i to je uredu, al' zbog toga sto nema break; naredbe kod ce dalje da propada i on ce da izvrsava sve case-ove, a to moze da bude gadan problem.
    Evo sam napisao dokazni kod:
    Kod:
    #include <iostream>
    using namespace std;
    
    int main()
    {
    int broj, brojac = 0;
    cout << "Unesite broj: ";
    cin >> broj;
    switch (broj)
    {
    case 1:
    	brojac++;
    case 2:
    	brojac++;
    case 3:
    	brojac++;
    default:
    	brojac++;
    }
    cout << "\nBrojac je: " << brojac << "?!!!\n";
    return 0;
    }
    Ukucaj broj = 1, prema tvome na kraju bi trebalo da ispise "Brojac je 1 ?!!!", al' posto bez break; naredbe kod propada on ce zapravo ispisati "Brojac je 4 ?!!!" ;-)

  14. #14
    Ističe se juznivetar (avatar)
    Učlanjen
    12.02.2005.
    Pol
    muški
    Lokacija
    -
    Poruke
    2.041
    Reputaciona moć
    67

    Podrazumevano Re: Program u turbo C

    A to sto pricas o karakterima kao uslov, opet ti nije potrebno if u case-u.
    Dakle da bi odredjivao na osnovu karaktera, kod bi izgledao ovako:
    Kod:
    #include <iostream>
    using namespace std;
    
    int main()
    {
    char izbor;
    cout << "Unesite izbor: ";
    cin >> izbor;
    switch(izbor)
    {
    case 'a':
    cout << "Pritisnuo sam a!\n";
    break;
    case 'M':
    cout << "Pritisnuo sam veliko slovo M!\n";
    break;
    case '5':
    cout << "Pritisnuo sam broj 5!\n";
    break;
    default:
    	cout << "Pritisnuti znak nema svoj CASE!\n";
    }
    return 0;
    }
    ;-)

  15. #15
    Početnik
    Učlanjen
    25.05.2006.
    Lokacija
    Nigde
    Poruke
    34
    Reputaciona moć
    0

    Podrazumevano Re: Program u turbo C

    Eh, opet grijesis, ako nestavis break, vidi sta se desava se tzv propadanje, pa recimo ako ti je broj = 1, izradit ce se iskaz kod case 1 i to je uredu, al' zbog toga sto nema break; naredbe kod ce dalje da propada i on ce da izvrsava sve case-ove, a to moze da bude gadan problem.
    Evo sam napisao dokazni kod:
    Evo ja sam prepravio tvoj kod i mogu da zakljucim da ako NE stavim break; da si upravu, dolazi do propadanja.E sad po mom misljenju ja mislim da je normalno, zato sto program nije deklarisan do kraja nema izraz, nema gde da se vrati pa onda ide dalje.Ali koje pitanje se sad postavlja.Kad stavim break ;?Pomocu break-iskaza vrsi se trenutno izlazenje iz switch-a, sto snaci da se proverava samo case 1; i tu se zaustavlja ne ide dalje.Evo ti kod :
    #include<stdio.h>
    void
    main()
    {
    int broj, brojac = 0;
    printf("Unesite broj: \n");
    scanf("%d",&broj);
    switch (broj)
    {
    case 1:
    brojac++;break;
    case 2:
    brojac++;break;
    case 3:
    brojac++;break;
    default:
    brojac++;break;
    }
    printf("Brojac je: %d?!!!\n",brojac);
    }
    Ukucaj broj = 1,=Brojilac je 1!! pise Brojilac je 1!!, ali ukucaj broj = 2 ,po tvome trebalo bi da preskoci case 1; i nastavi na sledeci sa case 2;, ali nemoze od break ;pa stampa Brojilac je 1!!;kao i sa ostalim slucajevima.
    A to sto pricas o karakterima kao uslov, opet ti nije potrebno if u case-u.
    Dakle da bi odredjivao na osnovu karaktera, kod bi izgledao ovako:
    nije isto u <stdio.h> pa u <iostream>-u razlikuje se kad se unose slova sa tastature kod <iostream>-a je prosto ko pasulj (moras priznati) dok se u <stdio.h> malo gubi, mora preko getchar ();.

    PS. molim te pisi u <stdio.h> gubim se u <iostream>-u

  16. #16
    Iskusan codemaker (avatar)
    Učlanjen
    05.04.2004.
    Lokacija
    Beograd
    Poruke
    6.416
    Reputaciona moć
    0

    Podrazumevano Re: Program u turbo C

    Citat Original postavio neznalica u C++
    Ukucaj broj = 1,=Brojilac je 1!! pise Brojilac je 1!!, ali ukucaj broj = 2 ,po tvome trebalo bi da preskoci case 1; i nastavi na sledeci sa case 2;, ali nemoze od break ;pa stampa Brojilac je 1!!;kao i sa ostalim slucajevima.
    Nisi dobro proucio "switch/case".
    Ako ukucas 1, odradice sta ima pod blokom ispod case = 1 i izaci iz case kad zavrsi, bez kontrole case=2, case=3 itd.
    Ako ukucas 2 nece se uopste obazirati na deo pod case=1 Jednostavno ce uraditi blok koji je ispod case=2 i izaci iz switch
    Ako nista ne odgovra "case" zahtevu, koristice "default" blok, bez da testira case=1 ili case=2 itd...

    Switch konstrukcija NE tsetira sve blokove iza "switch" redom, vec tacno odredjeni blok, zavisno od toga sta uneses. Nikada ne ide blok po blok (za svaki "case") pa sta nedje, vec tacno "gadja" da radi sa unetom vrednoscu, a ako ne, koristi "default" blok koji prihvata takvu situaciju (nije uneseno ni 1 ni 2 na primer)

  17. #17
    Ističe se juznivetar (avatar)
    Učlanjen
    12.02.2005.
    Pol
    muški
    Lokacija
    -
    Poruke
    2.041
    Reputaciona moć
    67

    Podrazumevano Re: Program u turbo C

    Kod:
    nije isto u <stdio.h> pa u <iostream>-u razlikuje se kad se unose slova sa tastature kod <iostream>-a je prosto ko pasulj  (moras priznati) dok se u <stdio.h> malo gubi, mora preko getchar ();.
    Ma sve je to slicno, sto se tice ulaz > izlaz podataka, samo sto se pozivaju druge komande:
    Evo ti switch zadatak sa karakterima i sa "cstdio" bibliotekom:
    Kod:
    #include <cstdio>
    
    int main()
    {
    char izbor;
    printf("Unesite izbor: ");
    scanf("%c", &izbor);
    switch(izbor)
    {
    case 'a':
    printf("Pritisnuo sam a!\n");
    break;
    case 'M':
    printf("Pritisnuo sam veliko slovo M!\n");
    break;
    case '5':
    printf("Pritisnuo sam broj 5!\n");
    break;
    default:
    	printf("Pritisnuti znak nema svoj CASE!\n");
    }
    return 0;
    }
    Kod:
    Ukucaj broj = 1,=Brojilac je 1!! pise Brojilac je 1!!, ali ukucaj broj = 2 ,po tvome trebalo bi da preskoci case 1; i nastavi na sledeci sa case 2;, ali nemoze od break ;pa stampa Brojilac je 1!!;kao i sa ostalim slucajevima.
    Stampa brojilac = 1 zato sto je samo usao u case 2, gdje se nalazi brojac++; tj. povecao je brojac za jedan i napustio switch petlju, naravno zbog toga je i ispisao "Brojac je 1!".
    Procitaj sta ti je codemaker napisao. Nisi bas najbolje razumio switch/case ...

  18. #18
    Iskusan codemaker (avatar)
    Učlanjen
    05.04.2004.
    Lokacija
    Beograd
    Poruke
    6.416
    Reputaciona moć
    0

    Podrazumevano Re: Program u turbo C

    Da, zaboravio sam da dodam u prethodnom postu da, ako ispisuje vrednost "brojaca", uvek ce mu ispisati 1, jer ce samp jedan "case" prouzrokovati da se brojac poveca za 1... pa ce rezultat ispisa uvek biti 1

  19. #19
    Početnik
    Učlanjen
    25.05.2006.
    Lokacija
    Nigde
    Poruke
    34
    Reputaciona moć
    0

    Podrazumevano Re: Program u turbo C

    Nisi dobro proucio "switch/case".
    Ako ukucas 1, odradice sta ima pod blokom ispod case = 1 i izaci iz case kad zavrsi, bez kontrole case=2, case=3 itd.
    Ako ukucas 2 nece se uopste obazirati na deo pod case=1 Jednostavno ce uraditi blok koji je ispod case=2 i izaci iz switch
    Ako nista ne odgovra "case" zahtevu, koristice "default" blok, bez da testira case=1 ili case=2 itd...
    To je uredu to sam vec napisao, zbog toga mislim da je break ; suvishan.
    Switch konstrukcija NE tsetira sve blokove iza "switch" redom, vec tacno odredjeni blok, zavisno od toga sta uneses. Nikada ne ide blok po blok (za svaki "case") pa sta nedje, vec tacno "gadja" da radi sa unetom vrednoscu, a ako ne, koristi "default" blok koji prihvata takvu situaciju (nije uneseno ni 1 ni 2 na primer)
    Naprotiv switch je konstrukcija koja testira da li jedan od izraza odgovara nekoj od vrednosti, i u zavisnosti od toga se razgranjava.Prochachkaj malo po knjigama siguran sam da ces naci.Da dodam jos nesto, Svaki slucaj je oznacen sa jednom ili vise celobrojnih konst. ili konst. izrazima, ako slucaj odgovara vrednosti izraza , onda otpocinje izvrsenje tog slucaja.Izrazi svih slucajeva moraju da budu razliciti. default ; blok se izvrsava ako nijedan od ostalih slucajeva nije zadovoljen, default ; je opcioni ako njega nema i ako nijedan slucaj ne odgovara, nece biti izvrsena nikakva operacija.
    Program u turbo C se pretvorio u switch tutor, pa dobro nije lose bas smo ga detaljno demonstrirali.
    Poslednji put ažurirao/la neznalica u C++ : 30.05.2006. u 16:31

  20. #20
    Početnik
    Učlanjen
    25.05.2006.
    Lokacija
    Nigde
    Poruke
    34
    Reputaciona moć
    0

    Podrazumevano Re: Program u turbo C

    Kod:
    #include <iostream>
    using namespace std;

    int main()
    {
    char izbor;
    cout << "Unesite izbor: ";
    cin >> izbor;
    switch(izbor)
    {
    case 'a':
    cout << "Pritisnuo sam a!\n";
    break;
    case 'M':
    cout << "Pritisnuo sam veliko slovo M!\n";
    break;
    case '5':
    cout << "Pritisnuo sam broj 5!\n";
    break;
    default:
    cout << "Pritisnuti znak nema svoj CASE!\n";
    }
    return 0;
    }
    Ovim kodom ne verujem da si stigao vise od zamene sa if-om,switch komanda nema onu svoju pravu radnju, sa switch-em se vracas na pocetak ili u sredini programa, ja mislim da zbog tog ona sluzi.
    #include <cstdio>
    int main()
    {
    char izbor;
    printf("Unesite izbor: ");
    scanf("%c", &izbor);

    if(izbor=='a')
    printf("Pritisnuo sam a!\n");
    else
    if(izbor=='M')
    printf("Pritisnuo sam veliko slovo M!\n");
    else
    if(izbor=='5')
    printf("Pritisnuo sam broj 5!\n");

    else
    printf("Pritisnuti znak nema svoj CASE!\n");
    }
    Ali dobro nema veze bitno je da se razumemo, i da ja vise nemam sta da kazem, nego sta mislite da menjamo li temu?.Predrag_ se izgubi.

  21. #21
    Iskusan codemaker (avatar)
    Učlanjen
    05.04.2004.
    Lokacija
    Beograd
    Poruke
    6.416
    Reputaciona moć
    0

    Podrazumevano Re: Program u turbo C

    Citat Original postavio neznalica u C++
    To je uredu to sam vec napisao, zbog toga mislim da je break ; suvishan.

    Naprotiv switch je konstrukcija koja testira da li jedan od izraza odgovara nekoj od vrednosti, i u zavisnosti od toga se razgranjava.Prochachkaj malo po knjigama siguran sam da ces naci.Da dodam jos nesto, Svaki slucaj je oznacen sa jednom ili vise celobrojnih konst. ili konst. izrazima, ako slucaj odgovara vrednosti izraza , onda otpocinje izvrsenje tog slucaja.Izrazi svih slucajeva moraju da budu razliciti. default ; blok se izvrsava ako nijedan od ostalih slucajeva nije zadovoljen, default ; je opcioni ako njega nema i ako nijedan slucaj ne odgovara, nece biti izvrsena nikakva operacija.
    Program u turbo C se pretvorio u switch tutor, pa dobro nije lose bas smo ga detaljno demonstrirali.
    Zavisi kako gledas na stvari. (nema potrebe da me upucujes na knjige, napisao sam stotine programa koji koriste "switch", mozes mi verovati)
    1. "Switch" najpre "lokalno definise STA trazis
    2. U zavisnosti sta si u testiranje u "switch" naveo, programska kontrola "skace" na onaj blok koji ima "case to_sto_si_trazio"
    3. Ako nema bloka koji obraduje "to_sto_si_trazio" direktno skace na blok "default" jer nema sta da izvrsi.
    Dakle, "switch" ne radi poput if-elseif-.." gde se testira jedna po jedna varijanta, vec "direktno" gadja "case" koji sadrzi to sto si odredio kao uslov. Malo je drugacija logika kod "switch", razlika je dosta "sofisticirana" ali postoji. Da ti sad ne objasnjavam kompajlerske logike u vezi "switch" naredbe.
    Uprosceno receno, kod "switch" kompajler pripermi uslov sta trazim, u istom momentu u kompajlerskoj logici se sprema blok koji sadrzi sve navedene "case" Kad krenes u "switch" konstrukciju, kompajler vec "zna" gde bi trebao da postoji blok za izvrsenje i ide "pravo tamo", ako nema proverava ima li "default" blok i ide tamo. Ako ni "default" bloka nema, nista ne uradi.
    Kod na primer if-elseif-elseif-... kompajler "ne zna sta ga ceka" Uzima prvi uslov, ako nje ok, ide na sledeci, pa na sledeci, dok ne nadje - znaci "trazi" dok ne nadje, ako nadje. Dakle nema u memoriji unapred odredjene blokove i uslove za njih, vec "klizi" kroz kod"
    To je glavna razlika od "switch". No to za progamera i nije toliko bitno, jer se najcesce (za neiskusnije programere) svodi na isto. Recimo, teoretski govoreci ako imas 1000 blokova u "switch", kompajler tako uradi da gadja "direktno" tacno odredjen blok koji zadovoljava uslov, jer ga "unapred" zna da postoji (ako postoji)
    Kod "if" struktura za tih istih 1000 uslova bi morao da "prolazi i testira" svaki if else posebno. Razlike u brzini su uglavnom za "obicne programe" samo na laboratorijskom nivou, ali negde je svaka milisekunda jako vazna, za neke specificne programe.

    I konacno, bez namere da te vredjam, imam osecaj da diskutujes precesto koristeci copy/paste (kao u gornjem odgovoru), nije lose, znaci da citas literaturu, ali moras se navici i da "iz glave" izdiskutujes neku materiju. Svi smo mi to vec mnogo puta procitali....
    Poslednji put ažurirao/la codemaker : 30.05.2006. u 17:30

  22. #22
    Iskusan codemaker (avatar)
    Učlanjen
    05.04.2004.
    Lokacija
    Beograd
    Poruke
    6.416
    Reputaciona moć
    0

    Podrazumevano Re: Program u turbo C

    Citat Original postavio neznalica u C++
    Ovim kodom ne verujem da si stigao vise od zamene sa if-om,switch komanda nema onu svoju pravu radnju, sa switch-em se vracas na pocetak ili u sredini programa, ja mislim da zbog tog ona sluzi.
    ???
    Kako to mislis " sa switch-em se vracas na pocetak ili u sredini programa, ja mislim da zbog tog ona sluzi" ?
    Nesto si se lose izrazio?
    Ne sluzi switch tome (da grana program), vec da u zavisnosti od zadatog uslova, nesto odradi (bilo skoci u neku drugu funkciju ili obradi neke podatke ili slicno) Naravno skokom u neku funkciju ipak "granas" negde privremeno, ali u svakom se slucaju vraca na kraj "switch" - ako je to sto si hteo da kazes.

    "switch" i "case" definisu sta ces i kada uraditi. Bilo da pozivas neku funkciju iz "case" bloka ili obavljas neke proracune itd..
    U bilo kom slucaju zavrsavas IZA kraja "switch" bloka i teras dalje po programu, bilo da opet pozivas neku funkciju ili se vracas tamo dakle si i dosao u funkciju koja je imala u sebi "switch"...
    Naravno, desava se da i iz "case" bloka uradis "return" u pozivnu funkciju, ali ipak "switch" nije nesto sto sluzi za grananje programa
    Poslednji put ažurirao/la codemaker : 30.05.2006. u 17:32

  23. #23
    Nov član
    Učlanjen
    05.03.2009.
    Pol
    muški
    Poruke
    2
    Reputaciona moć
    0

    Podrazumevano Re: Program u turbo C

    molim vas.......
    hitno
    da li bi neko mogao sledeci zadatak da mi uradi..........
    Bio bih zahvalan........
    Glasi:
    (Napisati C program koji na osnovu unetih naelektrisanja Q1 i Q2 i rastojanja r izmedju njih,izracunava silu ,koja izmedju njih deluje kao i tip sile (privlacna ili odbojna ).Program po izboru korisnika (L,Sili D)i rastojanja d izracunava potencijal u tacki koja se nalazi na pravoj povucenu kroz tacke gde se nalaze naelektrisanja Q1iQ2,a polozaj odredjuje korisnik programa. )
    L-Tacka se nalazi levo od prvog naelektrisanja na rastojanju d od njega

    S-Tacka se nalazi izmedju naelektrisanja na rastojanju d od prvog naelektrisanja,i
    D-Tacka se nalazi desno od drugog naelektrisanja na rastojanju d od njega.)

  24. #24
    Nov član
    Učlanjen
    05.03.2009.
    Pol
    muški
    Poruke
    2
    Reputaciona moć
    0

    Podrazumevano Re: Program u turbo C

    pozuri

Slične teme

  1. Turbo folk
    Autor avril_darker u forumu Narodna / folk
    Odgovora: 23
    Poslednja poruka: 27.07.2013., 17:10
  2. Turbo Slang
    Autor cojka u forumu Zdravlje
    Odgovora: 1
    Poslednja poruka: 18.08.2004., 09:25
  3. problemcic u turbo C-u!!!
    Autor red alert u forumu Programiranje
    Odgovora: 4
    Poslednja poruka: 16.04.2004., 07:48

Pravila za slanje poruka

  • Ne možete kreirati novu temu
  • Ne možete poslati odgovor
  • Ne možete dodati priloge
  • Ne možete prepraviti svoju poruku
  •