Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Рекурсия: вычисление суммы и количества цифр числа, максимальной и минимальной его цифры - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Либо я дурак либо.... http://www.cyberforum.ru/cpp-beginners/thread199408.html
Короче задание такое...создать матрицу, определить сумму элементов в тех стлбцах которые не содержат отрицательных элементов...но дело не в этом он мне пишет в 24 строке не найден или неопределен...
C++ Удаление слов Под С Удалить из предложения все слова, встречающиеся по одному разу. Заранее спасибо http://www.cyberforum.ru/cpp-beginners/thread199400.html
Замена слова C++
Под С В данном предложении заменить каждое слово child словом children. Заранее спасибо
C++ Найти длину самого короткого слова
Под С Найти длину самого короткого слова. Заранее спасибо
C++ Матрица! Сумма элементов строки http://www.cyberforum.ru/cpp-beginners/thread199396.html
Под С В данной действительной матрице порядка n найти сумму элементов строки, в которой располагается элемент с наименьшим значением. Заранее спасибо.
C++ Перемещение максимального элемента матрицы в левый верхний угол. На C Дана целочисленная матрица размером 7*4. Переставляя ее строки и столбцы, добиться того, чтобы наибольший элемент (один из них ) оказался в верхнем левом углу. Заранее спасибо. подробнее

Показать сообщение отдельно
easybudda
Модератор
Эксперт CЭксперт С++
9664 / 5614 / 952
Регистрация: 25.07.2009
Сообщений: 10,778
29.11.2010, 09:19
кстати, максимальную/минимальную цифру можно проще найти... а для определения количества цифр и рекурсия никакая не нужна...
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
#include <stdio.h>
#include <math.h>
 
unsigned int sum(unsigned int number) { return ( number > 9 ) ? number % 10 + sum(number / 10) : number; }
 
unsigned int cnt(unsigned int number) { return (unsigned int)log10((double)number) + 1; }
 
unsigned int max(unsigned int number) { 
    return ( number < 10 ) ? number : ( number % 10 > number % 100 / 10 ) ?
        max((number / 100) * 10 + number % 10) : max(number / 10);
}
 
unsigned int min(unsigned int number){
    return ( number < 10 ) ? number : (number % 10 < number % 100 / 10 ) ?
        min((number / 100) * 10 + number % 10) : min(number / 10);
}
 
int main(void){
    unsigned int number;
    
    while ( printf("Number: ") && scanf("%u", &number) == 1 && number )
        printf("\tSum:\t%u\n\tCount:\t%u\n\tMax:\t%u\n\tMin:\t%u\n", sum(number), cnt(number), max(number), min(number));
    
    return 0;
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru