kburnik

Zadatak MinZnam: Kristijan Burnik

Jan 24th, 2012
91
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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. }
RAW Paste Data

Adblocker detected! Please consider disabling it...

We've detected AdBlock Plus or some other adblocking software preventing Pastebin.com from fully loading.

We don't have any obnoxious sound, or popup ads, we actively block these annoying types of ads!

Please add Pastebin.com to your ad blocker whitelist or disable your adblocking software.

×