Форум программистов, компьютерный форум 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 state; //ввод параметров управления http://www.cyberforum.ru/cpp-beginners/thread344604.html
Цепочка слов C++
Задача: Цепочка слов. Вход – файл на диске in4.dat. состоящий из слов. Разделенных пробелами два последних слова символьное изображение чисел. Выход – на экран дисплея. Дано множество слов одинаковой длины, из них два слова выделены (выделенным словам соответствуют их номера, записанные в конце файла in4.dat). Построить цепь от первого выделенного слова ко второму так, чтобы все слова этой...
растолкуйте про хэш плиз C++
на картинке реализация поиска в "hash_map" от Страуструпа. И все бы хорошо если бы не один момент. b и v это векторы. И доступ по индексу в векторе ассоциируется у меня с чем то упорядоченным, например , и тд. а строка set_type i = hash(K)%b.size() - какое значение дает i? можно ли гарантировать применив остаток от деления hash(k) на размер вектора, в качестве индекса, что мы не выйдем за...
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, ..., rn. Получить последовательность: rn, ..., r1, r1..., rn; подробнее

Показать сообщение отдельно
villu
202 / 202 / 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;
}
в первый вариант так же переделать.
 
Текущее время: 15:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru