Длинная арифметика - почему и зачем здесь atoi? - C (СИ)

Узнай цену своей работы

Формулировка задачи:

#include <iostream> 
#include <conio.h>
#include <stdio.h>
#include <string.h>
using namespace std;
const int N=10000;
int d[N];
int a[N];
int b[N];
int stepen(int dlina_str,int n)
{
    int k;
    for (int z=0;z<n-1;z++)
    {
    int i=0;
    int slap;     
    int dlina_d=0;
    while (d[dlina_d]!=-1)
    {
        a[dlina_d]=d[dlina_d];
        dlina_d++;
    }
    for (i=0; i<dlina_d; i++)
        d[i]=0;
    i=0;
    k=dlina_d;
    for (i=0; i<dlina_str; i++)
    for (int j=0; j<dlina_d; j++)
    {   
        if (d[j+i]==-1) d[j+i]++;
        slap=b[i]*a[j]+d[j+i];
        if (slap>9) 
        {
            if (d[i+j+1]+slap/10>9) { d[i+j+1]=(d[i+j+1]+(slap/10))%10; if (d[i+j+2]==-1) d[i+j+2]+=2; else d[i+j+2]++;}
            else if (d[i+j+1]==-1) d[i+j+1]+=(slap/10)+1; else d[i+j+1]+=(slap/10);
            k=j+i+1; 
            d[j+i]=slap%10; 
        }
        else   { d[j+i]=slap;  k=i+j; }
    }
    }
    return k;
}
void main() 
{
    /****** Ввод чисел ******/
    setlocale(0, "Russian");
    int n;
    char str1[N],prom[2];
    cout<<"Введите число: ";cin>>str1;
    cout<<"Введите степень : ";cin>>n;
    int i=0;
    for (i=0; i<N; i++)
    d[i]=-1;
    i=0;
    int dlina_str=strlen(str1);               // Длина числа
    int l=dlina_str-1;                        // Перевод строки в число
        while (i<dlina_str)
        {prom[0]=str1[i];a[l]=atoi(prom);b[l]=a[l];d[l]=a[l]; i++;l--;}
    /** ИСКЛЮЧЕНИЯ **/
        if (a[0]==1) {cout<<1; getch(); exit(1);}
        if (a[0]==0) {cout<<0; getch(); exit(1);}      // 0 в любой степени = 0
        if (n==0) {cout<<1; getch(); exit(1);}       // любое число в степени 0 = 1
    /*** FUNCTION ***/  // Умножение само на себя степенное количество раз                      
    int k;              // Длина результирующего массива
        k=stepen(dlina_str,n);
    cout<<"Результат:\n"; 
    for (i=k;i>-1;i--)
        cout<<d[i];
    getch();
}
Не работает программа не могу понять почему и зачем здесь atoi?

Решение задачи: «Длинная арифметика - почему и зачем здесь atoi?»

textual
Листинг программы
str1[i] - '0'

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.333 из 5