Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.04.2017, 22:19   #1
StillPhelix
Пользователь
 
Регистрация: 18.05.2014
Сообщений: 35
По умолчанию Компилятор выдаёт ошибку error C2059: syntax error : '}'

Компилятор выдаёт ошибку error C2059: syntax error : '}' в строке 91. Самая последняя строка.
Код:
#include <iostream>
#include <iso646.h>

using namespace std;

#define xor ^
#define isEven(x)((x&0x01)==0)//проверка на чётность
#define isOdd(x)(x&0x01)//не чётные
#define swap(x,y)(x^=y,y^=x,x^=y)//обмен содержимым x и y

void ExtBinEuclid(int *, int *, int *, int *, int *);

int main(int argc, char *argv[])
{
	int a,b,gcd;
	if (argc<3)
	{
		cerr<<"Как использовать: xeuchld u v"<<endl;
		return -1;
	}
	int u=atoi(argv[1]);
	int v=atoi(argv[2]);
	if (u<=0||v<=0)
	{
		cerr<<"Аргумент должен быть положителен!"<<endl;
		return -2;
	}
	//предупреждение: u и v будут переставлены если u < v
	ExtBinEuclid(&u,&v,&a,&b,&gcd);
	cout<<a<<"*"<<u<<"+(-"<<b<<")*"<<v<<"="<<gcd<<endl;
	if(gcd==1)
		cout<<"Обратное значение "<<v<<" mod "<<u<<" is: "<<u-b<<endl;
	return 0;
}

void ExtBinEuclid(int *u, int *v, int *u1, int *u2, int *u3)
{
	//предупреждение: u и v будут переставлены, если u<v
	int k;
	int t1;
	int t2;
	int t3;
	if(*u<*v)swap(*u,*v);
	for(k=0;isEven(*u)&&isEven(*v);++k)
	{
		*u>>=1;
		*v>>=1;
	}
	*u1=1; *u2=0; *u3=*u; t1=*v; t2=*u-1; t3=*v;
	do 
	{
		do 
		{
			if(isEven(*u3))
			{
				if (isOdd(*u1)||isOdd(*u2))
				{
					*u1+=*v;
					*u2+=*u;
				}
				*u1>>=1;
				*u2>>=1;
				*u3>>=1;
			}
			if (isEven(t3)||*u3<t3)
			{
				swap(*u1,t1);
				swap(*u2,t2);
				swap(*u3,t3);
			}
			while(isEven(*u3));
			while(*u1<t1||*u2<t2)
			{
				*u1+=*v;
				*u2+=*u;
			}
			*u1-=t1;
			*u2-=t2;
			*u3-=t3;
		}
		while(t3>0);
		while(*u1>=*v&&*u2>=*u)
		{
			*u1-=*v;
			*u2-=*u;
		}
		*u<<=k;
		*v<<=k;
		*u3<<=k;
	}
}
StillPhelix вне форума Ответить с цитированием
Старый 22.04.2017, 22:23   #2
alexzk
Форумчанин
 
Регистрация: 12.04.2017
Сообщений: 889
По умолчанию

предпоследняя скобка начинается как
do
{

т.е. ей нужен while
alexzk вне форума Ответить с цитированием
Старый 22.04.2017, 22:31   #3
StillPhelix
Пользователь
 
Регистрация: 18.05.2014
Сообщений: 35
По умолчанию

Понял. Первый
do
{
был лишним.
StillPhelix вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Visual Studio С++. при проверке условий ошибка error C2059: syntax error : ')' Kitekat Помощь студентам 5 07.07.2014 18:36
При компиляции VS2005 во внешнем хидере вылазит error C2059: syntax error : 'return' calypso Visual C++ 13 10.06.2014 08:01
Причина ошибки Parse error: syntax error, unexpected T_VARIABLE Masafi PHP 4 10.05.2013 18:31
Выдает ошибку Parse error: syntax error hasio PHP 1 08.06.2012 16:48
Выдаёт ошибку: acos DOMAIN error,полсе нажатия окей,ещё одну ошибку pow OWERFLAW ERROR prikolist Общие вопросы C/C++ 4 10.04.2009 20:27