powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Использование предпроцессорных средств для определения условий
6 сообщений из 6, страница 1 из 1
Использование предпроцессорных средств для определения условий
    #38898284
Здравствуйте.
Задали задачу по вычислению средствами С++ значения системы уровненний, с использованием предпроцессорных средств.
Пытался сделать так:
Код: plaintext
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.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
#include "stdafx.h"
#include <iostream>
#include "init.h"
using namespace std;
#define suma(a, b) (a+b)
#define w1 (x,a,b) (a+x+b)
#define w2 (x,a,c) ((x+a+c))
//если с не равно 0, то делим, иначе возвращаем 0
#define w3 (x,с) (с!=0?(x/c):(0))



int _tmain(int argc, _TCHAR* argv[])
{
	//int c =  suma(1, 2);

	cout<<"x=" << X<<endl; 
		cout << "a=" <<A<< endl;
			cout << "b="<<B << endl;
				cout << "c="<<C<< endl;
				int x = X;
				int a = A;
				int b = B;
				int c = C;
				
				a = 1;
				c = 1;
				
				//w1
		//		x=-1;
		//		b=1;
				
				
				//w2
		//		x=1;
		//		b=0;
				
				
				//w3
				x = 0;
				b = 1;
				
				if ((x < 0) && (b != 0))
				{
					cout << "w1" << endl;
				//	w1(x, a, b);
				}
					else
					{
						if ((x>0) || (b == 0))
							cout << "w2" << endl;
						//w2(x, a, c);
						else
							cout << "w3"<<endl;
								//w3(X, C);
						}

#if x<0 && b!=0
				cout << "w1" << endl;

#elif x<0 || b==0
				cout<<"w2"<<endl;
#else 
				cout << "w3" << endl;
#endif

		system("pause");
	return 0;
}


В init.h содержится:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
#pragma once
#include <stdio.h>

void init()
{
	std::cout << "helloworld";
}
int X = 1;
int A = 2;
int B = 3;
int C = 4;


В итоге сверяя работу условного оператора if и директивного #if идет расхождение, первый нормально отрабатывает, а второй постоянно выбирает w2, вразумите, что не так делаю?
...
Рейтинг: 0 / 0
Использование предпроцессорных средств для определения условий
    #38898304
Проверил в онлайн компиляторе
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
#include <iostream>

using namespace std;

int main()
{int x2=2;
   
#if x2==1 			
cout << "w1" << endl;

#elif x2==2            
cout << "w2" << endl;
#else 			
cout << "w3" << endl;
#endif
   return 0;
}


Результат w3 почему так?
...
Рейтинг: 0 / 0
Использование предпроцессорных средств для определения условий
    #38898380
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Замени это
Код: plaintext
1.
int x2=2;


на это
Код: plaintext
1.
#define x2 2



Предпроцессор не умеет работать с переменными программы.
...
Рейтинг: 0 / 0
Использование предпроцессорных средств для определения условий
    #38898386
2Dima T Спасибо за комментарий, сам до него дошел за пару минут до этого опытным путем =(
П.С. Если кто-то столкнется с такой же задачей, используйте обычное ветвление, а операции в ветви опишите в макросах и обращайтесь к ним...
...
Рейтинг: 0 / 0
Использование предпроцессорных средств для определения условий
    #38899288
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Студентикк,

так у вас w_i макрофункции ? Тогда почему пробел между именем функции и скобкой начинающей перечисление аргументов ?
...
Рейтинг: 0 / 0
Использование предпроцессорных средств для определения условий
    #38899289
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Студентикк,
не вижу решение системы уравнений. Где оно ?
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Использование предпроцессорных средств для определения условий
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]