Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- За еден природен број а велиме дека е порамнување на друг природен број b ако и само ако цифрите еднакви на 9 во бројот b се заменети со цифрата 7 во бројот а.
- Пример. Бројот 734775 е порамнување на бројот 934795.
- Од стандарден влез се внесуваат непознат број на цели броеви (не повеќе од 100), се додека не се внесе нешто што не може да се интерпретира како цел број.
- Ваша задача е да ги отпечатите најмалите 5 од порамнувањата на сите внесени броеви, по редослед од најмалиот кон најголемиот.
- Забелешка: Доколку се внесат помалку од 5 броеви, тогаш печатите толку броеви колку што се соодветно внесени.
- Наоѓањето на порамнувањето на даден број треба да се реализира во посебна рекурзивна функција poramnet(int a).
- Пример.
- За броевите: 9592, 69403, 100007, 6, 987, 6977, 33439,
- треба да се најдат нивните порамнувања ( тоа се: 7572, 67403, 100007, 6, 787, 6777 и 33437, соодветно),
- и да се отпечатат најмалите 5 од нив по овој редослед: 6 787 6777 7572 33437.
- ЗАБРАНЕТО е користење на глобални променливи.
- */
- #include <stdio.h>
- #include <string.h>
- #include <math.h>
- int poramnet(int a,int new,int position){
- if(a == 0){
- return new;
- }
- int cifra = a%10;
- if(cifra == 9){
- cifra = 7;
- }
- new = cifra * pow(10,position) + new;
- return poramnet((a/10),new,position+1);
- }
- int main(){
- int a,i=0, n , j;
- int niza[100];
- while(scanf("%d",&a)){
- niza[i] = poramnet(a,0,0);
- i++;
- }
- n=i;
- for(i=0;i<n;i++){
- for(j=0;j<n;j++){
- if(niza[i]<niza[j]){
- int pom=niza[j];
- niza[j] = niza[i];
- niza[i] = pom;
- }
- }
- }
- for(i=0;i<n;i++){
- if(i<5){
- printf("%d ", niza[i]);
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement