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

Найти длину такого первого идентификатора в строку, в котором произведение всех четных цифр максимально - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Что делает функция length? http://www.cyberforum.ru/cpp-beginners/thread344624.html
void main() { using namespace std; string st,stt; cout << "enter name files:" <<endl; char name; cin >> name; ifstream inf(name); getline(inf,st); int i = 0, f = 1;
C++ что за ошибка "новичек" что за ошибка? #include<iostream> using namespace std; int main() { //параметры уравнения double a,b; //логическая переменная для записи проверяемых условий bool... http://www.cyberforum.ru/cpp-beginners/thread344604.html
Цепочка слов C++
Задача: Цепочка слов. Вход – файл на диске in4.dat. состоящий из слов. Разделенных пробелами два последних слова символьное изображение чисел. Выход – на экран дисплея. Дано множество слов...
растолкуйте про хэш плиз C++
на картинке реализация поиска в "hash_map" от Страуструпа. И все бы хорошо если бы не один момент. b и v это векторы. И доступ по индексу в векторе ассоциируется у меня с чем то упорядоченным,...
C++ Вопросы на логику http://www.cyberforum.ru/cpp-beginners/thread344577.html
Добрый день форумчане.... не смогли бы вы задать вопросов на логику или программ каких нибудь? хочу проверить себя... как хорошо соображает голова.... только предупреждаю интернет медленный...
C++ Получить последовательность Решить с помощью списков: 1.Даны натуральное число n, действительные числа a1,..., an. Вычислить: Sqrt(10+(a1)^2)+...+sqrt(10+(an)^2) 2.Даны натуральное число n, действительные числа r1, ...,... подробнее

Показать сообщение отдельно
villu
203 / 204 / 4
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
24.08.2011, 12:31
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
#include <stdio.h>
 
#define is_digit(val) ((((val) >= '0') && ((val) <= '9')) ? 1 : 0)
 
unsigned long get_tok_sum(char *_in, char** point, const char stop_sym) {
    unsigned long res = 1;
    char *p = _in;
 
    if( 0 == _in ) return res;
 
    while( *p != stop_sym && !is_digit(*p) ) p++;
 
    while( is_digit(*p) ) {
        if( ++s % 2 == 0 )
            res *= (*p - '0');
        p++;
    }
    *point = p;
    return res;
}
 
int main() {
 
    char str[]      = "2111 132822 45679 44443 88 999999*";
    char *p = str;
    unsigned long max = 0;
    unsigned long tmp = 0;
    
 
    while( *p != '*' ) {
        tmp = get_tok_sum(p, &p, '*');
        max = max > tmp ? max : tmp;
    }
 
    printf("%u\n", max);
    return 0;
}
или так:
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
#include <stdio.h>
 
#define is_digit(val) ((((val) >= '0') && ((val) <= '9')) ? 1 : 0)
 
unsigned long get_max_tok(char *_in, const char stop_sym) {
    unsigned long res = 0;
    unsigned long new_res = 0;
    char *p = _in;
 
    if( 0 == _in || *_in == stop_sym ) return res;
 
    while( *p != stop_sym && !is_digit(*p) ) p++;
 
    while( is_digit(*p) ) {
        res += (*p - '0');
        p++;
    }
    new_res = get_max_tok(p, stop_sym);
    return (res > new_res) ? res : new_res;
}
 
int main() {
 
    char str[]      = "2111 132822 99999999 45679 44443 88 999999 435234 3456 3546 3546 3456 34563 456 3456 *";
    char *p = str;
 
    printf("%u\n", get_max_tok(p, '*'));
    return 0;
}
Добавлено через 11 минут
а, не заметил в условии про четные цифры и произведение
тогда просто добавить:
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
#include <stdio.h>
 
#define is_digit(val) ((((val) >= '0') && ((val) <= '9')) ? 1 : 0)
 
unsigned long get_max_tok(char *_in, const char stop_sym) {
    unsigned long res = 1;
    unsigned long new_res = 0;
    unsigned long s = 0;
    char *p = _in;
 
    if( 0 == _in || *_in == stop_sym ) return res;
 
    while( *p != stop_sym && !is_digit(*p) ) p++;
 
    while( is_digit(*p) ) {
        if( ++s % 2 == 0 )
            res *= (*p - '0');
        p++;
    }
    new_res = get_max_tok(p, stop_sym);
    return (res > new_res) ? res : new_res;
}
 
int main() {
 
    char str[]      = "15151515 999999*";
    char *p = str;
 
    printf("%u\n", get_max_tok(p, '*'));
    return 0;
}
в первый вариант так же переделать.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru