
14-01-2015, 21:56
|
מנהל פורומי "תכנות ובניית אתרים" ו"חומרה ורשתות"
|
|
חבר מתאריך: 25.10.01
הודעות: 42,777
|
|
לא בדקתי יותר מדי מקרי קצה, ובהחלט ייתכן שיש דרך יותר טובה לעשות את זה (וגם, שנים לא כתבתי C, אז רחמים...) - אבל זה הרעיון שלי לפתרון:
קוד PHP:
#include <stdio.h>
#include <math.h>
int main() {
int i, n, tmp, len, l;
printf("Please input an integer? ");
scanf("%d", &n);
if (n < 1) {
printf("%s\n", "Not a natural number! Aborting!");
return 1;
}
printf("Please select an index digit? ");
scanf("%d", &i);
if (i < 1) {
printf("%s\n", "Not a natural number! Aborting!");
return 1;
}
tmp = n;
len = 0;
while (tmp > 0) {
tmp /= 10;
len++;
}
printf("In: %d (%d digits), Digit Index: %d\n", n, len, i);
if (len < i) {
printf("Your selected index, %d, is larger than the number length (%d)! Aborting!\n", i, len);
return 1;
}
printf("Out: ");
tmp = n / ((int) pow((double) 10, len-i+1));
if (tmp > 0)
printf("%d", tmp);
tmp = n % ((int) pow((double) 10, len-i));
if (tmp == 0)
for (l=0; l < (len-i); l++)
printf("%d", 0);
if (tmp > 0)
printf("%d", tmp);
printf("\n");
return 0;
}
נ.ב. בשביל פונקציית החזקה (pow) צריך לכלול את הספריה m (למשל עם gcc עושים lm- -לא יודע איך זה עם קומפיילרים אחרים)
|