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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 23, средняя оценка - 4.61
Bloodykeeper
This party getting crazy!
 Аватар для Bloodykeeper
78 / 74 / 1
Регистрация: 22.09.2009
Сообщений: 427
11.02.2010, 16:51     Дирректива define и прочее #1
Помогите пожалуйста решить задание, никогда раньше с такими не сталкивался! =(

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++ Указатель на массив char и прочее
C++ #define
С++ VLA и прочее... C++
define C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Genius Ignat
1233 / 771 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
11.02.2010, 17:34     Дирректива define и прочее #2
Загляни сюда может станет легче...
Препроцессорные директивы в C/C++ (#include, #define и прочее)
Bloodykeeper
This party getting crazy!
 Аватар для Bloodykeeper
78 / 74 / 1
Регистрация: 22.09.2009
Сообщений: 427
11.02.2010, 17:38  [ТС]     Дирректива define и прочее #3
да читал я это, не очень получается...( я делал вот так:
C
1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
#include <math.h>
#define max(a, z)+max(a, z)
void main() {
    int x, y, S;
    float z;
    puts("Введите значения x, у, z: ");
    scanf("%d%d%f", &x, &y, &z);
    S=max(x+y+z, x*y*z)+3*max(x*y*2, z*2);
    printf("Значение S=%. 3f", S);
}
Но чёт ругается. Может исправите? а по второй, вообще ни одной мыслятины...
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16821 / 5242 / 318
Регистрация: 30.03.2009
Сообщений: 14,118
Записей в блоге: 26
11.02.2010, 17:52     Дирректива define и прочее #4
Что ты хочешь сделать следующей конструкцией?
C
1
#define max(a, z)+max(a, z)
Bloodykeeper
This party getting crazy!
 Аватар для Bloodykeeper
78 / 74 / 1
Регистрация: 22.09.2009
Сообщений: 427
11.02.2010, 18:09  [ТС]     Дирректива define и прочее #5
вычислить
S=max(x+y+z, xyz)+3max(xy2, z2)
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16821 / 5242 / 318
Регистрация: 30.03.2009
Сообщений: 14,118
Записей в блоге: 26
11.02.2010, 18:32     Дирректива define и прочее #6
Т.е. "помогите" по сути дела означает "напишите мне решение"?
Bloodykeeper
This party getting crazy!
 Аватар для Bloodykeeper
78 / 74 / 1
Регистрация: 22.09.2009
Сообщений: 427
11.02.2010, 18:37  [ТС]     Дирректива define и прочее #7
Evg, хм. Нет, подсказать хотя бы, в каком направлении идти. Я написал свой код, но он не работает.
Sekt
 Аватар для Sekt
156 / 155 / 10
Регистрация: 29.04.2009
Сообщений: 637
11.02.2010, 20:43     Дирректива define и прочее #8
2)Назовём шестизначный автобусный билет удачным, если сумма его цифр делится на 7. Могут ли два билета подряд быть удачными?
C
1
2
3
4
5
6
7
8
9
int a=223;
    int sum=0;
    while(a)
    {
        sum+=a%10;
        a=a/10;
 
    }
    if((sum%7==0))cout<<"bilet horoshi :)";
P.s что значить 2 подрят?добавить и сравнить 2 числа подрят?
Bloodykeeper
This party getting crazy!
 Аватар для Bloodykeeper
78 / 74 / 1
Регистрация: 22.09.2009
Сообщений: 427
11.02.2010, 21:21  [ТС]     Дирректива define и прочее #9
подряд, это и есть подряд, да, два подряд.
Sekt
 Аватар для Sekt
156 / 155 / 10
Регистрация: 29.04.2009
Сообщений: 637
11.02.2010, 22:08     Дирректива define и прочее #10
Значит аналогично добавить второе число.
Bloodykeeper
This party getting crazy!
 Аватар для Bloodykeeper
78 / 74 / 1
Регистрация: 22.09.2009
Сообщений: 427
12.02.2010, 17:50  [ТС]     Дирректива define и прочее #11
а как быть с первой?? исправьте мой код пожалуйста. Или подскажите, что не так.
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16821 / 5242 / 318
Регистрация: 30.03.2009
Сообщений: 14,118
Записей в блоге: 26
12.02.2010, 18:06     Дирректива define и прочее #12
C
1
#define max(a, z) ((a) > (z) ? (a) : (z))
Только в условии задачи "3max(xy2, z2)." двойки - это видимо возведение в квадрат, а не умножение на два
Bloodykeeper
This party getting crazy!
 Аватар для Bloodykeeper
78 / 74 / 1
Регистрация: 22.09.2009
Сообщений: 427
12.02.2010, 18:22  [ТС]     Дирректива define и прочее #13
да, квадраты, оплошность допустил. Спасибо большое!
Я изменил код, сменил строчку. Получилось так
C
1
2
3
4
5
6
7
8
9
10
11
#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*pow(y,2), pow(z,2));
    printf("Element S=%f", S);
}
но значение S всё время равняется 0. В чём моя ошибка?
zim22
depict1
 Аватар для zim22
276 / 141 / 2
Регистрация: 11.07.2009
Сообщений: 606
12.02.2010, 18:26     Дирректива define и прочее #14
Цитата Сообщение от Bloodykeeper Посмотреть сообщение
но значение S всё время равняется 0. В чём моя ошибка?
посмотри на исходный код после обработки препроцессором.
в msvc делается установкой флага компиляции /P
Bloodykeeper
This party getting crazy!
 Аватар для Bloodykeeper
78 / 74 / 1
Регистрация: 22.09.2009
Сообщений: 427
12.02.2010, 18:31  [ТС]     Дирректива define и прочее #15
zim22, а можно немного подробнее? нам это в инсте не читали. =(
insideone
Модератор
Автор FAQ
 Аватар для insideone
3619 / 897 / 47
Регистрация: 10.01.2010
Сообщений: 2,420
12.02.2010, 18:36     Дирректива define и прочее #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
 Аватар для zim22
276 / 141 / 2
Регистрация: 11.07.2009
Сообщений: 606
12.02.2010, 18:49     Дирректива define и прочее #17
Цитата Сообщение от Bloodykeeper Посмотреть сообщение
нам это в инсте не читали. =(
подожди, пока почитают. куда спешить.
Bloodykeeper
This party getting crazy!
 Аватар для Bloodykeeper
78 / 74 / 1
Регистрация: 22.09.2009
Сообщений: 427
12.02.2010, 18:55  [ТС]     Дирректива define и прочее #18
zim22, да, в этом году читать уже не будут=)) а работать надо.
Genius Ignat
1233 / 771 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
12.02.2010, 20:26     Дирректива define и прочее #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.
Что тут ещё делать надо.
Проверь два билета на удачность да и всё, я что то логики программы не вижу, что надо ещё делать.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.02.2010, 20:28     Дирректива define и прочее
Еще ссылки по теме:

Скремблирование и прочее C++
C++ c++11 и $define
C++ Рекурентная формула и прочее

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

Или воспользуйтесь поиском по форуму:
insideone
Модератор
Автор FAQ
 Аватар для insideone
3619 / 897 / 47
Регистрация: 10.01.2010
Сообщений: 2,420
12.02.2010, 20:28     Дирректива define и прочее #20
Цитата Сообщение от Genius Ignat Посмотреть сообщение
Что за экзотика где это откапывают, у нас в институте задаче человеческие и более интересные.
У нас тоже такое было, как по мне довольно неплохое задание. Фишку про "счастливый" билет знал и до этого задания. Типа приметы чтоль Только у меня счастливый билет это когда сумма правых цифр и левых цифр равняется например 163451 (1+6+3 == 4+5+1). Считается что счастливый билет надо съесть чтобы он принес счастье, ну это для хардкорщиков типа
Yandex
Объявления
12.02.2010, 20:28     Дирректива define и прочее
Ответ Создать тему
Опции темы

Текущее время: 22:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru