Tablica

O jezykach programowania w platformach i nie tylko.
Awatar użytkownika
Tig3r
Przyjaciel Forum
Przyjaciel Forum
Posty: 2310
Rejestracja: 02 sty 2008, 10:46

Nieprzeczytany post autor: Tig3r »

Tak da się sprawdzasz cały ciąg i lecisz literka po literce i rozdzielasz na "słowa" oddzielone separatorem.
======================================================
Nie głupi ten co nie wie, lecz ten który nie chce się nauczyć..

Awatar użytkownika
fxBobi
Gaduła
Gaduła
Posty: 244
Rejestracja: 20 sie 2008, 18:43

Nieprzeczytany post autor: fxBobi »

@lekarz2
Więc tak poniżej algorytm na twoją prośbę , osobiście nie wiem gdzie może zostać zastosowana taka koncepcja :P .
Aby zadziało poprawnie musisz utworzyc pliki test2.txt(plik z danymi ), oraz test.txt(plik gdzie zostaną wyeksportowane dane w celu sprawdzenia poprawności zawartości Tabeli) w odpowiedniej lokacji, do pliku test2.txt wkleić

Kod: Zaznacz cały

kup;eurusd;1.2800;1.2860;1.8976
Lub cos innego ale z odpowiednią proporcją ilości znaków do separatora (ważne jest to przy importowaniu)
Mam nadzieje że załapiesz sposób . :wink:

Kod: Zaznacz cały

#property copyright ""
#property link      ""

#property indicator_chart_window

int init()
  {

   return(0);
  }

int deinit()
  {

   return(0);
  }

int start()
  {
  string tab[10];
  int plik2=FileOpen("test2.txt",FILE_READ|FILE_BIN);
  int i=0;   
  tab[i] = FileReadString(plik2,3);
  FileSeek(plik2,1,SEEK_CUR);
  tab[i+1] = FileReadString(plik2,6);
  FileSeek(plik2,1,SEEK_CUR);
  tab[i+2] = FileReadString(plik2,6);
  FileSeek(plik2,1,SEEK_CUR);
  tab[i+3] = FileReadString(plik2,6);
  FileSeek(plik2,1,SEEK_CUR);
  tab[i+4] = FileReadString(plik2,6);

  FileClose(plik2);
     
  int plik3=FileOpen("test.txt",FILE_WRITE|FILE_BIN);
  for(int ii=0;ii<=10;ii++)
     {
     FileWrite(plik3,"tab["+ii+"]: "+tab[ii]);
     }
     FileClose(plik3);   
   
   return(0);
  }

lekarz2
Gaduła
Gaduła
Posty: 172
Rejestracja: 17 cze 2010, 16:30

Nieprzeczytany post autor: lekarz2 »

Powinienem już dać sobie radę:)
fxBobi - dzięki że włożyłeś w to tyle serca:)

tmkk90
Stały bywalec
Stały bywalec
Posty: 50
Rejestracja: 12 lip 2010, 19:13

Nieprzeczytany post autor: tmkk90 »

A czy moglby mi ktos napisac jak powinna wygladac tablica z cenami otwarcia z danego okresu np. 20 swiec (chcialbym aby okres mozna bylo ustawiac) i jak 'wybrac' z tej tablicy minimalna i maksymalna wartosc?

Awatar użytkownika
fxBobi
Gaduła
Gaduła
Posty: 244
Rejestracja: 20 sie 2008, 18:43

Nieprzeczytany post autor: fxBobi »

@tmkk90

Dla sprawdzenia Esport do pliku . files/test.txt

Kod: Zaznacz cały

#property copyright "Paweł Bobryk"
#property link      ""
double tab[10];
int zakres=80;
#property indicator_chart_window

int  init()
  {
   return(0);
  }

int deinit()
  {

   return(0);
  }
int start()
  {
  if(ArrayResize(tab,zakres))
    {
    for(int i=0;i<=zakres;i++)
       {
       tab[i]=Close[i];
       }
    }
  int plik=FileOpen("test.txt",FILE_WRITE);
  for(int ii=0;ii<=zakres;ii++)
     {
     FileWrite(plik,"tab["+ii+"]: "+tab[ii]);
     }
  FileWrite(plik,"max: "+tab[ArrayMaximum(tab,WHOLE_ARRAY,0)]);
  FileWrite(plik,"min: "+tab[ArrayMinimum(tab,WHOLE_ARRAY,0)]);
  FileClose(plik);
  }

tmkk90
Stały bywalec
Stały bywalec
Posty: 50
Rejestracja: 12 lip 2010, 19:13

Nieprzeczytany post autor: tmkk90 »

'ArrayResize' - comparison expression expected :/ co z tym zrobic?

Awatar użytkownika
fxBobi
Gaduła
Gaduła
Posty: 244
Rejestracja: 20 sie 2008, 18:43

Nieprzeczytany post autor: fxBobi »

@tmkk90

NIc otwórz folder

Kod: Zaznacz cały

 ../MT/experts/files 
i tam w pliku test.txt znajduje się
Zawartości tabeli do której chciałeś aby zapisać ceny zamknięcia oraz na samym dole max, min.

Jeżeli nie chcesz eksportu do pliku usuń .

Kod: Zaznacz cały

  int plik=FileOpen("test.txt",FILE_WRITE);
  for(int ii=0;ii<=zakres;ii++)
     {
     FileWrite(plik,"tab["+ii+"]: "+tab[ii]);
     }
  FileWrite(plik,"max: "+tab[ArrayMaximum(tab,WHOLE_ARRAY,0)]);
  FileWrite(plik,"min: "+tab[ArrayMinimum(tab,WHOLE_ARRAY,0)]);
  FileClose(plik);
A np żeby znaleźć największą wartości używamy ArrayMaximum
W praktyce

Kod: Zaznacz cały

double max=tab[ArrayMaximum(tab,WHOLE_ARRAY,0)];

tmkk90
Stały bywalec
Stały bywalec
Posty: 50
Rejestracja: 12 lip 2010, 19:13

Nieprzeczytany post autor: tmkk90 »

Teraz moj kod wyglada tak:

Kod: Zaznacz cały

int init()
  {
  if(ArrayResize(tab,zakres) && ArrayResize(tab1,zakres))
    {
    for(int i=0;i<=zakres;i++)
       {
       tab[i]=High[i];
       tab1[i]=Low[i];
       }
    }
double max=tab[ArrayMaximum(tab,WHOLE_ARRAY,0)];
double min=tab1[ArrayMinimum(tab1,WHOLE_ARRAY,0)];
  }
zaden blad nie wyskakuje, ale jak chce zmienic zakres, to tak jakby wogole nie reagowal

Awatar użytkownika
CoVal
Gaduła
Gaduła
Posty: 320
Rejestracja: 06 paź 2005, 22:45

Re: Tablica

Nieprzeczytany post autor: CoVal »

Wracajac do poczatkowego pytania:
fxBobi pisze:Jak możecie mi podpowiedzieć po wypadło mi z głowy.
W jaki sposób przypisywać pewna wartość do danego idexu tablicy .

Kod: Zaznacz cały

  tab[2]=10;
  int xf=tab[2];
  Comment(xf);
Ale ciągle pojawia mi sie "0" zamiast 10.

odpowiedz jest prost i juz sie na pewno sam domysliles -
zadekalrowales (co wynika z twojego nastepnego postu) wielkosc tablicy

Kod: Zaznacz cały

int tab[2];
a potem usilowales sie odwolac do trzeciego elementu tej tablicy...

Kod: Zaznacz cały

tab[2]=10;
int xf=tab[2]; 
bo 2 elementowa tablica to tab[0] i tab[1]

ODPOWIEDZ