 
			
				26.10.2014, 22:38
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Новичок на форуме 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 26.10.2014 
					
					
					
						Сообщений: 7
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от kostyanet
			 
		
	 | 
 
	| 
		Ваша роль заключается в том чтобы мозги парить?
	 | 
 
	
 
 Да, моя роль заключается в том, чтобы пытаться решать задачи нетривиальным путем для тренировки алгоритмического мышления, а не совать в eval пользовательскую строку. Вообще, я предполагал, что форум -- это место, где дают ответы на добровольной основе, то есть если кому-то кажется, что ему парят мозги -- то он не отвечает. Если, конечно, это адекватный форум; мне казалось, что этот таков. Если я ошибся, то прошу поправить.   
Проще говоря, я не понял, в чем ценность данного ответа в теме. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				26.10.2014, 22:40
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Новичок на форуме 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 26.10.2014 
					
					
					
						Сообщений: 7
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от рони
			 
		
	 | 
 
	
		Scampada, 
 примерно так без скобок и синусов  
function calc(str)
 	{
 	  str = str.replace(/\s+/g, '');
      var re = /(\d+(\.\d+)*)\!/;
 	  for (; re.test(str);) {str = str.replace(re,
      function (a, b)
 	      {
 	        var temp = 1;
            b = parseInt(b);
            while(b) temp *= b--;
            return temp.toFixed(10).toString();
 	      }
 	    )
 	  };
     re = /(\d+\.?\d*)\^(\d+\.?\d*)/;
 	  for (; re.test(str);) {str = str.replace(re,
      function (a, b, c)
 	      {
 	        return Math.pow(b, c).toFixed(10).toString();
 	      }
 	    )
 	  };
      re = /(-*\d+\.?\d*)\/(-*\d+\.?\d*)/;
 	  for (; re.test(str);) {str = str.replace(re,
      function (a, b, c)
 	      {
 	        return (b / c).toFixed(10).toString();
 	      }
 	    )
 	  };
      re = /(-*\d+\.?\d*)\*(-*\d+\.?\d*)/;
 	  for (; re.test(str);) {str = str.replace(re,
      function (a, b, c)
 	      {
 	        return (b * c).toFixed(10).toString();
 	      }
 	    )
 	  };
      re = /(-*\d+\.?\d*)\-(-*\d+\.?\d*)/;
 	  for (; re.test(str);) {str = str.replace(re,
      function (a, b, c)
 	      {
 	        return (b - c).toFixed(10).toString();
 	      }
 	    )
 	  };
      re = /(-*\d+\.?\d*)\+(-*\d+\.?\d*)/;
 	  for (; re.test(str);) {str = str.replace(re,
      function (a, b, c)
 	      {
 	        return (+b + +c).toFixed(10).toString();
 	      }
 	    )
 	  };
 	  return str
 	}
 	alert([calc('2^2^2'),calc('2^2 + 2! -3^1'),calc('-5 + -5')])
	 | 
 
	
 
 Спасибо. Возьму на заметку.  
		
	
		
		
		
		
		
		
	
		
			
			
	
			
			
			
			
			
				 
			
			
			
			
			
			
				
			
			
			
		 
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				26.10.2014, 23:58
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 22.03.2012 
					
					
					
						Сообщений: 3,744
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от Scampada
			
		
	 | 
 
	| 
		Вообще, я предполагал, что форум -- это место, где дают ответы на добровольной основе, то есть если кому-то кажется, что ему парят мозги -- то он не отвечает. Если, конечно, это адекватный форум; мне казалось, что этот таков. Если я ошибся, то прошу поправить.
	 | 
 
	
 
 да, ты ошибся, это только твои желания, каждый здесь по своей причине и делает то, что считает нужным, а адекватность можно оценить только будучи адекватным    
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				27.10.2014, 00:55
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Новичок на форуме 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 26.10.2014 
					
					
					
						Сообщений: 7
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				27.10.2014, 20:47
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 22.03.2012 
					
					
					
						Сообщений: 3,744
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от Scampada
			
		
	 | 
 
	| 
		Ясно. Да не вопрос. То есть, если мне тоже захочется пофлудить, потроллить и пооскорблять, то можно?
	 | 
 
	
 
 можно креститься, когда кажется    
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				28.10.2014, 03:32
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 23.10.2010 
					
					
					
						Сообщений: 2,718
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Это называется токенизер, токенизатор - в основе любого парсера лежит распознавание токенов.  
 
Распознавать токены математического выражения сейчас имеет смысл если они вам нужны. Типа юзер вкатал выражение, вы из него параметры настроек достали. 
 
А если нужен только результат вычисления выражения, тогда eval и капец. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 |  
  |