С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
ph0en1x00
0 / 0 / 0
Регистрация: 04.05.2015
Сообщений: 41
1

Поиск цифрового корня числа, заданного строкой

24.09.2015, 17:35. Просмотров 848. Ответов 4
Метки нет (Все метки)

нужно искать цифровой корень, но что-бы можна было записовать неограниченое количество цифр, тоесть через стринг..

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include<stdio.h>
#include <windows.h>
int main (void)
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    int  n,m;
    printf("vvedit a");
    scanf("%d",&n);
    int k=n;
    do
    {
        for(m=0; n; n/=10)
        m+=n%10;
        n=m;
    }while(n>9);
    
    printf("chuslo %d - %d",k, n);
        
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.09.2015, 17:35
Ответы с готовыми решениями:

Функции. Нахождение цифрового корня числа. Рекурсия
Нужно написать две программы, которые находят цифровой корень числа. Первая...

Написать рекурсивную функцию нахождения цифрового корня натурального числа
*Написать рекурсивную функцию нахождения цифрового корня натурального числа....

Поиск квадратного корня из числа
Приветствую. Подскажите, пожалуйста, алгоритм вычисления квадратного корня в...

Поиск совершенных чисел, меньших заданного числа
Задание Дано некоторое число N. Сложить программу поиска “совершенных” чисел...

Проверить корректность арифметического выражения, заданного строкой
Задано строку, которая представляет арифметическое выражение. Проверить...

4
zss
Модератор
Эксперт С++
7494 / 6857 / 4330
Регистрация: 18.12.2011
Сообщений: 18,147
Завершенные тесты: 1
24.09.2015, 19:14 2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

так через string или через массив символов char?

И еще, объясните, зачем Вы написали SetConsoleCP и т.д., если пишете "vvedit"?

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<stdio.h>
#include<conio.h>
int main()
{
    int  n=0,i;
    char str[100];
    printf("Enter number:");
    gets(str);
    for(i=0;str[i];i++)
       if(str[i]>='0' && str[i]<='9')
           n+=str[i]-'0';
    printf("%s - %d\n",str, n);
    getch();
    return 0;
}
1
ph0en1x00
0 / 0 / 0
Регистрация: 04.05.2015
Сообщений: 41
25.09.2015, 09:42  [ТС] 3
да это не имеет значение, но этот код считает только раз, а как сделать так, что-бы считало пока число не будет меньше 9

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include<stdio.h>
 
int main(){
 
    char snum[100];
    printf("Enter a number: ");
    gets(snum);
    // Put the summ of snum digits to int number: 
    int num = 0;
    for (char *temp = snum; *temp != '\0'; temp++){
        if (*temp > 47 && *temp < 58){
            num += ((int)*temp) - 48;
                
        }
        else{
            printf("Wrong input!!!\n");
        
        
    }
    }
    printf("%d", num);
    return 0;
}
Добавлено через 42 минуты
я сделал похожий код, но не могу зациклить, что-бы считало до того момента, пока число не будет меньше 9
0
zss
Модератор
Эксперт С++
7494 / 6857 / 4330
Регистрация: 18.12.2011
Сообщений: 18,147
Завершенные тесты: 1
25.09.2015, 11:10 4
C++
1
2
3
4
5
6
do
{
   printf("Enter a number: ");
    ....
   printf("%d", num);
}while(num>=9);
0
QewerC
6 / 6 / 9
Регистрация: 15.07.2015
Сообщений: 56
25.09.2015, 20:17 5
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

C
1
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#include<conio.h>
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
 
#define N 13//сколь надо батя?
char Impossibilite[N]; 
void EndlessnessForYouMyDarling(char *x);
int Find(long long,long long);
 
main()
{
char x[10]="56789";
EndlessnessForYouMyDarling(x);
printf("%s", Impossibilite);
getch();
}
 
 
void EndlessnessForYouMyDarling(char *x)
{ 
int IsOdd=0;int temp; int OneTime=0;    
IsOdd=strlen(x)%2;
 
 
if(IsOdd == 1)
{
int Number1;
Number1=x[0]-'0';
temp=Number1;
if(Number1 == 1){Impossibilite[0]='1';}        
else if(Number1 < 4 && Number1 > 1){Impossibilite[0]='1';}   
else if(Number1 < 9 && Number1 >= 4){Impossibilite[0]='2';}
else if(Number1 == 9){Impossibilite[0]='3';}   
}
else
{
int Number2;
Number2=((x[0]-'0')*10)+x[1]-'0'; 
temp=Number2; 
if(Number2 >= 9 && Number2 < 16){Impossibilite[0]='3';}     
if(Number2 >= 16 && Number2 < 25){Impossibilite[0]='4';} 
if(Number2 >= 25 && Number2 < 36){Impossibilite[0]='5';} 
if(Number2 >= 36 && Number2 < 49){Impossibilite[0]='6';} 
if(Number2 >= 49 && Number2 < 64){Impossibilite[0]='7';} 
if(Number2 >= 64 && Number2 < 81){Impossibilite[0]='8';} 
if(Number2 >= 81 && Number2 < 100){Impossibilite[0]='9';} 
}
 
long Double;long long Difference;long Row=0;long kk;long long rr;char tempss[10];int t=0;
Double=atoi(Impossibilite);
 
for(long i=0;i<(N);i++)
{
 
        
      
if(OneTime == 0){
Difference=temp-(int)pow(Double,2);
Difference=Difference*100+(x[++Row]-'0')*10+(x[++Row]-'0'); 
OneTime=1;
}
 
 
rr=Find(Difference,atoi(Impossibilite)*2);
Difference=Difference-(atoi(Impossibilite)*10*2+rr)*rr;
itoa(rr,tempss,10);
strcat(Impossibilite,tempss);  
if(strlen(x) <= ++Row){ /*if(t == 0){t=1;Impossibilite[Row++]='.';}*/Difference=Difference*100;}
else {--Row;Difference=Difference*100+(x[++Row]-'0')*10+(x[++Row]-'0');}
 
 
 
 
 
 
       
}//for
}
 
int Find(long long k,long long d)
{
long long answer=0;
for(long int i=1;i<100000;i++)
{
if(k > ((d*10+i)*i))answer++;
else 
{
break;
}   
}
    
return answer;    
}
По теории работает до бесконечности, но практике ограниченно разрядностью, можно использовать другой алгоритм.
Считает где до 12 цифры. Запятую не ставит, думаю сам сможешь её впихать.
0
25.09.2015, 20:17
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.09.2015, 20:17

Поиск целочисленного квадратного корня
Есть программа, которая должна искать целочисленные квадратные корни из целого...

Поиск корня уравнения методом деления пополам
#include &lt;stdio.h&gt; #include &lt;math.h&gt; int popolam(double a,double b,double...

Целая часть квадратного корня из длинного числа
Не могу понять, почему программа, в которой массив объявлен глобально, работает...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru