Evo, uradio sam ti neki kod!
Što se tiče prvog zadatka, verovatno postoji bolji način da se napravi maska, ali sličan kod sam već imao urađen (kao jedan od starih domaćih) pa sam njega iskoristio uz male prepravke! Evo koda:
Code:
#include <stdio.h>
//podrazumeva se da se cifre broja od manje znacajnih
int set_ones(int x, int m, int n) {
//lokalne promenljive
int maska=0, r, i, broj_jedinica;
broj_jedinica = n - m + 1;
//provera
if (m>n) return 0;
//kreiranje maske
for (i=0;i<n-m+1; i++) {
maska <<= 1;
maska +=1;
}
for(i=0; i<n-(n-m+1); i++) {
maska <<= 1;
}
//modifikovanje broja x
r = x | maska;
//vracanje vrednosti
return r;
}
int main () {
//promenljive
int x, m, n;
printf("x, m, n=?\n");
scanf("%d%d%d", &x, &m, &n);
printf("\nRezultat je: %d\n\n", set_ones(x, m, n));
return 0;
}
Za drugi nemam posebno šta da ti objašnjavam. Kod je kratat i jednostavan:
Code:
#include <stdio.h>
double pow(double x, int n) {
//lokalne promenljive
int i;
double s=1;
for (i=0; i<n; i++) {
s *= x;
}
return s;
}
int main() {
//promenljive
double x;
int n;
printf("\nx, n=?\n");
scanf("%lf%d", &x, &n);
printf("\nRezultat je: %.2lf\n", pow(x, n));
return 0;
}
Evo i četvrtog! Samo jedna napomena! Ja sam koristio niz od 10 članova, što znači da u njega možeš da smestiš 9 znakova! Ovo sam uradio jer je na mom računaru sizeof(int)=4, pa ne može da dođe veći broj od 5 cifara! Najbolje bi bilo da izračunaš veličinu niza na osnovu sizeof(int), pa da toliki niz i napraviš, s tim da paziš da zadnji znak mora da bude NUL, kao oznaka za kraj niza!
Code:
#include <stdio.h>
void itoa(int n, char *s) {
//lokalne promenljive
int i=0, k;
char a, b;
while (n!=0) {
k = n%10;
n /=10;
k+=48;
s[i++]=k;
}
//kraj stringa
s[i]=0;
//obrtanje niza
k=0;
i--;
while (k<=i) {
a = s[k];
b = s[i];
s[k++] = b;
s[i--] = a;
}
}
int main() {
//promenljive
int n;
char s[10];
printf("\t\t%d\n", sizeof(n));
printf("\nn=?\n");
scanf("%d", &n);
itoa(n, s);
printf("\n%s\n", s);
return 0;
}
Što se tiče trećeg zadatka, morao bih malo da se prelistam knjigu, pošto dugo nisam petljao ništa sa rekurzijom, pa bi mi oduzelo dosta vremena dok ga ne uradim!
Možda neko drugi može da ti pomogne oko tog trećeg!