Centar za edukaciju-BiH



#11 18.12.2013 20:31
mirsadz Van mreze
Administrator
Registrovan od:26.05.2011
Postovi:48


Predmet:Re: C Zadaci za ispit - pomoc
Evo i zadatak broj 10. Happy

PreuzmiIzvorni kôd (C++):
  1. /*---------------------------------------------------------------------
  2.   Rjesenje zadatka broj 10.
  3.   E-mail: prowider@icentar.ba
  4.   Author: Mirsad
  5.   Date: 18.12.13 20:20
  6.   Description: Sa tastature se zahtijeva unos jednog broja.
  7.   Ako uneseni broj ima neparan broj cifara, na ekranu
  8.   ispisati srednju cifru, a ako je broj cifara paran,
  9.   na ekranu ispisati dvije "srednje" cifre.
  10. ----------------------------------------------------------------------*/
  11.  
  12.  
  13. #include <iostream>
  14. #include <cmath>
  15. using namespace std;
  16.  
  17. int main()
  18. {
  19.     int broj,orgb,brojac1=0,brojac2=0,poz;
  20.     float decimalni=0,cijeli=0,srednji;
  21.     cout<<"Unesi broj =>";
  22.     cin>>broj;
  23.     orgb=broj;
  24.     while (broj!=0)
  25.     {
  26.     broj=broj/10;
  27.     brojac1++;
  28.     }
  29.      poz=brojac1/2;
  30.      broj=orgb;
  31.      if (brojac1<=2) goto kraj;            
  32.     while (broj!=0)
  33.     {
  34.     brojac2++;                
  35.         if (poz ==brojac2)
  36.         {    
  37.           cijeli=broj;        
  38.           decimalni=cijeli/100;
  39.           srednji = modf (decimalni, &cijeli);
  40.           if (brojac1 % 2==0)
  41.           {  
  42.           broj=srednji*100;
  43.           }
  44.           else
  45.           {
  46.           broj=srednji*10;
  47.           }
  48.           goto kraj;
  49.         }
  50. broj=broj/10;  
  51.     }    
  52. kraj:
  53. cout <<"SREDNJA CIFRA BFOJA JE: " <<broj<< endl;
  54. system("PAUSE");
  55. return 0;
  56. }    
↑  ↓

#12 21.12.2013 00:16
dex Van mreze
Super Moderator
Registrovan od:23.02.2012
Postovi:625


Predmet:Re: C Zadaci za ispit - pomoc
Zadatak 11 glasi: Odrediti da li POSTOJI broj koji je unesen TACNO 3 puta.
Zadatak je dat da se vidi kako se djaci snalaze sa naredbama za prisilno upravljanje petljama.

pogledati
http://www.programiz.com/...-statement

U ovom zadatku imamo dve petlje, spoljnu i unutrasnju.
U spoljnoj uzima jedan po jedan clan niza, pa u unutrasnjoj proverava jos koliko istih clanova ima . Po izlasku iz unutrasnje proveravamo da li se clan ponavlja tri puta i ako se ponavlja nasilno prekidamo petlju, saopstavamo rezultat i zavrsavamo program.
Unutrasnju petlju ne smemo nasilno da prekinemo, jer moramo da proverimo da se broj ne sadrzi 4 ili vise puta. Ako program prodje kroz obe petlje i ne prekine se nasilno saopstavamo da takav broj ne postoji. Unutrasnja petlje mora da krene od 0, a ne od i+1 jer ako imamo na primer imali niz 1, 4, 2, 4, 4, 4, 5 ... druga cetvorka bi prekinula petlju i prijavila 4 kao broj koji se javlja TACNO 3 puta. Kao uslov postavljamo =4, jer svaki broj po jednom uporedjujemo i sa samim sobom.

Da je zadatak glasio koji je unesen tri ili vise puta, unutrasnja petlja bi mogla da startuje od i+1. Onda bi uslov za prekid stavili u okviru unutrasnje petlje, i cim naidje broj koji se ponavlja tri puta prekidamo obe petlje, saopstimo rezultat i kraj programa.

Prepravio sam Mirsadov kod, valjda je sve gramaticki ispravno, nemam kompajler da proverim
PreuzmiIzvorni kôd (C++):
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main()
  5. {
  6.    int broj ;
  7.    int prolaz = 0;
  8.    int k[20] ;
  9.    cout<<"Unesite 20 brojeva\n";
  10.    for (i=0;i<20;i++)
  11.    {
  12.        cout<<i+1<<"=> ";
  13.        cin>>niz[i];        
  14.    }
  15.    for (i=0;i<20;i++)
  16.    {
  17.        for (j=0;j<20;j++)
  18.         {
  19.            if(niz[i]==niz[j])
  20.            {
  21.            prolaz++;          
  22.            }        
  23.          }
  24.    if(prolaz==4)
  25.                        {                  
  26.            broj=niz[i];
  27.                    break
  28.                        }
  29.                         prolaz = 0 ;
  30.     }
  31.     if(prolaz==4)
  32.    {
  33.    cout<<"Broj: "<<broj<<" se ponavlja tacno 3 puta"<<endl;
  34.    }
  35.    else
  36.    {
  37.    cout<<"Nijedan broj se ne ponavlja tacno 3 puta"<<endl;
  38.    }
  39.    
  40.    
  41. system ("pause");
  42. return 0;
  43. }

P.S. 10. zadatak je resen na veoma interesantan nacin, ali zar nije bilo jednostavnije da se broj pretvori u string i rade operacije sa stringovima Happy
↑  ↓

#13 21.12.2013 09:39
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,642


Predmet:Re: C Zadaci za ispit - pomoc
Citat:
P.S. 10. zadatak je resen na veoma interesantan nacin, ali zar nije bilo jednostavnije da se broj pretvori u string i rade operacije sa stringovima

Da mislim da bi mnogo bilo lakse sa stringovima samo je pitanje sta bi na to profesor rekao.
I ja sam jedan cini mi se tako uradio mada znam da neki profesori nedaju koristiti dodatne biblioteke.
Podrska samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#14 22.12.2013 20:58
dex Van mreze
Super Moderator
Registrovan od:23.02.2012
Postovi:625


Predmet:Re: C Zadaci za ispit - pomoc
Citat:
I ja sam jedan cini mi se tako uradio mada znam da neki profesori nedaju koristiti dodatne biblioteke.

Bogami surovo!
Čuo sam priče o nekim profesorima Jave koji zahtevaju da se sav kod i GUI (raspored kontrola i dizajn formi ) piÅ¡u ručno u Notpedu!
↑  ↓

#15 22.12.2013 21:43
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,642


Predmet:Re: C Zadaci za ispit - pomoc
Po meni trebalo bi ocjenjivati ideje na koji nacin je nesto uradjeno a sitne greske u kodu se isprave a i naredbe se vremenom nauce ako radis.

Mogu ih razumjeti kada nedaju biblioteke koristiti jer te tjera da razmisljas kako uraditi ali kucanje u notepadu bas je ludost.
Podrska samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#16 13.07.2017 20:06
itiankongu Van mreze
Clan
Registrovan od:13.07.2017
Postovi:4



Stranice (2):1,2


Sva vremena su GMT +01:00. Trenutno vrijeme: 12: 05 am.