מבוא לתכנות ולמדעי המחשב בשפת C/שיעורי חזרה: הבדלים בין גרסאות בדף
תוכן שנמחק תוכן שנוסף
אורי מוסנזון (שיחה | תרומות) יצירת דף עם התוכן "<syntaxhighlight> #include <stdio.h> #include <stdlib.h> #include <string.h> int add(int a, int b) { if(b==0) return a; return add(a+1,b-1); } int p..." |
(אין הבדלים)
|
גרסה מ־12:56, 16 בינואר 2012
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int add(int a, int b) {
if(b==0)
return a;
return add(a+1,b-1);
}
int pow1(int a, int n) {
if(n==0)
return 1;
return a*pow1(a,n-1);
}
int pow2(int a, int n) {
if(n==1)
return a;
int t = pow2(a,n/2);
if(n%2 == 0)
return t*t;
return t*t*a;
}
int find(char c, char *str, int from, int to) {
int i;
for(i=from; i<=to; ++i)
if(str[i] == c)
return i;
return -1;
}
int evaluateRec(char *str, int from, int to) {
int i = find('+',str,from,to);
if(i != -1)
return evaluateRec(str,from,i-1)+evaluateRec(str,i+1,to);
i = find('X',str,from,to);
if(i != -1)
return evaluateRec(str,from,i-1) * evaluateRec(str,i+1,to);
return atoi(str+from);
}
int evaluate(char* str) {
return evaluateRec(str,0,strlen(str)-1);
}
int main() {
printf("%d\n",add(3,4));
printf("%d\n",pow1(2,5));
printf("%d\n",pow2(2,5));
printf("%d\n",evaluate("445X23+23X21"));
return 0;
}