Advertisement
kburnik

Zadatak MinZnam: Kristijan Burnik

Jan 24th, 2012
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.75 KB | None | 0 0
  1. /*
  2.     Zadatak: MinZnam
  3.      
  4.             Za niz od N cijelih brojeva (int), iz svakog dohvatiti najmanju
  5.             znamenku i od tih znamenki redom sastaviti novi broj
  6.             (proizvoljne duljine) kojeg ispisujemo.
  7.              
  8.     Rješenje: Kristijan Burnik, Udruga informatičara Božo Težak
  9.               GMail: kristijanburnik
  10.              
  11.     Složenost: O(N)
  12.                obrada znamenki koje mozemo zapisati s int podrazumijevano O(1)
  13.    
  14.    
  15.     Datum: 24.01.2012.
  16.    
  17.     Test primjer: [Ulaz]: 3 111 278 997 [Izlaz]: 127
  18.  
  19. */
  20. #include <iostream>
  21. #include <cstdlib>
  22.  
  23. using namespace std;
  24.  
  25. int najmanja_znamenka(int broj) {
  26.    
  27.     // za pretpostavljeni minimum uvijek uzimamo maksimalnu mogucu vrijednost
  28.     // koja ovdje iznosi 9
  29.     // a onda kad je moguce i korisno, rabimo prvi element iz zadanog niza
  30.     int minznam = 9;
  31.     // Cijepamo znamenke s desna na lijeve i tražimo minimum
  32.     while (broj > 0){
  33.         // izvuci najmanje značajnu znamenku
  34.         int znamenka = broj % 10;
  35.         // odredi novi mimimum
  36.         minznam = min (znamenka,minznam);
  37.         // ukoni obradjenu znamenku
  38.         broj /= 10;
  39.     }  
  40.     return minznam;
  41. }
  42.  
  43. int main(void) {
  44.    
  45.     // koliko cemo imati ulaza?
  46.     int n;
  47.     cin >> n;
  48.  
  49.     int broj; // trenutni broj koji obradjujemo
  50.     string izlaz; // izlazni string
  51.    
  52.     for (int i = 0; i < n ; i++) {
  53.         // unesi broj
  54.         cin >> broj;
  55.         // dohvati najmanju znamenku
  56.         int min = najmanja_znamenka(broj);
  57.         // pretvori znamenku u znak te napravi konkatenaciju na izlazni string
  58.         izlaz += (char)(min + '0');
  59.     }
  60.    
  61.     // ispisi izlazni string
  62.     cout << izlaz << endl;
  63.  
  64. //  system("pause");
  65.  
  66.  
  67.     return 0;
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement