Поиск цифрового корня числа, заданного строкой - C (СИ)

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

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

нужно искать цифровой корень, но что-бы можна было записовать неограниченое количество цифр, тоесть через стринг..
Листинг программы
  1. #include<stdio.h>
  2. #include <windows.h>
  3. int main (void)
  4. {
  5. SetConsoleCP(1251);
  6. SetConsoleOutputCP(1251);
  7. int n,m;
  8. printf("vvedit a");
  9. scanf("%d",&n);
  10. int k=n;
  11. do
  12. {
  13. for(m=0; n; n/=10)
  14. m+=n%10;
  15. n=m;
  16. }while(n>9);
  17. printf("chuslo %d - %d",k, n);
  18. }

Решение задачи: «Поиск цифрового корня числа, заданного строкой»

textual
Листинг программы
  1. #include<conio.h>
  2. #include<string.h>
  3. #include<stdio.h>
  4. #include<stdlib.h>
  5. #include<math.h>
  6.  
  7. #define N 13//сколь надо батя?
  8. char Impossibilite[N];
  9. void EndlessnessForYouMyDarling(char *x);
  10. int Find(long long,long long);
  11.  
  12. main()
  13. {
  14. char x[10]="56789";
  15. EndlessnessForYouMyDarling(x);
  16. printf("%s", Impossibilite);
  17. getch();
  18. }
  19.  
  20.  
  21. void EndlessnessForYouMyDarling(char *x)
  22. {
  23. int IsOdd=0;int temp; int OneTime=0;    
  24. IsOdd=strlen(x)%2;
  25.  
  26.  
  27. if(IsOdd == 1)
  28. {
  29. int Number1;
  30. Number1=x[0]-'0';
  31. temp=Number1;
  32. if(Number1 == 1){Impossibilite[0]='1';}        
  33. else if(Number1 < 4 && Number1 > 1){Impossibilite[0]='1';}  
  34. else if(Number1 < 9 && Number1 >= 4){Impossibilite[0]='2';}
  35. else if(Number1 == 9){Impossibilite[0]='3';}  
  36. }
  37. else
  38. {
  39. int Number2;
  40. Number2=((x[0]-'0')*10)+x[1]-'0';
  41. temp=Number2;
  42. if(Number2 >= 9 && Number2 < 16){Impossibilite[0]='3';}    
  43. if(Number2 >= 16 && Number2 < 25){Impossibilite[0]='4';}
  44. if(Number2 >= 25 && Number2 < 36){Impossibilite[0]='5';}
  45. if(Number2 >= 36 && Number2 < 49){Impossibilite[0]='6';}
  46. if(Number2 >= 49 && Number2 < 64){Impossibilite[0]='7';}
  47. if(Number2 >= 64 && Number2 < 81){Impossibilite[0]='8';}
  48. if(Number2 >= 81 && Number2 < 100){Impossibilite[0]='9';}
  49. }
  50.  
  51. long Double;long long Difference;long Row=0;long kk;long long rr;char tempss[10];int t=0;
  52. Double=atoi(Impossibilite);
  53.  
  54. for(long i=0;i<(N);i++)
  55. {
  56.  
  57.        
  58.      
  59. if(OneTime == 0){
  60. Difference=temp-(int)pow(Double,2);
  61. Difference=Difference*100+(x[++Row]-'0')*10+(x[++Row]-'0');
  62. OneTime=1;
  63. }
  64.  
  65.  
  66. rr=Find(Difference,atoi(Impossibilite)*2);
  67. Difference=Difference-(atoi(Impossibilite)*10*2+rr)*rr;
  68. itoa(rr,tempss,10);
  69. strcat(Impossibilite,tempss);  
  70. if(strlen(x) <= ++Row){ /*if(t == 0){t=1;Impossibilite[Row++]='.';}*/Difference=Difference*100;}
  71. else {--Row;Difference=Difference*100+(x[++Row]-'0')*10+(x[++Row]-'0');}
  72.  
  73.  
  74.  
  75.  
  76.  
  77.  
  78.        
  79. }//for
  80. }
  81.  
  82. int Find(long long k,long long d)
  83. {
  84. long long answer=0;
  85. for(long int i=1;i<100000;i++)
  86. {
  87. if(k > ((d*10+i)*i))answer++;
  88. else
  89. {
  90. break;
  91. }  
  92. }
  93.    
  94. return answer;    
  95. }

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


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

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы