Odpověď

Upozornění: do tohoto tématu bylo naposledy přispěno před 120 dny.
Zvažte prosím založení nového tématu.
Jméno:
E-mail:
Předmět:
Ikona zprávy:

Ověření:
Křestní jméno zpěváka Gotta:

Zkratky: stiskněte shift+alt+s pro odeslání nebo shift+alt+p pro prohlédnutí


Shrnutí tématu

Poslal: vandrovnik
« kdy: 02-10-2017, 10:56:47 »

Jinak v tom Parser10 - v unitě P10Build jsem měnil jednu drobnost kvůli 64bitové aplikaci.
Původně:
Kód: [Vybrat]
function HackSetLength(var S: String; NewLen: Integer): integer;
type
  PInteger = ^Integer;
begin
  Result := Length(S);
  PInteger(Longint(S)-4)^ := NewLen;
end;
Nově:
Kód: [Vybrat]
function HackSetLength(var S: String; NewLen: Integer): integer;
begin
  Result := Length(S);
  SetLength(s, NewLen);
end;
Poslal: vandrovnik
« kdy: 02-10-2017, 10:52:58 »

Možná http://cc.embarcadero.com/item/15974
Sice ho používám, ale pro celkem primitivní záležitosti.
Poslal: Honyasinid
« kdy: 02-10-2017, 05:58:45 »

It is a very good concept.
Poslal: erdt.martin
« kdy: 03-08-2012, 01:15:28 »

Toto je metoda pro výpočet určitého integrálu středovou metodou:

Kód: C++ [Vybrat]
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using Ciloci.Flee;
  6. using ZedGraph;
  7. using System.Drawing;
  8. using NCalc;
  9.  
  10. namespace Určitý_Integrál
  11. {
  12.     class Middle
  13.     {
  14.         public double hodnotaFunkceMiddle(string textFunkce, double sirkaObdelnikuZ, double spodniHraniceZ, int pocetObdelnikuZ, double horniHraniceZ)
  15.         {
  16.             // vytvoreni a zkopilovani vyrazu
  17.             ExpressionContext context = new ExpressionContext();
  18.             context.Imports.AddType(typeof(Math));
  19.             context.Variables["x"] = (double)0; // vytvoreni promenne, na hodnote nezalezi
  20.             IGenericExpression<double> eGeneric = context.CompileGeneric<double>(textFunkce);
  21.            
  22.             /*
  23.             Expression context = new Expression(textFunkce);
  24.             context.Parameters["x"] = (double)0;
  25.             */
  26.  
  27.             double celkovyObsah = 0; // vsech obdelniku
  28.             double stredObdelniku = spodniHraniceZ + sirkaObdelnikuZ / 2; // stred prvniho obdelniku
  29.  
  30.             for (int i = 0; i < pocetObdelnikuZ; i++)
  31.             {
  32.                 // pro kazdy obdelnik
  33.                 context.Variables["x"] = stredObdelniku; // dosazeni hodnoty
  34.                 double hodnotaFunkceVeStreduObdelniku = eGeneric.Evaluate(); // hodnota v bode, kde pritona funkce stred obdelnika
  35.                 double obsahObdelniku = hodnotaFunkceVeStreduObdelniku * sirkaObdelnikuZ; // obsah obdelnicku
  36.                 celkovyObsah += obsahObdelniku;
  37.  
  38.                 stredObdelniku += sirkaObdelnikuZ; // stred dalsiho obdelniku
  39.             }
  40.             return celkovyObsah;
  41.         }
  42.  
  43.         public void CreateGraphMiddle(ZedGraphControl zgc, string textFunkce, double sirkaObdelnikuZ, double spodniHraniceZ, int pocetObdelnikuZ, double horniHraniceZ)
  44.         {
  45.             zgc.GraphPane.CurveList.Clear();
  46.  
  47.             // vytvoreni a zkopirovani vyrazu
  48.             ExpressionContext context = new ExpressionContext();
  49.             context.Imports.AddType(typeof(Math));
  50.             context.Variables["x"] = (double)0; // vytvoreni promenne, na hodnote nezalezi
  51.             IGenericExpression<double> eGeneric = context.CompileGeneric<double>(textFunkce);
  52.  
  53.  
  54.             GraphPane myPane = zgc.GraphPane;
  55.  
  56.             myPane.Title.Text = "Graf funkce: " + textFunkce;
  57.             myPane.XAxis.Title.Text = "x";
  58.             myPane.YAxis.Title.Text = "y";
  59.  
  60.             PointPairList list1 = new PointPairList(); // puvodni funkce
  61.             PointPairList list2 = new PointPairList(); // aproximace (obdelniky)
  62.  
  63.             double stredObdelniku = spodniHraniceZ + sirkaObdelnikuZ / 2; // stred prvniho obdelniku
  64.             for (int i = 0; i < pocetObdelnikuZ; i++)
  65.             {
  66.                 // pro kazdy obdelnik
  67.                 context.Variables["x"] = stredObdelniku; // dosazeni hodnoty
  68.                 double hodnotaFunkceVeStreduObdelniku = eGeneric.Evaluate(); // hodnota v bode, kde pritona funkce stred obdelnika
  69.                 list1.Add(stredObdelniku, hodnotaFunkceVeStreduObdelniku);
  70.                 list2.Add(stredObdelniku - sirkaObdelnikuZ / 2, hodnotaFunkceVeStreduObdelniku);
  71.                 list2.Add(stredObdelniku + sirkaObdelnikuZ / 2, hodnotaFunkceVeStreduObdelniku);
  72.  
  73.  
  74.                 stredObdelniku += sirkaObdelnikuZ; // stred dalsiho obdelniku
  75.             }
  76.             LineItem myCurve = myPane.AddCurve("Funkce", list1, Color.Red, SymbolType.Circle);
  77.             LineItem myCurve2 = myPane.AddCurve("Aproximace", list2, Color.Blue, SymbolType.None);
  78.             myCurve2.Line.Fill = new Fill(Color.White, Color.Red, 45F);
  79.  
  80.             zgc.AxisChange();
  81.             zgc.RestoreScale(myPane);
  82.  
  83.         }
  84.     }
  85. }
  86.  
  87.  

tak nejak, aby se ten jiny parser dal pouzit zde...
Poslal: erdt.martin
« kdy: 03-08-2012, 01:13:16 »

Ahoj,

parsuji matematicke vyrazy pres knihovnu flee.dll, zde je odkaz: http://flee.codeplex.com/releases/view/8625 bohužel tato knihovna vykresluje v grafu spatne vyrazy typu: -x^2+4, vykresli se spatne, ale kdyz ji napisu takto: -(x^2)+4, vykresli se dobre. Nemate nekdo nejaky jiny matematicky parser s ukazkou pouziti???