Programiranje u C++-u - pitanja i odgovori izdvojena tema

poruka: 7.285
|
čitano: 1.722.443
|
moderatori: Lazarus Long, XXX-Man, vincimus
+/- sve poruke
ravni prikaz
starije poruke gore
15 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Ja uradio ovaj zadatak sa if ali nikako ne ide sa switch???

 

 

ZADATAK:Napisi program koji za osvojeni broj bodova ispisuje odredjenu ocijenu:
0-20=1
21-40=2
41-60=3
61-80=4
81-100=5
primjer
ULAZ: 21 IZLAZ: dovoljan(2)
ULAZ:81 IZLAZ:odlican(5)
NAREDbom switch!

http://www.bug.hr/forum/topic/softver-literatura-usluge/prodaja-knjige-hardware/103166.aspx
 
0 0 hvala 0
16 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
Ja bih isto koristio if, ali ako netko bas hoce switch, mozes ovako, samo ce bit hrpa bezveznog koda:
switch (bodovi)
 {
  case 0:
  case 1:
  case 2:
  {
  ocjena = 1;
  break;
  }
  case 21:
  case 22:
  {
  ocjena = 2;
  break;
  }
 }
//todo:nadopuniti za sve postojece bodove :)
Lack of money is the root of all evil. George Bernard Shaw
Poruka je uređivana zadnji put pet 4.11.2011 9:08 (CalvinRi).
17 godina
moderator
offline
Re: Programiranje u C++-u - pitanja i odgovori
Intelovac123 kaže...

Ja uradio ovaj zadatak sa if ali nikako ne ide sa switch???

 

 

ZADATAK:Napisi program koji za osvojeni broj bodova ispisuje odredjenu ocijenu:
0-20=1
21-40=2
41-60=3
61-80=4
81-100=5
primjer
ULAZ: 21 IZLAZ: dovoljan(2)
ULAZ:81 IZLAZ:odlican(5)
NAREDbom switch!

Prvo - nije ocijena nego ocjena.

 

Drugo - naravno da ide. Broj bodova 0, 1, 2, 3 ... 20 ide za ocjenu 1, broj 21, 22, 23 ... 40 ide za ocjenu 2. Naravno, čovjek mora biti lud da to ide raditi. {#}

 

Inače, brijem da si krivo shvatio zadatak (ili je onaj koji ti je dao taj zadatak sadist) - da ne treba switchati broj bodova, nego tekstualni ispis ocjena. Kad imaš bodove raspoređene kao u tvom slučaju, onda do ocjene dolaziš jednostavnim matematičkim izrazom:

ocjena = (bodovi-1)/20 + 1.

 

Pa bi onda bilo logično da switchas ocjene (a ne bodove!) kako bi ispisao ocjenu slovima.

17 godina
moderator
offline
Re: Programiranje u C++-u - pitanja i odgovori
CalvinRi kaže...
Ja bih isto koristio if, ali ako netko bas hoce switch, mozes ovako, samo ce bit hrpa bezveznog koda:
switch (bodovi)
 {
  case 0:
  case 1:
  case 2:
  {
  ocjena = 1;
  break;
  }
  case 21:
  case 22:
  {
  ocjena = 2;
  break;
  }
 }
//todo:nadopuniti za sve postojece bodove :)

Unutar switcha se u pravilu ne stavljaju vitičaste zagrade. {#}

16 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
mbaksa kaže...
CalvinRi kaže...
Ja bih isto koristio if, ali ako netko bas hoce switch, mozes ovako, samo ce bit hrpa bezveznog koda:
switch (bodovi)
 {
  case 0:
  case 1:
  case 2:
  {
  ocjena = 1;
  break;
  }
  case 21:
  case 22:
  {
  ocjena = 2;
  break;
  }
 }
//todo:nadopuniti za sve postojece bodove :)

Unutar switcha se u pravilu ne stavljaju vitičaste zagrade. {#}

U pravilu? Mislim da je to tema kao i da li stavljati viticaste zagrade u novi red ili ne. A meni je tako citljivije, a sto je jos isto prednost, u Visual studiu se vrlo lako moze seletirati dio koda okruzen viticastim zagradama (crtl+shift+đ) i manipulirati s njim, tako da to ima svojih dobrih strana, pogotovo ako u switchu ima vise naredbi. 

Lack of money is the root of all evil. George Bernard Shaw
17 godina
moderator
offline
Re: Programiranje u C++-u - pitanja i odgovori
CalvinRi kaže...
mbaksa kaže...
Unutar switcha se u pravilu ne stavljaju vitičaste zagrade. {#}

U pravilu? Mislim da je to tema kao i da li stavljati viticaste zagrade u novi red ili ne.

Krivo misliš. Naredba se piše bez vitičastih zagrada unutra. Ti ih možeš staviti, naravno, i radit će, ali nije baš isto. I nije čitljivije, s obzirom da u switch inače ne dolaze vitičaste zagrade. Čitljivost si mogao (i morao!) postići uvlačenjem naredbi unutar caseova, a ne omotavanjem u vitičaste zagrade. Upravo zbog neuvlačenja tvoj kod nije čitljiv - ne vidi se što je unutar čega.

 

 

Dam ti i jedan bezvezni primjer, koji se tiče scopea (kad staviš vitičaste zagrade, stvaraš hijerarijski nižu razinu, odnosno varijable koje deklariraš unutar njih imaju drugi scope):
   cout << "Upisi broj: " << endl;
   int broj;
   cin >> broj;
   switch (broj)
   {
     case 1:
       cout << "Ne gine ti ponavljanje";
       int broj2;
       broj2 = 98974578;
     case 2:
       cout << "Jedva si prosao.\n";
       if (broj2 == 98974578) cout << "Prvo si dobio jedinicu, zar ne!?";
       break;
   }
Probaj case 1 staviti u vitičaste zagrade. {#}

 

 

U biti - i Microsoft ti ovdje objašnava razliku.

 

Poruka je uređivana zadnji put pet 4.11.2011 12:31 (mbaksa).
16 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
mbaksa kaže...
CalvinRi kaže...
mbaksa kaže...
Unutar switcha se u pravilu ne stavljaju vitičaste zagrade. {#}

U pravilu? Mislim da je to tema kao i da li stavljati viticaste zagrade u novi red ili ne.

Krivo misliš. Naredba se piše bez vitičastih zagrada unutra. Ti ih možeš staviti, naravno, i radit će, ali nije baš isto. I nije čitljivije, s obzirom da u switch inače ne dolaze vitičaste zagrade. Čitljivost si mogao (i morao!) postići uvlačenjem naredbi unutar caseova, a ne omotavanjem u vitičaste zagrade. Upravo zbog neuvlačenja tvoj kod nije čitljiv - ne vidi se što je unutar čega.

 

 

Dam ti i jedan bezvezni primjer, koji se tiče scopea (kad staviš vitičaste zagrade, stvaraš hijerarijski nižu razinu, odnosno varijable koje deklariraš unutar njih imaju drugi scope):
   cout << "Upisi broj: " << endl;
   int broj;
   cin >> broj;
   switch (broj)
   {
     case 1:
       cout << "Ne gine ti ponavljanje";
       int broj2;
       broj2 = 98974578;
     case 2:
       cout << "Jedva si prosao.\n";
       if (broj2 == 98974578) cout << "Prvo si dobio jedinicu, zar ne!?";
       break;
   }
Probaj case 1 staviti u vitičaste zagrade. {#}

 

 

U biti - i Microsoft ti ovdje objašnava razliku.

 

Apsolutno se slazem, moj kod je bio grozno necitljiv, ali kad sam copy-pastao iz VS-a, forum mi je dao neki crveni alert kako koristim neko nedozvoljeno formatiranje, pa sam sve morao pastati u notepad prvo i onda je sve ispalo ruzno.

Ali ipak, evo primjera kako moji switchevi mogu izgledati (copy-paste iz projekta):

 

   switch (ptrN->GetType())

   {

     case ntAdditionalPoint:

       {

         vector<CAdditionalPointPtr> vecAPs;

         CAdditionalPointPtr ptrAP = boost::static_pointer_cast<CAdditionalPoint, CNode>(ptrN);

         vecAPs.push_back(ptrAP);

         TE->DrawAdditionalPoint(vecAPs, pSys, pGfx);

         break;

       }

     case ntElevationPoint:

       {

         vector<CElevationPointPtr> vecEPs;

         CElevationPointPtr ptrEP = boost::static_pointer_cast<CElevationPoint, CNode>(ptrN);

         vecEPs.push_back(ptrEP);

         TE->DrawElevationPoint(vecEPs, pSys, pGfx);

         break;

       }

     case ntSystemIntersection:

       {

         vector<CSystemIntersectionPointPtr> vecEPs;

         CSystemIntersectionPointPtr ptrEP = boost::static_pointer_cast<CSystemIntersectionPoint, CNode>(ptrN);

         vecEPs.push_back(ptrEP);

         TE->DrawIntersectionPoint(vecEPs, pSys, pGfx);

         break;

       }

     case ntBorehole:

       {

         vector<CBoreholePointPtr> vecBPs;

         CBoreholePointPtr ptrBP = boost::static_pointer_cast<CBoreholePoint, CNode>(ptrN);

         vecBPs.push_back(ptrBP);

         TE->DrawBoreholePoint(vecBPs, pSys, pGfx);

         break;

       }

 

     default:

       return FALSE;

   }

 

   Switchevi su uvuceni, i jos su zagrade, slazem se da bi moglo i bez njih. Ovdje su zbog navike.

 

   A kakva je to praksa koristiti deklariranu varijablu u jednom case-u u , pa u sljedecem? 

   To stvarno jos nisam vidio, niti imao potrebu za tim. Mislim da se tvoj primjer moze i jasnije napisati, jer swich-case ne podrazumijeva skakanje po razlicitim caseovima (iako se moze)

Lack of money is the root of all evil. George Bernard Shaw
17 godina
moderator
offline
Re: Programiranje u C++-u - pitanja i odgovori
CalvinRi kaže...
  A kakva je to praksa koristiti deklariranu varijablu u jednom case-u u , pa u sljedecem? 

   To stvarno jos nisam vidio, niti imao potrebu za tim. Mislim da se tvoj primjer moze i jasnije napisati, jer swich-case ne podrazumijeva skakanje po razlicitim caseovima (iako se moze)

Primjer je tu zato i samo zato da ti demonstrira da nije posve isto ako koristiš ili ako ne koristiš vitičaste zagrade. Iako se u praksi 99.99999% nećeš susresti sa sličnom situacijom. No, ovo je forum, svrha mu je između ostalog edukativna, pa stoga ima smisla promatrati i takve slučajeve.

 

Inače, u C++-u su takvi primjeri zapravo besmisleni, jer ne možeš znati je li varijabla inicijalizirana ili ne, ali recimo u JavaScriptu ili PHP-u bi mogao napisati takav nekakav primjer, a da ima nekog smisla, jer bi u caseu 2 mogao testirati je li varijabli dodijeljenja vrijednost ili ne. To u C++-u ne možeš, jer C++ automatski ne inicijalizira varijable (recimo na 0, null, prazni string i sl.).

15 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Putnik se kretao t1 sati brzinom v1 km/h,t2 sati brzinom v2  i t3 sati brzinom v3.Napisati program kojim se unose prirodni brojevi ta t12t2,t3,v1,v2,i v3 i ispisuje poslije koliko sati od pocetka putovanja putnik bio na pola puta.

 

SAMO SA IF KO ZNA URADITI :D

http://www.bug.hr/forum/topic/softver-literatura-usluge/prodaja-knjige-hardware/103166.aspx
Poruka je uređivana zadnji put sub 5.11.2011 8:28 (Intelovac123).
 
0 0 hvala 0
15 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

Znaci taj gore zadatak.Jeda putnik se krece t1 sati brzinom v1,t2 sati brzinom v2,t3 sati brzinom v3..ispisuje poslije koliko sati od pocetka putovanja putnik bio na pola puta.

 

 

ULAZ: t1=1 v1=120, t2=2 , v2=90 , t3=1 ,v3= 80

IZLAZ:1.77778

http://www.bug.hr/forum/topic/softver-literatura-usluge/prodaja-knjige-hardware/103166.aspx
Poruka je uređivana zadnji put sub 5.11.2011 8:46 (Intelovac123).
 
0 0 hvala 0
17 godina
moderator
offline
Re: Programiranje u C++-u - pitanja i odgovori

Prvo probaj sam. Logika ti ide ovako - prvo izracunas ukupni put i podijelis ga s dva, jer ti treba polovica puta. Dakle, imas varijablu put koja sadrzava polovicu duljine ukupnog puta. I imaš float varijablu vrijeme koja broji sate i koja je inicijalizirana na nulu.

 

I sad samo moraš varijablu put dotući do nule, uz uvećavanje varijable vrijeme.

 

Uoči da imaš tri dionice i da se ide dionicu po dionicu. I za svaku dionicu imaš jedan od ova dva slučaja:

 

  • Ako si u jednoj dionici prošao manje ili jednako preostalom putu (to ti je inicijalno polovica ukupnog puta, odnosno sadržaj varijable put), onda je jasno da ćeš varijablu put smanjiti za prijeđeni put (v*t), a varijablu vrijeme uvećati za vrijednost t - i ideš na sljedeću dionicu.
  • Ako si u jednoj dionici prošao više od preostalog puta - znači da tu moraš odrediti koliko je trajala vožnja u toj dionici kad nisi prešao cijeli put. Ako si u toj dionici si prešao putDionica (v*t) za vrijeme t, za koliko si prošao (preostali) put? Za put/putDionica*t, dakle gledaš koji postotak puta si prošao u toj dionici i množiš ga s vremenom. Zapravo - vidjet ćeš - tu možeš vrijeme i pokratiti. {#} I, naravno, tu put staviš na nulu - dakle, rekao si time da smo došli do polovice.
17 godina
offline
Programiranje u C++-u - pitanja i odgovori

Ne treba varijablu polaPuta svoditi na 0, ona mora biti u jednoj od tri dionice, prolaskom dionice je smanjimo za tu dionicu, gdje je manja od dionice, stajemo.

 

 

#include<iostream>
using namespace std;


int main()
{
    int t1, t2, t3, v1, v2, v3;
    double vrijeme;
    cin>> t1 >> v1 >> t2 >> v2 >> t3 >> v3;
    double polaPuta = (t1*v1 + t2*v2 + t3*v3) / (double)2;
    if(polaPuta > t1*v1)
    {
       vrijeme =  t1;
       polaPuta -= (t1*v1);      // ako je pola puta izvan prve dionice
       if(polaPuta > t2*v2)
       {
          vrijeme += t2;
          polaPuta -= (t2*v2);
          vrijeme += (polaPuta / v3);     // ako je pola puta u trećoj dionici
       }
       else
       {
          vrijeme += (polaPuta / v2);      // ako je pola puta u drugoj dionici
       }
    }
    else
    {
       vrijeme = (polaPuta / v1);  // ako je pola puta u prvoj dionici
    }
    cout << vrijeme << endl;
    return 0;
}

 
0 0 hvala 0
17 godina
moderator
offline
Re: Programiranje u C++-u - pitanja i odgovori
Floki kaže...

Ne treba varijablu polaPuta svoditi na 0, ona mora biti u jednoj od tri dionice, prolaskom dionice je smanjimo za tu dionicu, gdje je manja od dionice, stajemo.

Ako ne radiš općenito, nego, da se tako izrazim "ad hoc", onda ne trebaš. No ja sam išao drugim smjerom, gdje mi nema razlike između dionica - sve ih jednostavno propustim kroz funkciju i vrlo lako je proširiti i za više dionica ili pak ubaciti dionice u petlju.

 

// ##############################################

 

 

#include <iostream>

 

using namespace std;

 

void putovanje(float &ukupnoVrijeme, float &put, int v, int t)

{

   if (put > 0)

   {

     if (v*t <= put)

     {

       ukupnoVrijeme += t;

       put -= v*t;

     }

     else

     {

       ukupnoVrijeme += (float)put/v;

       put = 0;

     }

   }

}

 

int main()

{

   int t1=1,   t2=2,  t3=1,

     v1=120, v2=90, v3=80;

 

   float put = t1*v1+t2*v2+t3*v3;

   cout << "\n\nUkupno prijedjeni put: " << put << endl;

 

   put /= 2;

 

   cout << "Polovica puta: " << put << "\n\n";

 

   float ukupnoVrijeme = 0;

 

   putovanje(ukupnoVrijeme, put, v1, t1);

   putovanje(ukupnoVrijeme, put, v2, t2);

   putovanje(ukupnoVrijeme, put, v3, t3);

 

   cout << "\nUkupno vrijeme: " << ukupnoVrijeme;

 

   return 0;

}

 

// ##############################################

 

 

Eh, morat ću pokrenuti Firefox - Chrome se ne može nositi s ovim editorom...

17 godina
offline
Programiranje u C++-u - pitanja i odgovori

OK, ovo je sa funkcijom gdje nam nisu unaprijed dati gabariti.

npr. kad se zada zadatak tipa: unesi broj dionica.

mada je ključni faktor kod mene veličina dionice i veličina puta koji se umanjuje

 

 

Uh, Chrome, iz nekog blesavog razloga uvijek njega prvog potežem, pa se sjetim kad mi odbije primiti kod{#}

Poruka je uređivana zadnji put sub 5.11.2011 14:52 (Floki).
 
0 0 hvala 0
17 godina
moderator
offline
Re: Programiranje u C++-u - pitanja i odgovori
Floki kaže...

OK, ovo je sa funkcijom gdje nam nisu unaprijed dati gabariti.

npr. kad se zada zadatak tipa: unesi broj dionica.

mada je ključni faktor kod mene veličina dionice i veličina puta koji se umanjuje

S vremenom čovjek nauči da je najbolja praksa u pravilu ne duplirati kôd, odnosno algoritam. Znači, ako na dva mjesta radiš istu stvar, onda je najpametnije to izdvojiti u funkciju, iz više razloga. Jedan je upravo taj što ako se poveća broj mjesta na kojima moraš to napraviti, bezveze dupliraš kod ili se zapleteš u hijerarhijski strašnu strukturu (kao što bi se to dogodilo u primjeru koji si dao). Drugi je taj što, ako moraš mijenjati algoritam, to bi morao učiniti na više mjesta - to ti oduzima vrijeme, nepotrebno povećava kod i uvelike povećava mogućnost pogreške.

 

 

Floki kaže...

Uh, Chrome, iz nekog blesavog razloga uvijek njega prvog potežem, pa se sjetim kad mi odbije primiti kod{#}

 

 

Ja ga sam ga sad slučajno imao učitanog, inače koristim Firefox. Vidim sad - samo problemi s Chromeom na forumu.

17 godina
offline
Programiranje u C++-u - pitanja i odgovori

Ok, znam da bi to trebalo u funkciju, klasu još bolje

valjda su mu to zadaci s natjecanja, idu po sistemu grab and run

što je tražio , ja napisao

naravno da bi to napravio u nekakvoj funkciji da mi treba takav kod, ako bi mi npr friend donio dionice sa svojih biciklističkih tura

unaprijed ne bi znao koliko je dionica vozio

a da je munjela, jest, opali iz Zadra biciklom do Vukovara{#}

 

u stvari ja bi napisao bool funkciju, a pozivao bi je while petljom sa uvjetom dok je varijablja polaPuta veća od dionice da vrti petlju.

Poruka je uređivana zadnji put sub 5.11.2011 15:20 (Floki).
 
0 0 hvala 0
17 godina
offline
Programiranje u C++-u - pitanja i odgovori

Evo, na ovo sam mislio, funkcija je zasebna, i nije je briga koliko dionica ima.

jedan od temeljnih postulata - izbjegavanje dupliranja koda je ispunjen

ali, pitanje je bi li mu ovo uvažili na natjecanju - tražili su samo primjenu if grananja na fiksni broj dionica

lako se može desiti - napišeš bolje, dobiješ lošije.

 

 

#include<iostream>
using namespace std;

bool Putovanje(double& polaPuta, int& poljeSati, int& poljeBrzine, double& vrijeme)
{
    if(polaPuta > poljeSati * poljeBrzine)
    {
       polaPuta -= poljeSati * poljeBrzine;
       vrijeme += poljeSati;
       return true;
    }
    else
    {
       vrijeme += polaPuta / poljeBrzine;
       return false;
    }
}

int main()
{
    int brojDionica;
    cout << "Unesi broj dionica: ";
    cin>> brojDionica;
    int *poljeSati = new int[brojDionica];
    int *poljeBrzine = new int[brojDionica];
    double polaPuta = 0, vrijeme = 0;
    for(int i=0; i<brojDionica; i++)
    {
       cout<< "Unesi vrijeme " <<i+1 << ". dionice <h>: ";
       cin>> poljeSati[i];
       cout<< "Unesi brzinu " << i+1 << ". dionice <km/h>: ";
       cin>> poljeBrzine[i];
       polaPuta += poljeSati[i] * poljeBrzine[i];
    }
    polaPuta = polaPuta / (double)2;
    int j = -1;
    do
    {
       j++;

    }while(Putovanje(polaPuta, poljeSati[j], poljeBrzine[j], vrijeme));
    cout<< "Vrijeme potrebno za prijeci pola puta: " << vrijeme << endl;
    delete [] poljeSati;
    delete [] poljeBrzine;
    return 0;
}

Poruka je uređivana zadnji put sub 5.11.2011 17:42 (Floki).
 
1 0 hvala 0
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Floki kaže...

Ne treba varijablu polaPuta svoditi na 0, ona mora biti u jednoj od tri dionice, prolaskom dionice je smanjimo za tu dionicu, gdje je manja od dionice, stajemo.

 

 

#include<iostream>
using namespace std;


int main()
{
    int t1, t2, t3, v1, v2, v3;
    double vrijeme;
    cin>> t1 >> v1 >> t2 >> v2 >> t3 >> v3;
    double polaPuta = (t1*v1 + t2*v2 + t3*v3) / (double)2;
    if(polaPuta > t1*v1)
    {
       vrijeme =  t1;
       polaPuta -= (t1*v1);      // ako je pola puta izvan prve dionice
       if(polaPuta > t2*v2)
       {
          vrijeme += t2;
          polaPuta -= (t2*v2);
          vrijeme += (polaPuta / v3);     // ako je pola puta u trećoj dionici
       }
       else
       {
          vrijeme += (polaPuta / v2);      // ako je pola puta u drugoj dionici
       }
    }
    else
    {
       vrijeme = (polaPuta / v1);  // ako je pola puta u prvoj dionici
    }
    cout << vrijeme << endl;
    return 0;
}

Nisam razumio u tvom kodu zasto si stavljao polaPuta -= a ne samo =?? ili +=??

 

 

http://www.bug.hr/forum/topic/softver-literatura-usluge/prodaja-knjige-hardware/103166.aspx
17 godina
moderator
offline
Re: Programiranje u C++-u - pitanja i odgovori
Intelovac123 kaže...

Nisam razumio u tvom kodu zasto si stavljao polaPuta -= a ne samo =?? ili +=??

A ja ne razumijem zašto postavljaš glupo pitanje. Ne znaš što operator -+ znači ili što? Algoritam sam ti napisao u ovoj poruci. Čitaj što ti ljudi odgovaraju da ne bi postavljao glupa pitanja. {#}

17 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
mbaksa kaže...

 

  • Ako si u jednoj dionici prošao manje ili jednako preostalom putu (to ti je inicijalno polovica ukupnog puta, odnosno sadržaj varijable put), onda je jasno da ćeš varijablu put smanjiti za prijeđeni put (v*t), a varijablu vrijeme uvećati za vrijednost t - i ideš na sljedeću dionicu.

Na ovo gore ti je mbaksa mislio kad je rekao da čitaš

polaPuta -= t1*v1; je isto kao

polaPuta = polaPuta - (t1*v1);

 

(kod je manje više implementacija tog algoritma koji je on napisao - a takvi zadaci se i rješavaju da se osmisli algoritam, pa pretoči u kod)

Poruka je uređivana zadnji put ned 6.11.2011 12:42 (Floki).
17 godina
moderator
offline
Re: Programiranje u C++-u - pitanja i odgovori
Floki kaže...
polaPuta -= t1*v1; je isto kao

polaPuta = polaPuta - (t1*v1);

To je jedna šteta koju jezici poput Basica rade početnicima - uopće ne treba govoriti da je to isto, jer prirodan je ovaj prvi način, koji kaže umanji varijablu polaPuta za vrijednost t1*v1.

 

Ovo drugo, čemu moraju pribjegavati programeri koji rade u jezicima koji nemaju operatore za uvećavanje/umanjivanje brojeva, je neprirodno.

 

Inače, i Pascal ima operatore za uvećavanje i umanjivanje, samo što se rjeđe koriste - problem je što nema znakovne operatore za to, nego u biti funkcije Inc i Dec.

17 godina
offline
Programiranje u C++-u - pitanja i odgovori

Uglavnom, treba uočiti jednu stvar, ako će rješavati ovakve zadatke, bit posla i najteži dio je osmisliti algoritam

a sintaksa jezika je alat za pretočiti algoritam u kod.

Poruka je uređivana zadnji put ned 6.11.2011 12:53 (Floki).
 
2 0 hvala 0
16 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

To je jedna šteta koju jezici poput Basica rade početnicima - uopće ne treba govoriti da je to isto, jer prirodan je ovaj prvi način, koji kaže umanji varijablu polaPuta za vrijednost t1*v1.

 

Ovo drugo, čemu moraju pribjegavati programeri koji rade u jezicima koji nemaju operatore za uvećavanje/umanjivanje brojeva, je neprirodno.

 

Inače, i Pascal ima operatore za uvećavanje i umanjivanje, samo što se rjeđe koriste - problem je što nema znakovne operatore za to, nego u biti funkcije Inc i Dec.

Ovo me sve lijepo podsjeća zašto ne volim Basic ili slične  :)

 

Private
17 godina
moderator
offline
Re: Programiranje u C++-u - pitanja i odgovori
Private kaže...

To je jedna šteta koju jezici poput Basica rade početnicima - uopće ne treba govoriti da je to isto, jer prirodan je ovaj prvi način, koji kaže umanji varijablu polaPuta za vrijednost t1*v1.

 

Ovo drugo, čemu moraju pribjegavati programeri koji rade u jezicima koji nemaju operatore za uvećavanje/umanjivanje brojeva, je neprirodno.

 

Inače, i Pascal ima operatore za uvećavanje i umanjivanje, samo što se rjeđe koriste - problem je što nema znakovne operatore za to, nego u biti funkcije Inc i Dec.

Ovo me sve lijepo podsjeća zašto ne volim Basic ili slične  :)

Manjak ljubavi prema Basicu ima posve racionalna, argumentirana opravdanja. Bilo mi se fora s njim igrati u osnovnoj školi i u petljama iscrtavati kružnice u cijanu, ali vrlo brzo shvatiš da je Basic živi užas - čim prije se upoznaš s nekim normalnim programskim jezikom, tim prije to uvidiš. {#}

16 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

Program koji za osvojeni broj bodova ispisuje ocjenu, samo sa switch. Malo majmuniranja, ali ide :)

 

#include <stdio.h>

int main()
{
    int bodovi=81;
    switch ((bodovi-1)/20)
    {
        case 0:
            printf("Kulja");
            break;

        case 1:
            printf("Labud");
            break;

       case 2:
            printf("Trojka");
            break;

        case 3:
            printf("Cetvorka");
            break;

        case 4:
            printf("Streber");
            break;
    }
return 0;
}

Poruka je uređivana zadnji put ned 6.11.2011 16:44 (Yawriats).
17 godina
moderator
offline
Re: Programiranje u C++-u - pitanja i odgovori
Yawriats kaže...

Program koji za osvojeni broj bodova ispisuje ocjenu, samo sa switch. Malo majmuniranja, ali ide :)

Indentacija! Ne uvlačiš redove gdje bi trebao! Zbog toga ti je nepregledno. To treba izgledati otprilike ovako:

 

        case 0:
          printf("Kulja");
          break;
       
        case 1:
          printf("Labud");
          break;

Uz uvlačenje, korisno je stavljati i jedan red prazno - s tim još dodatno dobiva na preglednosti.

16 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori
Napravio sam copy/paste, gdje su uopce start i end code tagovi? Tko je radio ovaj forum software? :)
 
0 0 hvala 0
17 godina
moderator
offline
Re: Programiranje u C++-u - pitanja i odgovori
Yawriats kaže...
Napravio sam copy/paste, gdje su uopce start i end code tagovi? Tko je radio ovaj forum software? :)

Editor nije Bugov - to je open-source editor. I on nema tagove. Ako kôd hoćeš pasteati ovako kako sam ja, onda prvo za stil odaberi Kôd pa tek onda pasteaj.

17 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
mbaksa kaže...

To je jedna šteta koju jezici poput Basica rade početnicima - uopće ne treba govoriti da je to isto, jer prirodan je ovaj prvi način, koji kaže umanji varijablu polaPuta za vrijednost t1*v1.

...

"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."

    -Edsger W. Dijkstra

C provides a programmer with more than enough rope to hang himself. C++ provides a firing squad, blindfold and last cigarette.
17 godina
moderator
offline
Re: Programiranje u C++-u - pitanja i odgovori
1domagoj1 kaže...
mbaksa kaže...

To je jedna šteta koju jezici poput Basica rade početnicima - uopće ne treba govoriti da je to isto, jer prirodan je ovaj prvi način, koji kaže umanji varijablu polaPuta za vrijednost t1*v1.

...

"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."

    -Edsger W. Dijkstra

LOL Sva sreća da me nitko nije učio QBasic, nego sam samo sam pokušavao nešto nabadati po njemu i nisam daleko došao pa sam onda počeo nabadati po Turbo Pascalu i zaboravio na Basic. A nije da Basicu nisam dao šanse. Čak sam i probao Turbo Basic, jer je mogao napraviti .exe datoteku. Ali... Nije išlo, jednostavno nije bilo ljubavi imeđu mene i Basica.

E-mail:
Lozinka:
 
vrh stranice