A
apidrone
Гостин
Ниту јас не разбирам што се бара... А толку е просто со sin().....Па тоа полесно е , така ја напишав ама прочитав (сумата да се пресмета за i=1 до i=50) и затоа вака ја напишав -.-
Ниту јас не разбирам што се бара... А толку е просто со sin().....Па тоа полесно е , така ја напишав ама прочитав (сумата да се пресмета за i=1 до i=50) и затоа вака ја напишав -.-
int nzs(int x, int y)
{
if(x<0) x=-x;
if(y<0) y=-y;
int i;
for(i=1;;i++)
{
if(i%x==0 && i%y==0)
return i;
}
}
Ако може помош за рекурзивна функција за барање на НЗС на два броја.
Јас би ја напишал вака без рекурзија, со циклус, ама ми треба со рекурзија.
int nzs(int x,int y)
{ if(x==y)return x;
if(x>y)
{if(x%y==0)return x;
else {x++;nzs(x,y);}
}
if(y>x)
{if(y%x==0)return y;
else {y++;nzs(x,y);}
}
}
Чекај, па ова нема да го врати првото x деливо со y?Код:int nzs(int x,int y) { if(x==y)return x; if(x>y) {if(x%y==0)return x; else {x++;nzs(x,y);} } if(y>x) {if(y%x==0)return y; else {y++;nzs(x,y);} } }
Ако може помош за рекурзивна функција за барање на НЗС на два броја.
Јас би ја напишал вака без рекурзија, со циклус, ама ми треба со рекурзија.
int nzd(int a, int b)
{
return (b!=0 ? nzd(b, a%b) : a);
}
int nzs(int a, int b)
{
return (a*b)/nzd(a,b);
}
int nzd(int a, int b)
{
if(b==0)
return a;
else
return nzd(b, a%b);
}
Да се напише функција kreirajNanizanoLeksi() која како аргумент прима низа од цели броеви и колку броеви има вкупно низата. Функцијата враќа покажувач кон водач на инордер нанижано бинарно лексикографско стебло. За водачот се алоцира меморија во самата функција. Доколку некои вредности од низата се појават повеќе од еднаш дупликатите се игнорираат. Потоа да се напише функција inorderNizano() која го изминува истото дрво и ги печати вредностите на info полињата.
#include <stdio.h>
#include <stdlib.h>
#define MAX_ELEMENTI 100
#define NEW(t) (t *)malloc(sizeof(t))
typedef struct element2 {
int info;
struct element2 *left, *right;
char rtag, ltag;
} nanizano;
int main()
{
nanizano *v, *kreirajNizanoLeksi(int[], int);
int i = 0, n, niza[MAX_ELEMENTI], scanOK;
void inorderNanizano (nanizano *);
while((i<MAX_ELEMENTI)&&((scanOK=(scanf("%d",&n)))||1)&&(getchar()!='`'))
if(scanOK) niza[i++]=n;
v = kreirajNizanoLeksi(niza, i);
printf("\nInorder nanizano:\n");
inorderNanizano(v);
system("pause");
return 0;
}
nanizano *sledbenik (nanizano *t)
{
if(t->rtag=='+')
{
t=t->right;
while(t->ltag=='+')
t=t->left;
return t;
}
else return t->right;
}
void inorderNanizano (nanizano *v)
{
nanizano *temp=v->right;
while(temp->ltag=='+')
temp=temp->left;
while(temp!=v)
{
printf("%d ", temp->info);
temp=sledbenik(temp);
}
}
void insert (nanizano **n, int x)
{
nanizano *p=NEW(nanizano);
nanizano *temp=(*n)->right;
for(;;)
{
if(temp==NULL)
{
p->info=x;
p->right=*n;
p->rtag='-';
p->left=*n;
p->ltag='-';
break;
}
else if(x<temp->info)
{
if(temp->ltag!='-')
temp=temp->left;
else
{
p->info=x;
p->right=temp;
p->rtag='-';
p->left=temp->left;
p->ltag=temp->ltag;
temp->left=p;
temp->ltag='+';
break;
}
}
else if(x>temp->info)
{
if(temp->rtag!='-')
temp=temp->right;
else
{
p->info=x;
p->right=temp->right;
p->rtag=temp->rtag;
p->left=temp;
p->ltag='-';
temp->right=p;
temp->rtag='+';
break;
}
}
else break;
}
}
nanizano *kreirajNizanoLeksi (int a[], int n)
{
nanizano *v=NEW(nanizano);
v->right=NULL;
v->rtag='+';
v->left=v;
v->ltag='-';
for(int i=0; i<n; i++)
insert(&v, a[i]);
return v;
}
Повелетеда се напише програма која за внесени 2 броја ке проверува дали вториот број е подброј на првиот број. Притоа бр Б е подброј на А ако сите цифри на Б се содржат ви А по соодветниот редослед и без прекини на пр. 432 е подброј на 54321 но не е подброј на 543621. проверката за подброј да се реализира со рекурзивна функција
#include <stdio.h>
#include <stdlib.h>
int x,y;
int AvoB(int a, int b);
int main(int argc, char *argv[])
{
scanf("%d%d",&x,&y);
if (AvoB(x,y) == 1) printf("ok");
else
printf("N-OK");
system("PAUSE");
return 0;
}
int AvoB(int a, int b){
if (a == 0 && b != 0) return 0;
if (a == 0 || b == 0) return 1;
else
if (a % 10 == b % 10) return AvoB(a / 10, b / 10);
else{
x/=10;
return AvoB(x , y);
}
}
фалаааааПовелете
Код:#include <stdio.h> #include <stdlib.h> int x,y; int AvoB(int a, int b); int main(int argc, char *argv[]) { scanf("%d%d",&x,&y); if (AvoB(x,y) == 1) printf("ok"); else printf("N-OK"); system("PAUSE"); return 0; } int AvoB(int a, int b){ if (a == 0 && b != 0) return 0; if (a == 0 || b == 0) return 1; else if (a % 10 == b % 10) return AvoB(a / 10, b / 10); else{ x/=10; return AvoB(x , y); } }
А работи програмава??Повелете
Код:#include <stdio.h> #include <stdlib.h> int x,y; int AvoB(int a, int b); int main(int argc, char *argv[]) { scanf("%d%d",&x,&y); if (AvoB(x,y) == 1) printf("ok"); else printf("N-OK"); system("PAUSE"); return 0; } int AvoB(int a, int b){ if (a == 0 && b != 0) return 0; if (a == 0 || b == 0) return 1; else if (a % 10 == b % 10) return AvoB(a / 10, b / 10); else{ x/=10; return AvoB(x , y); } }
Да!!А работи програмава??![]()
Да!!![]()
if (a == 0 && b != 0) return 0;
Секогаш првин се внесува бројот со повеќе цифри а потоа со помалку само што не ми е нагласено на почетокот. Треба да нагласам:Ако за овој код внесеш 432 и 54321, очекуваш да врати 1, но b(54321) е различно од 0(!=0) па функцијата ќе врати вредност 0.Код:if (a == 0 && b != 0) return 0;
printf("Vnesete prvo A i potoa B");
scanf("%d%d",&x,&y);
Внесуваш забуни младичуСекогаш првин се внесува бројот со повеќе цифри а потоа со помалку само што не ми е нагласено на почетокот. Треба да нагласам:
Во случајот прво се внесува 54321 а потоа 432.Код:printf("Vnesete prvo A i potoa B"); scanf("%d%d",&x,&y);
Ок ?