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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 23, средняя оценка - 4.61
Bloodykeeper
This party getting crazy!
78 / 74 / 1
Регистрация: 22.09.2009
Сообщений: 427
#1

Дирректива define и прочее - C++

11.02.2010, 16:51. Просмотров 2961. Ответов 33
Метки нет (Все метки)

Помогите пожалуйста решить задание, никогда раньше с такими не сталкивался! =(

1) Даны целые числа x, у и вещественное число z. Используя директиву #define для нахождения наибольшего из чисел, вычислить
S=max(x+y+z, xyz)+3max(xy2, z2).

2)Назовём шестизначный автобусный билет удачным, если сумма его цифр делится на 7. Могут ли два билета подряд быть удачными?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.02.2010, 16:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Дирректива define и прочее (C++):

Дирректива процессора - C++
Добрый Вечер! У меня в экзаменационном билете по Си есть такой вопрос: директивы процессора. заголовочный файл. Не могли бы вы мне...

Скремблирование и прочее - C++
Добрый день, помогите разобраться. Нужно написать программу для скремблирование файлов. Но перед этим вопрос: как из исходного файла...

С++ VLA и прочее... - C++
Перенесено из http://www.cyberforum.ru/cpp-beginners/thread713916.html Dev-C++ меня удивляет. Вот такой код компилирует без ошибок и...

#define - C++
#define зачем нужна это заголовочный файл какие у него функции и как им ползоватса?

c++11 и $define - C++
Есть код который прекрасно компилируется без -std=c++11, но как только я включаю эту опцию то константы препроцессора не заменяются и...

#define c :: - C++
Подскажите как реализовать такую замену: #define sa2::sys::getClientKernel()->getXDBTManager() cls_SimpleXDBTManager::Instance() ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
insideone
Модератор
Автор FAQ
3638 / 916 / 49
Регистрация: 10.01.2010
Сообщений: 2,469
12.02.2010, 18:36 #16
Смысл в том что
C++
1
max(x+y+z, x*y*z)
это на самом деле
C++
1
((x+y+z) > (x*y*z) ? (x+y+z) : (x*y*z))
Именно этот код будет послан на компиляцию
zim22
depict1
276 / 141 / 2
Регистрация: 11.07.2009
Сообщений: 606
12.02.2010, 18:49 #17
Цитата Сообщение от Bloodykeeper Посмотреть сообщение
нам это в инсте не читали. =(
подожди, пока почитают. куда спешить.
Bloodykeeper
This party getting crazy!
78 / 74 / 1
Регистрация: 22.09.2009
Сообщений: 427
12.02.2010, 18:55  [ТС] #18
zim22, да, в этом году читать уже не будут=)) а работать надо.
Genius Ignat
1236 / 774 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
12.02.2010, 20:26 #19
C
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
#include <math.h>
#define max(a, z) ((a) > (z) ? (a) : (z))
void main() {
    int x, y, S;
    float z;
    puts("Please enter elements x, ?, z: ");
    scanf("%d%d%f", &x, &y, &z);
 
    S=max(x+y+z, x*y*z)+3*max(x*(y*y), z*z); //можно было pow и не использовать
 
    printf("Element S=%d", S);  //спецификатор %d какой там %f
}
За что я не люблю IO в C, так это за спецификацию формата.

Добавлено через 58 минут
2)Назовём шестизначный автобусный билет удачным, если сумма его цифр делится на 7. Могут ли два билета подряд быть удачными?
Что за экзотика где это откапывают, у нас в институте задаче человеческие и более интересные.

Добавлено через 3 минуты
Bloodykeeper:
Алгоритм разбиение числа на цифры уже был на странице 1.
Что тут ещё делать надо.
Проверь два билета на удачность да и всё, я что то логики программы не вижу, что надо ещё делать.
insideone
Модератор
Автор FAQ
3638 / 916 / 49
Регистрация: 10.01.2010
Сообщений: 2,469
12.02.2010, 20:28 #20
Цитата Сообщение от Genius Ignat Посмотреть сообщение
Что за экзотика где это откапывают, у нас в институте задаче человеческие и более интересные.
У нас тоже такое было, как по мне довольно неплохое задание. Фишку про "счастливый" билет знал и до этого задания. Типа приметы чтоль Только у меня счастливый билет это когда сумма правых цифр и левых цифр равняется например 163451 (1+6+3 == 4+5+1). Считается что счастливый билет надо съесть чтобы он принес счастье, ну это для хардкорщиков типа
Genius Ignat
1236 / 774 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
12.02.2010, 20:31 #21
два билета подряд
Это как объясните?
Может я что то не до понимаю.
insideone
Модератор
Автор FAQ
3638 / 916 / 49
Регистрация: 10.01.2010
Сообщений: 2,469
12.02.2010, 20:32 #22
Типа есть билет x и он оказался удачным. Может ли x++ быть удачным?
Genius Ignat
1236 / 774 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
12.02.2010, 20:34 #23
Тьфу...
Хотя б выражались правильнее.
easybudda
Модератор
Эксперт CЭксперт С++
9531 / 5524 / 932
Регистрация: 25.07.2009
Сообщений: 10,611
12.02.2010, 20:45 #24
Тупым перебором не нашлось таких билетов...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
 
int main(){
    const int start_num = 8;
    const int finish_num = 1000000;
    const int divider = 7;
    
    for ( int i = start_num; i < finish_num; ++i )
        if ( !(i % divider ) && !((i - 1) % divider) )
            std::cout << (i - 1) << " and " << i << std::endl;
    
    return 0;
}
insideone
Модератор
Автор FAQ
3638 / 916 / 49
Регистрация: 10.01.2010
Сообщений: 2,469
12.02.2010, 21:02 #25
2 easybudda что то я не разобрался вы разве сумму цифр считаете. Вы помоему сам номер билета на 7 делите

Сумма цифр будет на 1 больше или на 8 меньше, вроде такое число не будет делиться на 7
easybudda
Модератор
Эксперт CЭксперт С++
9531 / 5524 / 932
Регистрация: 25.07.2009
Сообщений: 10,611
12.02.2010, 21:05 #26
insideone, ага, погорячился... Вот много раз говорил себе - читай внимательнее задания... Домой приеду, не лень будет - переделаю...
Evg
Эксперт CАвтор FAQ
17635 / 5859 / 378
Регистрация: 30.03.2009
Сообщений: 16,160
Записей в блоге: 26
12.02.2010, 23:44 #27
Bloodykeeper, после строки со scanf'ом воткни

C
1
printf("x=%d, y=%d, z=%f", x, y, z);
insideone
Модератор
Автор FAQ
3638 / 916 / 49
Регистрация: 10.01.2010
Сообщений: 2,469
13.02.2010, 01:36 #28
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
int main(){
    bool Luck = false;
    int LuckCount = 0;
    for (int b = 0; b < 1000000; ++b)
    {
        char Buf[6] = {0};
        char One[2] = {0, 0};
        itoa(b, &Buf[0], 10);
        unsigned short Summ = 0;
        for (int i = 0; i < 6; ++i)
        {
            One[0] = Buf[i];
            Summ += atoi(&One[0]);
        }
        if ( (Summ % 7) == 0 )
        {
            if ( Luck )
            {
                LuckCount++;
                cout << "Билет " << (b-1) << " и билет " << b << " счастливые!" << endl;
                Luck = false;
            }
            else
            {
                Luck = true;
            }
        }
        else
        {
            Luck = false;
        }
    }
    if ( LuckCount == 0 )
        cout << "Таких билетов нет :(";
 
return 0;
}
Попробовал решить брутфорсом, вроде код верный. Не знаю уж... выдает что
Билет 69999 и билет 70000 счастливые!
Билет 159999 и билет 160000 счастливые!
Билет 249999 и билет 250000 счастливые!
Билет 339999 и билет 340000 счастливые!
Билет 429999 и билет 430000 счастливые!
Билет 519999 и билет 520000 счастливые!
Билет 589999 и билет 590000 счастливые!
Билет 609999 и билет 610000 счастливые!
Билет 679999 и билет 680000 счастливые!
Билет 769999 и билет 770000 счастливые!
Билет 859999 и билет 860000 счастливые!
Билет 949999 и билет 950000 счастливые!
Так?
easybudda
Модератор
Эксперт CЭксперт С++
9531 / 5524 / 932
Регистрация: 25.07.2009
Сообщений: 10,611
13.02.2010, 01:45 #29
вроде исправился...
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
 
long digits_sum(long number){
    long summ = 0;
    
    if ( number > 0 ) {
        do {
            summ += number % 10;
        } while ( number /= 10 );
    }
    
    return (summ);
}
 
int main(void){
    long i;
    
    for ( i = 7; i < 999999; ++i )
        if ( !(digits_sum(i) % 7) && !(digits_sum(i+1) % 7) )
            printf("%06ld %06ld\n", i, i+1);
    
    return 0;
}
Добавлено через 1 минуту
insideone, ага, у меня то же получилось...
insideone
Модератор
Автор FAQ
3638 / 916 / 49
Регистрация: 10.01.2010
Сообщений: 2,469
13.02.2010, 01:48 #30
2 easybudda Двойная проверка это сила
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.02.2010, 01:48
Привет! Вот еще темы с ответами:

#define - C++
Здравствуйте, дорогие программисты! сразу хочу сказать, что в С++ я совсем недавно, поэтому толком ничего не знаю Во-первых,...

define - C++
И еще такой вопрос для чего служит #define ??

define не - C++
Здравствуйте. &quot;Дефайню&quot; &quot;%f&quot; для вывода: #define fss &quot;%f&quot;; . И потом делаю вывод вот такой вот: for(i=0;i&lt;n;i++) fscanf(in,fss,&amp;a-&gt;di);. И...

define - C++
Всем здрасьте , что означает эта строчка? #define MAX(a,b) a&gt;b? a:b


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
13.02.2010, 01:48
Ответ Создать тему
Опции темы

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