Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Да се напише програма со која број даден во декаден броен систем ќе се претвори во тернарен (основа на тернарниот систем е 3, односно тернарните броеви
- може да бидат составени само од цифрите 0,1 и 2). Задачата да се реши со користење на рекурзивна функција.
- #include<stdio.h>
- void function(int n)
- {
- if(n==0) return;
- else
- {
- function(n/3);
- printf("%d",n%3);
- return;
- }
- }
- int main()
- {
- int br;
- scanf("%d",&br);
- function(br);
- return 0;
- }
- Пример влез
- 6
- Пример излез
- 20
- Да се напише програма во која користејќи рекурзивна функција која прима два аргументи ќе се испечати во форма на палиндром зборот чија средна буква е
- првиот аргумент на функцијата, а крајните букви (кои се исти) се претставени со вториот аргумент. Меѓу средната и крајните букви треба да се стојат
- буквите кои се наоѓаат меѓу средната и крајните букви во азбуката. Пр. за внесени аргументи (a,c) излез: cbabc
- #include<stdio.h>
- void function(char mid,char end)
- {
- if(mid==end)
- printf("%c",mid);
- else
- {
- printf("%c",end);
- function(mid,end-1);
- printf("%c",end);
- }
- }
- int main()
- {
- char a,b;
- scanf("%c%c",&a,&b);
- function(a,b);
- return 0;
- }
- Пример влез
- ad
- Пример излез
- dcbabcd
- Да се напише програма во која е имплементирана рекурзивна функција која проверува дали меѓу кои било две цифри што се наоѓаат на иста позиција броејќи
- од лево (за едната), односно броејќи од десно (за другата) нема поголема цифра од нив. Бројот на цифри треба да биде непарен и не помал од 3.
- Функцијата како влезен аргумент го прима бројот на цифри.
- #include<stdio.h>
- #include<math.h>
- int greshka=1;
- int funkcija(int n,int cifri)
- {
- if(cifri==1)
- {
- return n;
- }
- else
- {
- int milionche=pow(10,cifri-1);
- int prva = n/milionche;
- int posledna =n%10;
- int tmp= funkcija((n%milionche)/10,cifri-2);
- if((prva)>=tmp )
- if(posledna>= tmp)
- return max(prva, posledna, tmp);
- greshka =0;
- return 0;
- }
- }
- int max(int i, int j, int k){
- if((i>=j)&&(i>=k))
- return i;
- if((i<=j)&&(k<=j))
- return j;
- if((k>=i)&&(k>=j))
- return k;
- }
- int main()
- {
- int n,cifri;
- scanf("%d %d",&n,&cifri);
- funkcija(n,cifri);
- printf("%d",greshka);
- return 0;
- }
- Пример влез
- 7591468
- 7
- Пример излез
- 0
- Во низа од N природни броеви (N и низата се читаат од СВ) соседните заемно прости броеви (немаат заеднички делители) да си ги заменат позициите.
- На ист елемент од низата може најмногу еднаш да му се изврши замена. Да се испечати на СИ изменетата низа. Замената да се реализира во посебна функција.
- #include<stdio.h>
- void swap(int *a,int *b)
- {
- int t=*a;
- *a=*b;
- *b=t;
- }
- int prosti(int a,int b,int c)
- {
- if(a+1==c||b+1==c) return 1;
- else if(a%c==0&&b%c==0) return 0;
- else return prosti(a,b,c+1);
- }
- int main()
- {
- int n,i;
- scanf("%d",&n);
- int a[n];
- for(i=0;i<n;i++)
- scanf("%d",&a[i]);
- i=1;
- while(i<n)
- {
- if(prosti(a[i-1],a[i],2))
- {
- swap(&a[i-1],&a[i]);
- i+=2;
- }
- else i++;
- }
- for(i=0;i<n;i++)
- printf("%d ", a[i]);
- return 0;
- }
- Пример влез
- 8
- 4 8 9 15 7 12 4 7
- Пример излез
- 4 9 8 7 15 12 7 4
- Да се напише функција за ротирање на елементите на дадена низа за m места (ако m е позитивен низата се ротира во десно, а ако е негативен низата се
- ротира во лево). Задачата да се реши со помош на покажувачи.
- #include<stdio.h>
- void desno(int *a,int n)
- {
- int i,pom=*(a+n-1);
- for (i=n-1;i>0;i--)
- *(a+i)=*(a+i-1);
- *a=pom;
- }
- void levo(int *a,int n)
- {
- int i,k=*a;
- for(i=0;i<n-1;i++)
- *(a+i)=*(a+i+1);
- *(a+n-1)=k;
- }
- int main()
- {
- int m,n,a[100],k,i;
- scanf("%d",&n);
- scanf("%d",&m);
- for(i=0;i<n;i++)
- scanf("%d",&a[i]);
- k=m;
- if(m>0)
- while(k)
- {
- desno(a,n);
- k--;
- }
- else{
- while(k)
- {
- levo(a,n);
- k++;
- }
- }
- for(i=0;i<n;i++)
- printf("%d ",a[i]);
- return 0;
- }
- Пример влез
- 4
- 2
- 1 2 3 4
- Пример излез
- 3 4 1 2
- Да се напише функциjа за сортирање на низа од цели броеви. Потоа да се напише функциjа за споjување на две низи од цели броеви сортирани во растечки
- редослед. Оваа функциjа треба во нова низа да ги смести веќе сортираните две низи во нова низа коjа ќе биде исто така сортирана во растечки редослед.
- Во оваа функциjа не смее да се повикува функиjата за сортирање.
- #include <stdio.h>
- #define MAX 400
- void sort(int *a, int n) {
- // vasiot kod ovde
- int i,j,pom;
- for(i=0;i<n;i++)
- for(j=0;j<n-i-1;j++)
- {
- if(a[j]>a[j+1])
- {
- pom=a[j];
- a[j]=a[j+1];
- a[j+1]=pom;
- }
- }
- }
- void merge(int *a, int *b, int *c, int n) {
- // vasiot kod ovde
- int k,m,pom;
- for(k=0;k < n;k++)
- {
- c[k]=a[k];
- c[n+k]=b[k];
- }
- for(k=0;k < n;k++)
- for(m=0;m < 2*n-k-1;m++)
- {
- if( c[m] > c[m+1])
- {
- pom=c[m];
- c[m]=c[m+1];
- c[m+1]=pom;
- }
- }
- }
- int main() {
- int n;
- int a[MAX];
- int b[MAX];
- int c[MAX];
- scanf("%d", &n);
- int i;
- for(i = 0; i < n; ++i) {
- scanf("%d", &a[i]);
- }
- for(i = 0; i < n; ++i) {
- scanf("%d", &b[i]);
- }
- sort(a, n);
- sort(b, n);
- merge(a, b, c, n);
- for(i = 0; i < 2 * n; ++i) {
- printf("%d ", c[i]);
- }
- return 0;
- }
- Пример влез
- 3
- 8 5 12
- 7 1 4
- Пример излез
- 1 4 5 7 8 12
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement