Advertisement
Chris2o2

Рекурзија

Dec 5th, 2022
421
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.50 KB | None | 0 0
  1. /*
  2. За еден природен број а велиме дека е порамнување на друг природен број b ако и само ако цифрите еднакви на 9 во бројот b се заменети со цифрата 7 во бројот а.
  3. Пример. Бројот 734775 е порамнување на бројот 934795.
  4. Од стандарден влез се внесуваат непознат број на цели броеви (не повеќе од 100), се додека не се внесе нешто што не може да се интерпретира како цел број.
  5. Ваша задача е да ги отпечатите најмалите 5 од порамнувањата на сите внесени броеви, по редослед од најмалиот кон најголемиот.
  6. Забелешка: Доколку се внесат помалку од 5 броеви, тогаш печатите толку броеви колку што се соодветно внесени.
  7. Наоѓањето на порамнувањето на даден број треба да се реализира во посебна рекурзивна функција poramnet(int a).
  8. Пример.
  9. За броевите: 9592, 69403, 100007, 6, 987, 6977, 33439,
  10. треба да се најдат нивните порамнувања ( тоа се: 7572, 67403, 100007, 6, 787, 6777 и 33437, соодветно),
  11. и да се отпечатат најмалите 5 од нив по овој редослед: 6 787 6777 7572 33437.
  12. ЗАБРАНЕТО е користење на глобални променливи.
  13. */
  14.  
  15. #include <stdio.h>
  16. #include <string.h>
  17. #include <math.h>
  18.  
  19. int poramnet(int a,int new,int position){
  20.     if(a == 0){
  21.         return new;
  22.     }
  23.     int cifra = a%10;
  24.     if(cifra == 9){
  25.         cifra  = 7;
  26.     }
  27.    
  28.     new = cifra * pow(10,position) + new;
  29.    
  30.     return poramnet((a/10),new,position+1);
  31. }
  32.  
  33. int main(){
  34.    
  35.     int a,i=0, n , j;
  36.     int niza[100];
  37.     while(scanf("%d",&a)){
  38.         niza[i] = poramnet(a,0,0);
  39.         i++;
  40.     }
  41.     n=i;
  42.    
  43.     for(i=0;i<n;i++){
  44.         for(j=0;j<n;j++){
  45.             if(niza[i]<niza[j]){
  46.                 int pom=niza[j];
  47.                 niza[j] = niza[i];
  48.                 niza[i] = pom;
  49.             }
  50.         }
  51.     }
  52.    
  53.     for(i=0;i<n;i++){
  54.         if(i<5){
  55.             printf("%d ", niza[i]);
  56.         }
  57.     }
  58.    
  59.     return 0;
  60. }
  61.    
  62.    
  63.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement