- 001
 - 002
 - 003
 - 004
 - 005
 - 006
 - 007
 - 008
 - 009
 - 010
 - 011
 - 012
 - 013
 - 014
 - 015
 - 016
 - 017
 - 018
 - 019
 - 020
 - 021
 - 022
 - 023
 - 024
 - 025
 - 026
 - 027
 - 028
 - 029
 - 030
 - 031
 - 032
 - 033
 - 034
 - 035
 - 036
 - 037
 - 038
 - 039
 - 040
 - 041
 - 042
 - 043
 - 044
 - 045
 - 046
 - 047
 - 048
 - 049
 - 050
 - 051
 - 052
 - 053
 - 054
 - 055
 - 056
 - 057
 - 058
 - 059
 - 060
 - 061
 - 062
 - 063
 - 064
 - 065
 - 066
 - 067
 - 068
 - 069
 - 070
 - 071
 - 072
 - 073
 - 074
 - 075
 - 076
 - 077
 - 078
 - 079
 - 080
 - 081
 - 082
 - 083
 - 084
 - 085
 - 086
 - 087
 - 088
 - 089
 - 090
 - 091
 - 092
 - 093
 - 094
 - 095
 - 096
 - 097
 - 098
 - 099
 - 100
 
                        void getCoeffFromString()
{
	if (sscanf(input.c_str(),"%i*x^2%i*x%i=%i",&a ,&b ,&c,&d)==4)   {}                                                    //ax^2+bx+c=d
	else 
		{
			a,b,c,d=0;
			if (sscanf(input.c_str(),"%i*x^2%i%i*x=%l",&a ,&c ,&b,&d)==4)  {}
			 else
			  {
			  a,b,c,d=0;
			  if (sscanf(input.c_str(),"%i*x%i%i*x^2=%i",&b ,&c ,&a,&d)==4)        {}
		else	
			{
				a,b,c,d=0;
				if (sscanf(input.c_str(),"%i*x%i*x^2%i=%i",&b ,&a ,&c,&d)==4)        {}
		else
		{
			a,b,c,d=0;
			if (sscanf(input.c_str(),"%i%i*x^2%i*x=%i",&c ,&a ,&b,&d)==4)         {}
		else	
			{
				a,b,c,d=0;
				if (sscanf(input.c_str(),"%i%i*x%i*x^2=%i",&c ,&b ,&a,&d)==4)            {}
		else		
			{
				a,b,c,d=0;
				if (sscanf(input.c_str(),"%i=%i*x^2%i*x%i",&d ,&a ,&b,&c)==4)         {}
		else 
			{
				a,b,c,d=0;
				if (sscanf(input.c_str(),"%i=%i*x%i*x^2%i",&d ,&b ,&a,&c)==4)     {}
			else		
				{
					a,b,c,d=0;
					if (sscanf(input.c_str(),"%i=%i%i*x^2%i*x",&d ,&c ,&a,&b)==4)   {} 
			else
				{
					a,b,c,d=0;
					if (sscanf(input.c_str(),"%i=%i%i*x%i*x^2",&d ,&c ,&b,&a)==4)     {}
		    else  
			    { 
					a,b,c,d=0;
					if (sscanf(input.c_str(),"%i=%i*x^2%i%i*x",&d ,&a ,&c,&b)==4)   {}
		    else
                  {
					  a,b,c,d=0;
					  if (sscanf(input.c_str(),"%i=%i*x%i%i*x^2",&d ,&b ,&c,&a)==4)    {}
					else	
						{
							a,b,c,d=0;
							if (sscanf(input.c_str(),"%i*x^2%i*x=%i",&a ,&b ,&c)==3)    {}
					else
						{
							a,b,c,d=0;
							if (sscanf(input.c_str(),"%i*x%i*x^2=%i",&b ,&a ,&c)==3)    {}
				    else
					    {
						a,b,c,d=0;
						if (sscanf(input.c_str(),"%i*x=%i%i*x^2",&b ,&c ,&a)==3)    {}
				     else	
					      {
                            a,b,c,d=0;
							if (sscanf(input.c_str(),"%i*x=%i*x^2%i",&b ,&a ,&c)==3)    {}
					else				
						{
							a,b,c,d=0;
							if (sscanf(input.c_str(),"%i*x^2=%i%i*x",&a ,&c ,&b)==3)    {}
					else		
						{
							a,b,c,d=0;
							if (sscanf(input.c_str(),"%i*x^2=%i*x%i",&a ,&b ,&c)==3)    {} 
					else
						{
							a,b,c,d=0;
							if (sscanf(input.c_str(),"%i=%i*x%i*x^2",&c ,&b ,&a)==3)    {}
			        else	
						{
							a,b,c,d=0;
							if (sscanf(input.c_str(),"%i=%i*x^2%i*x",&c ,&a ,&b)==3)    {}
					else
						{
							a,b,c,d=0;
					      	if (sscanf(input.c_str(),"%i*x^2=%i",&a ,&c)==2)    {}
					else
						{
							a,b,c,d=0;
							if (sscanf(input.c_str(),"%i*x^2=%i*x",&a ,&b)==2)  {}
					else
						{
							a,b,c,d=0;
							if (sscanf(input.c_str(),"%i*x=%i",&b ,&c)==2)    {cout<<a<<"vda"<<b<<"v"<<c<<"v"<<d;}
					else
						{
							a,b,c,d=0;
							if (sscanf(input.c_str(),"%i*x=%i*x^2",&b ,&a)==2)    {cout<<a<<"vda"<<b<<"v"<<c<<"v"<<d;}
					else
						{
							a,b,c,d=0;
							if (sscanf(input.c_str(),"%i=%i*x",&c ,&b)==2)    {}
					else
                                 
        
            Как я парсил квадратное уравнение. "У меня 27 сканэфов и ни один не работает"
        
        
а т.к. мы в разделе сишки, то надо брать заплесневелый хардкор - як/бизон
У нас на предкомпилированный хедер и гига не хватало. Но там то большой проект, запачканый бустом по самое немогу (но без спирта). Год назад измерял, когда временные файлы сборки на винт в памяти сувал. Раз в два ускорило сборку кстати. Только браузер тормозить стал. Надо ещё хотя бы 4 гб
велосипедисты как всегда рядом.
Плюс, мне было самому интересно, и я готовился к специальной олимпиаде, где темой было синтетическое программирование, и задание было как раз втему.
Нет. Бустоблядских инклудов (вон тот список на pastebin, который перечислен над pch.h).
Это элементарно делается при помощи %[^] и %[] и %n для определения длинны.
Не использовать sprintf
Никогда не использовать sprintf
Если уж приспичило, то использовать хотя бы snprintf
В качестве строки форматирования никогда не передавать изменяемую строку. Только "%s", если нужно, а дальше саму строку.
Никогда не передавать ссылки
Никогда не ошибаться с количеством и типом форматирующих параметров
Включать варнинги проверки строки форматирования, а лучше проверять анализатором кода
Для size_t и результатов sizeof использовать %zu
Проверяете результат snprintf, чтобы узнать о проблемах переполнения, если это необходимо