Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #define MAX 100
- /*
- За еден природен број а велиме дека е порамнување на друг природен број 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.
- ЗАБРАНЕТО е користење на глобални променливи.
- For example:
- Input
- 5
- 6
- 8
- 9
- 9
- 9
- 9
- y
- Result
- 5 6 7 7 7
- */
- int poramnet(int broj){
- if (broj < 10){
- if (broj%10 == 9){
- return 7;
- }
- else{
- return broj;
- }
- }
- int sum = poramnet(broj/10);
- if (broj%10 == 9){
- return sum*10 + 7;
- }
- else{
- return sum*10 + broj%10;
- }
- }
- void sort(int *niza, int n){
- int i,j,temp;
- for (i=0;i<n;i++){
- for (j=0;j<n-1-i;j++){
- if (*(niza+j) > *(niza+j+1)){
- temp = *(niza+j);
- *(niza+j) = *(niza+j+1);
- *(niza+j+1)= temp;
- }
- }
- }
- }
- int main(){
- int n=0,i,niza[MAX],broj;
- while(scanf("%d",&broj)){
- niza[n] = poramnet(broj);
- n++;
- }
- sort (niza,n);
- if (n>5){
- n = 5;
- }
- for (i=0;i<n;i++){
- printf("%d ",niza[i]);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement