Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.74/35: Рейтинг темы: голосов - 35, средняя оценка - 4.74
BOT
44 / 0 / 1
Регистрация: 26.10.2011
Сообщений: 115
1

Дана строка символов. Найти сумму цифр, встречающихся в строке.

25.04.2012, 16:37. Просмотров 6431. Ответов 12
Метки нет (Все метки)

Дана строка символов. Найти сумму цифр, встречающихся в строке.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.04.2012, 16:37
Ответы с готовыми решениями:

Прочитать файл ONE и найти сумму цифр, встречающихся в нем
Прочитать файл ONE и найти сумму цифр, встречающихся в нем. Помогите написать...

Дана строка символов до точки. Определить, сколько слов, состоящих из 5 и более символов, содержит данная строка
Доброго времени суток! Нужно решить такую задачу (желательно с блок-схемой):...

Дана строка. Найти символ в строке, встречающийся наибольшее число раз
Дана строка. Найти символ в строке, встречающийся наибольшее число раз. Заранее...

Дана строка символов. Найти и вывести все слова, содержащие более двух букв «a»
Задание-> Дана строка символов. Найти и вывести все слова, содержащие более...

Вычислить частоту встречающихся символов в строке
Вычислить частоту встречающихся символов в строке. При этом исходная строка...

12
-=ЮрА=-
Заблокирован
Автор FAQ
25.04.2012, 16:42 2
BOT, язык С или С++?
0
panicwassano
594 / 562 / 104
Регистрация: 07.11.2010
Сообщений: 2,004
25.04.2012, 16:43 3
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
#include <algorithm>
#include <iostream>
#include <string>
 
using namespace std;
 
int main(int argc, char *argv[])
{
    string line;
    cout << "Please input line:\n";
    getline(cin, line);
 
    int s = 0;
    for_each(line.begin(), line.end(), [&s](char c)
    {
        if (isdigit(c))
        {
            s += (c - '0');
        }
    });
 
    cout << "Sum is : " << s << endl;
    return 0;
}
0
BOT
44 / 0 / 1
Регистрация: 26.10.2011
Сообщений: 115
25.04.2012, 16:43  [ТС] 4
С просто
0
diagon
Higher
1937 / 1203 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
25.04.2012, 16:45 5
C
1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
#include <ctype.h>
 
int main()
{
    int sum_of_digits = 0;
    char str[] = "1 2/3h4hhl4562jk0";
    for (char *p = str; *p; sum_of_digits += (*p - '0') * !!isdigit(*p), ++p);
    printf("%d\n", sum_of_digits);
}
0
-=ЮрА=-
Заблокирован
Автор FAQ
25.04.2012, 16:48 6
Вот простенько на плюсах
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
using namespace std;
 
int main()
{
    int i, sum;
    char str[1024] = {0};//ГЌГ*ГёГ* ñòðîêГ* ñèìâîëîâ
    cout<<"Enter text (less than 1024 chars) : ";
    cin.getline(str,1023);
    cout<<"Digits in string : ";
    for(sum = (i = 0); str[i] != '\0'; i++)
    {
        if('0' <= str[i] && str[i] <= '9')
        {
            sum += (str[i] - 48);
            cout<<str[i];
        }
    }
    cout<<"\nSum : "<<sum<<endl;
    system("pause");
    return 0;
}
2
Миниатюры
Дана строка символов. Найти сумму цифр, встречающихся в строке.  
-=ЮрА=-
Заблокирован
Автор FAQ
25.04.2012, 16:51 7
Цитата Сообщение от BOT Посмотреть сообщение
С просто
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    int i, sum;
    char str[1024] = {0};//ГЌГ*ГёГ* ñòðîêГ* ñèìâîëîâ
    printf("Enter text (less than 1024 chars) : ");
    scanf("%1023[^\n]",str);
    printf("Digits in string : ");
    for(sum = (i = 0); str[i] != '\0'; i++)
    {
        if('0' <= str[i] && str[i] <= '9')
        {
            sum += (str[i] - 48);
            printf("%c",str[i]);
        }
    }
    printf("\nSum : %d\n",sum);
    system("pause");
    return 0;
}
- функционал аналогичен функционалу выше
0
Dr.Urban
63 / 58 / 14
Регистрация: 14.12.2011
Сообщений: 193
11.05.2012, 20:07 8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <ctype.h>
#include <stdio.h>
 
#define SIZE 40
int main()
{
    char stroka[SIZE] = "He11re2goe3s s0me d2g2tal3";
    char *ptr = stroka;
 
    int sum = 0;
 
    while(*(ptr++))
    {
        if(isdigit(*ptr)) sum += (int)*ptr - 48;
 
    }
    printf("%d", sum);
    return 0;
}
1
go
Эксперт С++
3637 / 1369 / 243
Регистрация: 16.04.2009
Сообщений: 4,527
11.05.2012, 21:08 9
Dr.Urban, код не првильно работает даже для Вашей строки (я 15 насчитал). Но даже если я ошибся, то проверяйте для вот такой строки
C
1
char stroka[SIZE] = "9He11re2goe3s s0me d2g2tal3";
0
Dr.Urban
63 / 58 / 14
Регистрация: 14.12.2011
Сообщений: 193
11.05.2012, 21:18 10
"He11re2goe3s s0me d2g2tal3"; не единица а L =)

да ошибка при чтении первой цифри..


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <ctype.h>
#include <stdio.h>
 
#define SIZE 40
int main()
{
    char stroka[SIZE] = "9He11re2goe3s s0me d2g2tal3";
    char *ptr = stroka;
 
    int sum = 0;
 
    while(*(ptr))
    {
        if(isdigit(*ptr)) sum += (int)*ptr - 48;
        ptr++;
    }
    printf("%d", sum);
    return 0;
}
2
go
Эксперт С++
3637 / 1369 / 243
Регистрация: 16.04.2009
Сообщений: 4,527
11.05.2012, 21:23 11
Цитата Сообщение от Dr.Urban Посмотреть сообщение
Код C++
На плюсах целесообразно использовать библиотек STL для такой задачи. Но так как это раздел Си, то вот код
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
#include <stdio.h>
#include <string.h>
#include <ctype.h>
 
char* search(char* const s, int (*fun)(int) ) 
{
   while ( *s++ )
     if ( fun(*(s - 1)) )
       return s - 1;
       
   return NULL; 
}
    
int main(void)
{
   char s[] = "1 23H4ello 0 world5";
   char *c;
   size_t total = 0; 
  
   for ( c = search(s, isdigit) ; c ; c = search(c + 1, isdigit) )
     total += *c - '0';
    
   printf("%u\n", total);
}
http://liveworkspace.org/code/d59679fe1789ff157220e45d8941766b
1
Dr.Urban
63 / 58 / 14
Регистрация: 14.12.2011
Сообщений: 193
11.05.2012, 21:35 12
Зачем усложнять? Не понимаю чем так лучше? раздел же для новичков - зачем мутить воду с бесполезным здесь указателем на функцию и фором на километр ? Им не нужен идеальный код, а то что можно CTRL+C -> CTRL+V -> compile -> run -> forget

Кстати о хорошем тоне - функция должна бы возвращать значение.
1
go
11.05.2012, 21:40     Дана строка символов. Найти сумму цифр, встречающихся в строке.
  #13

Не по теме:

Цитата Сообщение от Dr.Urban Посмотреть сообщение
Кстати о хорошем тоне - функция должна бы возвращать значение.
Это программа для тестирования, т.е. писалось "на скорую руку" . Ошибки в этом нет. Писать return 0 в main функции это скорее всего стиль, чем наодобность. Ведь компилятор сам об этом должен позаботиться. Благо в стандарте это есть. :)

1
11.05.2012, 21:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.05.2012, 21:40
Привет! Вот еще темы с ответами:

Дана строка символов, вывести последовательности символов, заключенные в скобки
(Помогите,пожалуйста) Дана строка символов. Признак конца-символ '\n'(перевод...

Найти сумму цифр в строке
Найти сумму цифр в строке.

Найти сумму цифр в смешанной строке
1) Вычислить сумму цифр в строке вида &quot;1ab23cef05&quot; ( P S строка вводиться с...


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

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

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