1

Тема: Спрощення умови

int function_recursion(int length, int i)
{
    if (length == 0) return amount;
    if (str[i] == '0' || str[i] == '1' || str[i] == '2' || str[i] == '3' || str[i] == '4' 
        || str[i] == '5' || str[i] == '6' || str[i] == '7' || str[i] == '8' || str[i] == '9') amount++;
    i++; 
    length--;
    return function_recursion(length, i);
}

Чи можна спростити дану умову:

if (str[i] == '0' || str[i] == '1' || str[i] == '2' || str[i] == '3' || str[i] == '4' 
        || str[i] == '5' || str[i] == '6' || str[i] == '7' || str[i] == '8' || str[i] == '9') amount++;

?

2

Re: Спрощення умови

Конкретно тут:

#include<cctype>
...
if( isdigit(str[i]) ) ...

Якщо набір символів довільний, то часто роблять так:

#include <cstring>
...
if( strchr( "0123456789", str[i] ) ) ...
Подякували: vitalii971

3

Re: Спрощення умови

можна перевести char в int і перевірити

if(value>=0 && value<=9)
Подякували: vitalii971

4

Re: Спрощення умови

FakiNyan написав:

можна перевести char в int і перевірити

if(value>=0 && value<=9)

Можна й не переводити:

if(str[i]>='0' && str[i]<='9')
Подякували: FakiNyan, vitalii97, leofun013

5

Re: Спрощення умови

P.Y. написав:
FakiNyan написав:

можна перевести char в int і перевірити

if(value>=0 && value<=9)

Можна й не переводити:

if(str[i]>='0' && str[i]<='9')

а, ну тічно, там же оті коди ваші

Подякували: vitalii971

6

Re: Спрощення умови

P.Y. написав:
FakiNyan написав:

можна перевести char в int і перевірити

if(value>=0 && value<=9)

Можна й не переводити:

if(str[i]>='0' && str[i]<='9')

Але з точки зору ідеального коду краще так не робити. По-перше, просто красивіше писати

if( '0' <= str[i] && str[i] <= '9' )

а по-друге, цей вираз покладається на не зовсім очевидний факт (хоча й на 99% очевидний :)), що цифри 0-9 ідуть в кодуванні поспіль і саме в такій послідовності.

Подякували: vitalii971

7 Востаннє редагувалося -=ЮрА=- (14.03.2016 07:39:33)

Re: Спрощення умови

vitalii97, як взагалі звучить завдання, підрахувати кількість не цифр у рядку?Можливі й інші варіанти

Подякували: vitalii971

8

Re: Спрощення умови

Мені здається, що ці способи найкращі. Усім дякую за відповіді)

#include<cctype>
...
if( isdigit(str[i]) ) ...

#include <cstring>
...
if( strchr( "0123456789", str[i] ) ) ...