Centar za edukaciju-BiH



#1 13.12.2013 11:33
Amelasar Van mreze
Clan
Registrovan od:07.04.2011
Postovi:303


Predmet:C Zadaci za ispit - pomoc
Prijateljica mi ide na fax (tehnicko) i imaju ispit iz programiranja i to u C. Ja joj nemogu pomoci. Moze li neko rijesiti neki od zadataka da joj mogu bar malo objasniti:

1. Sa tastature se unosi broj n, a potom jos i n brojeva koji se cuvaju u nizu. Odrediti koliko brojeva
ima osobinu da im je krajnja lijeva cifra jednaka krajnjoj desnoj.

2. Sa tastature se unosi broj k i broj n. Odrediti sve zajednicke djelioce ova dva broja.

3. Sa tastature se unosi broj n, a nakon toga i n brojeva koji se cuvaju u nizu. Nakon unosa niza se
unose jos dva broja, k i r. Na ekranu ispisati k-ti, (k + r)-ti, (k + 2r)-ti itd. element niza.

4. Sa tastature se unosi broj k. Odrediti sve brojeve manje od 10000 koji imaju iste proste faktore
kao broj k.

5. Sa tastature se unosi broj n, a potom jos n brojeva koji se cuvaju u nizu. Na osnovu tog niza
formirati novi niz koji se sastoji samo od onih brojeva koji su treci stepen nekog cijelog broja.
Dozvoljeni su i negativni brojevi.

6. Sa tastature se unosi broj n, a potom jos i n brojeva koji se cuvaju u nizu. Odrediti da li niz
ima osobinu da je prvi element jednak posljednjem, drugi pretposljednjem, treci jednak trecem od
natrag itd.

7. Sa tastature se unosi broj n, a potom jos i n brojeva koji se cuvaju u nizu. Odrediti par elemenata
niza koji su na najvecem rastojanju.

8. Sa tastature se unosi broj n, a potom jos i n brojeva koji se cuvaju u nizu. Sortirati niz, a kriterijum
za sortiranje je najveca cifra, tj. broj b1 ≼ b2 akko najveca cifra(b1) ≤ najveca cifra(b2).

9.Sa tastature se unosi broj n, a potom jos i n brojeva. Odrediti koliko brojeva ima osobinu da im je
krajnja lijeva cifra jednaka krajnjoj desnoj.

10. Sa tastature se zahtijeva unos jednog broja. Ako uneseni broj ima neparan broj cifara, na ekranu
ispisati srednju cifru, a ako je broj cifara paran, na ekranu ispisati dvije "srednje" cifre.

11. Sa tastature se unosi 20 brojeva, s tim sto se neki brojevi mogu i ponavljati. Odrediti da li postoji
broj koji je unesen tacno 3 puta.

12. Napisati funkciju f1 koja za dati broj n odreduje najmanji prost broj koji je njegov djelilac. Sa
tastature se unosi niz od 20 brojeva. Sortirati elemente niza po kriterijumu de nisanom pomocu
funkcije f1 (broj a je "manji ili jednak" od broja b akko f1(a)  f1(b)).

SVAKA POMOC BI DOBRO DOSLA. HVALA UNAPRIJED.
Pozdrav, Amela
↑  ↓

#2 13.12.2013 17:58
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,642


Predmet:Re: C Zadaci za ispit - pomoc
Evo prvi zadatak.
Neka provjeri posto sam radio u C++.
Citat:
1. Sa tastature se unosi broj n, a potom jos i n brojeva koji se cuvaju u nizu. Odrediti koliko brojeva
ima osobinu da im je krajnja lijeva cifra jednaka krajnjoj desnoj.
PreuzmiIzvorni kôd (C++):
  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4.  
  5. int main ()
  6. {
  7. int n,i,duzina,brojac=0;
  8. string str_broj,str;
  9.  
  10. cout << "Niz od:" << endl;  
  11. cin >>n;
  12. string  niz[n],iste[n];
  13.         for (i=0; i<n; i++)
  14.         {
  15.         cout << "unesi broj:" << endl;
  16.         cin>>str_broj;
  17.         std::string prvib= str_broj.substr (0,1);
  18.         duzina=str_broj.size()-1;
  19.         std::string zadnjib= str_broj.substr (duzina,1);
  20.         niz[i]=str_broj;
  21.             if (prvib==zadnjib)
  22.             {
  23.             brojac++;                  
  24.             iste[i]=str_broj;                  
  25.             }
  26.        
  27.         }
  28.         system("cls");
  29.         cout <<"uneseni brojevi su:" <<  endl;
  30.         for (i=0; i<n; i++)
  31.         {
  32.          cout <<niz[i]<<  endl;    
  33.         }
  34.         cout <<"_______________" <<  endl;  
  35.     if (brojac>0)
  36.     {
  37.        cout <<"iste prva i zadnja:" <<endl;        
  38.         for (i=0; i<n; i++)
  39.         {
  40.               str=iste[i];
  41.               if (str != "")
  42.               {      
  43.               cout <<str<<  endl;                            
  44.               }  
  45.         }            
  46.     }
  47.     else
  48.     {
  49.      cout <<"Nema istih" <<  endl;    
  50.     }    
  51. system("PAUSE");
  52. return 0;  
  53. }

Podrska samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#3 13.12.2013 18:36
Amelasar Van mreze
Clan
Registrovan od:07.04.2011
Postovi:303


Predmet:Re: C Zadaci za ispit - pomoc
Hvala puno. Jel moze malo objasnjenje koda?
Moze li koristiti DEV C++ ili ide neki drugi?
Pozdrav, Amela
↑  ↓

#4 13.12.2013 19:46
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,642


Predmet:Re: C Zadaci za ispit - pomoc
da u dev je i radjeno.
U Sad imam sijelo pa cu sutra bar nesto opisati i jos koji uraditi.
Drugi je lagan pa kontam mozda jos neko uradi koji.
Podrska samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#5 13.12.2013 20:18
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,642


Predmet:Re: C Zadaci za ispit - pomoc
evo sa objasnjenjem.
PreuzmiIzvorni kôd (C++):
  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4.  
  5. int main ()
  6. {
  7. int n,i,duzina,brojac=0;// dimenzionisanje variabli
  8. string str_broj,str;//Dimenzionisanje variabli
  9.  
  10. cout << "Niz od:" << endl;  //Tekst na konzoli u komand promptu
  11. cin >>n;// unos vrijednosti sa tastature u var n
  12. string  niz[n],iste[n];// dimenzionisanje niza
  13.         for (i=0; i<n; i++)// for petlja broji od 0 do broja unesenih variabli
  14.         {
  15.         cout << "unesi broj:" << endl; // tekst
  16.         cin>>str_broj; // unos vrijednosti broja
  17.         std::string prvib= str_broj.substr (0,1);// prva cifra od unesenog broja
  18.         duzina=str_broj.size()-1;//Duzina odnosno broj cifri
  19.         std::string zadnjib= str_broj.substr (duzina,1);//Zadnja cifra od broja
  20.         niz[i]=str_broj;// Unos broja u variablu niz
  21.             if (prvib==zadnjib)// provjera dali je zadnji i prvi isti
  22.             {
  23.             brojac++; // broji broj prolaza za one koji su isti            
  24.             iste[i]=str_broj;//Upis u niz iste broja koji ima iste cifre                  
  25.             }//Kraj ifa uslova dali su iste
  26.        
  27.         }// kraj for petlje
  28.         system("cls");// brise ekran
  29.         cout <<"uneseni brojevi su:" <<  endl;// ispis na ekran
  30.         for (i=0; i<n; i++)// Petlja broji od 0 do broja unesenih brojeva
  31.         {
  32.          cout <<niz[i]<<  endl; // ispis Unesenih brojeva iz memorijske niz    
  33.         }
  34.         cout <<"_______________" <<  endl;  // ispis obicne linije
  35.     if (brojac>0)// Ako je brojac veci od 0 onda kod ispod
  36.     {
  37.        cout <<"iste prva i zadnja:" <<endl; // ispis na ekran        
  38.         for (i=0; i<n; i++)// for petlja broji od o do broj unesenih
  39.         {
  40.               str=iste[i];//upis u str iz memorijke niz
  41.               if (str != "")// ako je str razli
  42. ito od prazan strin tada kod ispod
  43.               {      
  44.               cout <<str<<  endl;   //Ispisi na ekran str                        
  45.               } //Kraj ifa  
  46.         } // kraj for petlje            
  47.     }//Kraj ifa od brojaca
  48.     else //inace od ifa brojac>0
  49.     {
  50.      cout <<"Nema istih" <<  endl;   //ispis na kran da nema istih
  51.     }    
  52. system("PAUSE");// cekanje na pritisak bilo kog tastera
  53. return 0; // procedura vraca 0  
  54. }

Podrska samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#6 14.12.2013 11:35
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,642


Predmet:Re: C Zadaci za ispit - pomoc
Citat:
2. Sa tastature se unosi broj k i broj n. Odrediti sve zajednicke djelioce ova dva broja.

PreuzmiIzvorni kôd (C++):
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main ()
  5. {
  6. int prvi_broj,drugi_broj,brojac,i,djelioc,ostatak,djeljiv=0;
  7. cout << "Unesi prvi broj:" << endl;
  8. cin >>prvi_broj;
  9. cout << "Unesi drugi broj:" << endl;
  10. cin >>drugi_broj;
  11. if(prvi_broj>drugi_broj)
  12. {
  13. brojac=drugi_broj;                        
  14. }
  15. else
  16. {
  17. brojac=prvi_broj;
  18. }//Kraj ifa
  19. cout << "Zajednicki djelioci su" << endl;
  20. for (i=1; i<=brojac; i++)
  21. {
  22.     if ( prvi_broj % i == 0 )
  23.     {
  24.     djeljiv++;    
  25.     }
  26.     if ( drugi_broj % i == 0 )
  27.     {
  28.     djeljiv++;    
  29.     }
  30.     if ( djeljiv==2 )
  31.     {
  32.     cout <<i<<  endl;  
  33.     }
  34.     djeljiv=0;
  35. }
  36.  
  37. system("PAUSE");
  38. return 0;  
  39. }

Podrska samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#7 14.12.2013 13:01
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,642


Predmet:Re: C Zadaci za ispit - pomoc
Citat:
3. Sa tastature se unosi broj n, a nakon toga i n brojeva koji se cuvaju u nizu. Nakon unosa niza se
unose jos dva broja, k i r. Na ekranu ispisati k-ti, (k + r)-ti, (k + 2r)-ti itd. element niza.
ako sam dobro razumio pisca ove kreacije.

PreuzmiIzvorni kôd (C++):
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main ()
  5. {
  6. int n,i,k,r,zbir;
  7.  
  8. cout << "Niz od:" << endl;
  9. cin >>n;
  10. cout << "Unesi niz:" << endl;
  11. int  niz[n];
  12.         for (i=1; i<=n; i++)
  13.         {
  14.          cin >>niz[i];  
  15.         }
  16. cout << "Unesi k:" << endl;
  17. cin >>k;
  18. cout << "Unesi r:" << endl;
  19. cin >>r;
  20. if (k<=n)
  21. {
  22. cout << "k-ti element niza:" << endl;
  23. cout<<niz[k]<< endl;
  24. }
  25. else
  26. {
  27. cout << "Ne postoji:" << endl;
  28. goto stop;
  29. }
  30. zbir=k+r;
  31. if (zbir<=n)
  32. {
  33. cout << "k+r  element niza:" << endl;
  34. cout<<niz[zbir]<< endl;
  35. }
  36. else
  37. {
  38. cout << "Ne postoji:" << endl;
  39. goto stop;    
  40. }    
  41.         for (i=2; i<=n; i++)
  42.         {
  43.         zbir=k+r*i;
  44.             if (zbir<=n)
  45.             {  
  46.             cout << "k+" <<i<< "r element niza"<< endl;
  47.             cout<<niz[zbir]<< endl;
  48.             }
  49.             else
  50.             {
  51.             goto stop;
  52.             }    
  53.         }
  54. stop:                                
  55. system("PAUSE");
  56. return 0;
  57.      
  58. }

Podrska samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#8 14.12.2013 14:34
Amelasar Van mreze
Clan
Registrovan od:07.04.2011
Postovi:303


Predmet:Re: C Zadaci za ispit - pomoc
Hvala puno. Ispit je polovinom januara pa ima vremena, a i ja da nesto naucim. Hvala.
Pozdrav, Amela
↑  ↓

#9 14.12.2013 21:31
dex Van mreze
Super Moderator
Registrovan od:23.02.2012
Postovi:625


Predmet:Re: C Zadaci za ispit - pomoc
Ne poznajem naredbe C-a, ali bih da primetim da je kod 5 zadatka poenta u tome da se kao uslov ne uzme

pow(x, 0.3333) = round(pow(x, 0.3333))

vec

abs(pow(x,0.3333) - round(pow(x, 0.3333)) < 0.00001

Naime racunari kod izracunavanja vrse zaokruzivanje. Tako da je moguce da se razkuju u 17-toj decimali. Uostalom, kubni koren je pow(x, 0.33333333333...)

Probajte da provrtite kroz petlju, na primer od 1 do 100

If (pow(sqrt(x), 2) == x // da li je kvadrat korena nekog broja jednak tom broju
cout << "Isti su " << endl;
else
cout << "Nisu isti" << endl;

Iznenadicete se rezultatom!

Pravilo koje vazi uopste u programiranju:

Ako imamo

a = neko izracunavanje;
b = neko drugo izracunavanje ili neki broj;

nepravilno je

if (a == b)

vec treba

if ( abs(a - b) < 0.00001)

jer je moguce da se zbog zaokruzivanja pri racunanju razlika javi na ko zna kojoj decimali

ps. radi se o pseudo – kodu, ne poznajem sintaksu C-a
↑  ↓

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


Predmet:Re: C Zadaci za ispit - pomoc
Evo rjesenje zadatka broj 11. Grinning

PreuzmiIzvorni kôd (C++):
  1. /*---------------------------------------------------------------------
  2.   Rjesenje zadatka broj 11.
  3.   E-mail: prowider@icentar.ba
  4.   Author: Mirsad
  5.   Date: 18.12.13 20:11
  6.   Description: Sa tastature se unosi 20 brojeva,
  7.   s tim sto se neki brojevi mogu i ponavljati. Odrediti da li postoji
  8.   broj koji je unesen tacno 3 puta.
  9. ----------------------------------------------------------------------*/
  10.  
  11.  
  12. #include <iostream>
  13. using namespace std;
  14.  
  15. int main()
  16. {
  17.    int i,niz[19],n,prolaz=1,broj=0;
  18.    cout<<"Unesi 20 brojeva\n";
  19.    for (i=0;i<20;i++)
  20.    {
  21.        cout<<i+1<<"=> ";
  22.        cin>>niz[i];        
  23.    }
  24.    for (i=0;i<20;i++)
  25.    {
  26.        for (n=i+1;n<20;n++)
  27.         {
  28.            if(niz[i]==niz[n])
  29.            {
  30.            prolaz++;
  31.          
  32.            if(prolaz>2)
  33.                        {                  
  34.            broj=niz[i];
  35.                        }
  36.                        
  37.            }        
  38.          }
  39.    prolaz=1;    
  40.     }
  41.     if(broj>0)
  42.    {
  43.    cout<<"Broj: "<<broj<<" se ponavlja"<<endl;
  44.    }
  45.    
  46.    
  47. system ("pause");
  48. return 0;
  49. }
↑  ↓

Stranice (2):1,2


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