Факториал больше 26 вычисляется неправильно - C (СИ)

  1. Здравствуйте! Возникла такая проблема: необходимо написать программу на языке C, вычисляющую факториал числа, пробовал с помощью рекурсии, но факториал больше 26 она считает неправильно, помогите пожалуйста, люди добрые


textual

Код к задаче: «Факториал больше 26 вычисляется неправильно - C (СИ)»

int main(int argc, char *argv[])
{
    int l,i,n,x,y; //n - ââîäèìîå ÷èñëî, x - ïåðåГ*îñ, y - äëÿ ïðîìåæóòî÷Г*îãî âû÷èñëåГ*ГЁГї
    char k[100000]=""; //2568 Г*Г* 1000 , 1000000 Г*Г* ~25000
    int was;
 
    setlocale(LC_ALL,"Russian_russia.1251");
    printf("Ââåäèòå ÷èñëî:");
    scanf("%d",&n);
    k[99999]=1;
 
    for(l=2;l<=n;l++)
        for(x=0,i=99999;i>-1;i--)
        {
            y=k[i]*l+x; //ГіГ¬Г*îæГ*ГҐГ¬ i-Гѕ öèôðó Г*Г* ÷èñëî îò 2 äî n
            k[i]=y%10;  //Г§Г*ïèñûâГ*ГҐГ¬ îñòГ*òîê
            x=y/10;     //Г* ГЅГІГ® "Гў óìå", ГІ.ГҐ. ïåðåГ*îñ Гў ñëåäóþùèé Г°Г*çðÿä
        }
    for(l=was=i=0;i<100000;i++)//âûâîäèì ÷èñëî ГЇГ® 75 öèôð Гў ñòðîêå
    {
        if(l%75==0 && l>0 && was)printf("\n");
        if(k[i]>0 || was)
        {
            printf("%d",k[i]);
            was=1;
            l++;
        }
    }
    printf("\n%d öèôð\n",l);
    system("PAUSE");    
    return 0;
}

СДЕЛАЙТЕ РЕПОСТ

7   голосов, оценка 4.714 из 5



Похожие ответы
  1. Здравствуйте! Данная "программа" должна обрабатывать числа, расстояние между которыми меньше 5, а также находить среди таких двух чисел самое большее чётное произведение. КОМПИЛИРУЕТСЯ ВСЁ НОРМАЛЬНО, НО ИСПОЛЬНЯТЬ ЭТА ГАДЮКА НИЧО НЕ ХОЧЕТ ИМЕННО В СЛУЧАЕ, КОГДА НА ВХОД ПОСУТПАЕТ БОЛЕЕ 5 ЧИСЕЛ. Т.е. цикл for(i=5;i int main(void) {   char j,c;      int i;      int n;      int a[5];      int x;      int max=-1;           scanf("%d",&n);     for (i=0;i<=4;i++){         scanf("%d",&a[i]);         }     for (i=5;imax )&&  (a[j-1]*a[c]%2 ==0))                     max=a[c]*a[j-1];                                             }                     }                 for (j=0;j<4;j++){             a[j]=a[j+1];         }         a[4]=x;         }      if (max==-1)          printf("-1");     else printf ("%d",max);     getchar();     getchar();     return 0; }Добавлено через 9 минут Тэкс... Счётчик тут должен робить... Тэк... Вывод массива когда у его индекса чото вычитаем тоже работает... Угу... Кажется я как-то выхожу из границ массива, но я в упор не могу разглядеть этого... Так, падажжи еманаДобавлено через 37 секунд лол, разглядеть он не может, у тебя две строки где идут пляски с массивамми, там же очевидно и ошибкаДобавлено через 3 минуты эхх, пойти спать или сожжрать таки хлеб с пащтетом? но тогда изжога будет от паштета с хлебом, я не хочу изжоги, антиацида нет с собой

  1. Задана последовательность из N вещественных чисел. Определить сколько чисел меньше K, равно K и больше K. (массив random )

  1. Дается строка. Найти в ней подстроку, которая является палиндромом наибольшей длины. Если их несколько, то можно вывести любую. Посчитать сложность. Например: abcbaaaaab -> baaaaab bdgearlfgs -> NULL Надеюсь, кто-нибудь может подсказать

  1. Посимвольно вводятся 2 строки длиной до 80 сиимволов Определить, в какой строке больше цифр: в первой или во второй Уже писал. Найдите ошибки, пожалуйста)C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 #include #include #include   /* run this program using the console pauser or add your own getch, system("pause") or input loop */   int main(int argc, char *argv[]) {     setlocale(LC_ALL, "Rus");     char gts=' ';     int i, fst=0, sst=0, flg=0;     printf("Введите первую строку (максимум - 79 символов:)\n");     scanf("%c", >s);     while(gts!="\n")     {         flg=afer(gts);         if(flg==1)         {             fst++;         }         scanf("%c", >s);     }     printf("Введите вторую строку (максимум - 79 символов:)\n");     scanf("%c", >s);     while(gts!="\n")     {         flg=afer(gts);         if(flg==1)         {             fst++;         }         scanf("%c", >s);     }     if(fst>sst)     printf("В первой строке больше цифр");     if(sst>fst)     printf("Во второй строке больше цифр");     if(sst==fst)     printf("И в первой, и во второй строках одинаковой количество цифр");     return 0; }   int afer(char* __s) {     int k;     if(__s=='0'||__s=='1'||__s=='2'||__s=='3'||__s=='4'||__s=='5'||__s=='6'||__s=='7'||__s=='8'||__s=='9')     {         k=1;     }     return(k); }Почему то после того, как я нажму Enter (\n), программа не выходит из цикла :-(

  1. Задача: Дана целочисленная квадратная матрица размерности m*n.Найти наименьшее из значений элементов столбца, который обладет наибольшей суммой модулей элементов. Если таких столцов несколько, взять тот из них, в котором больше отрицательных элементов.Здраствуйте! Я написал код, который находит наименьшее значение в столбце, который имеет макс сумму, но я не знаю как написать, чтобы при совпадении макс суммы выводило тот, где больше отрицательных. Помогите пожалуйста доделать программу. C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 #include #include #include   int main() {     srand(time(NULL));     int N = rand()%9+1, M=N;     int i, j, a[M][N];     for (i = 0; i < M; i++)     {         for (j = 0; j < N; j++)         {             a[i][j] = rand() % 10-5;             printf("%5d", a[i][j]);         }         printf("\n");     }     int max_s=0, max_j = max_s;     for(j=0;j max_s)         {             max_s = sum; max_j = j;           }     }     int min = 0;     for (int t = 0; t

  1. Здравствуйте. Помогите, пожалуйста, найти ошибку в коде.C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 #include #include #include int main() {    int n,max,s;    clrscr();    printf("\n Vvedite naturalnoe chislo n=");    scanf("%d",&n);    for(;n>0;n/=10)    {        s=n%10;      if(s>max)      {        max=s;      }    } printf("\n Vivod: \n max=%d",max); getch(); return 0; }

  1. Задать целое число х. Написать программу, рассчитать значение S = 1 + x23! + X45! + ...

  1. Написать функцию, которая в массиве вещественных чисел обнуляет все элементы, которые больше среднего арифметического значения элементов исходного массива.

  1. дан массив на 30 элементов. написать программу которая позволяет найти и вывести сумму элементов массива значение которых больше среднего арифметического значения элементов этоого массива. разномерность массива и диапазон значений прлизвольные