Search  
Saturday, October 24, 2020 ..:: Forum ::.. Register  Login
 Forum Minimize
Pentru a putea posta mesaje trebuie să vă înregistraţi.
Notă: Mesajele cu conţinut jignitor sau ilegal (inclusiv cereri de soft piratat) nu sunt acceptate şi vor fi şterse imediat .

Pentru a primi raspunsuri rapide si corecte, scrieti in mesaj ce intentionati sa faceti, ce mesaj de eroare primiti, in ce context si in urma caror actiuni. De asemenea, mentionati versiunea de FoxPro in care lucrati!
Dacă nu specificați versiunea, se consideră VFP 9.0 SP2.

SearchForum Home
  Visual FoxPro  Tema pentru acasa  Problema Matric...
 Problema Matrice
 
 2/2/2012 9:27:54 PM
User is offlineSaiSaijo
21 posts


Problema Matrice
 (N/A)
Salutari,

     Trebuie sa rezolv o problema de genul: Pentru fiecare rand dintr-o matrice, mai adaugati unul cu inversul randului anterior.
Ex: 5678   va devenii         5678
      4567                           8765
                                         4567
                                         7654

Sunt la pasul de a scrie noua matrice ordonata, si codul meu este:

DIMENSION MatriceOrd ( lnLinii*2, lnColoane) as Number

x=0
y=0
t=0
k=0
H=0
   

lcFisier=FOPEN("fin2.txt",12)   
DO WHILE !FEOF(lcFisier)
    lcText=FGETS(lcFisier)
?lctext
        x=x+1
        FOR j=1 TO LEN(lcText)  
            IF SUBSTR(lcText,j,1)!=" "
            y=y+1   
                STORE VAL(SUBSTR(lcText,j,1)) TO MatriceOrd(x,y)                                           
            ENDIF           
        ENDFOR

*!*?x       
        x=x+1
*!*?x 
        y=LEN(lcText)+1                                   
        FOR k=LEN(lcText) TO 1
            IF SUBSTR(lcText,k,1)!=" "
                y=y-1
?x   
                STORE VAL(SUBSTR(lcText,k,1)) TO MatriceOrd(x,y)
?x                                       
            ENDIF
?x       
        ENDFOR
*!*?x
            j=0
            y=0
            k=0
           
ENDDO
FCLOSE(lcFisier)

Problema mea apare la X (coordonata randurilor matricei). In al doilea FOR (cel de K), X pus si simplu dispare ca variabila. Am pus cateva "?x"-uri ca sa ii vad valoarea in timp ce se executa codul, si in afara de ?x-urile comentate (adica *!*?x) care au exact valoarea care ar trebui sa o aiba, celelalte 3,  (care se gasesc in interiorul FOR-ului, si pe care care le-am si bolduit) nu-mi returneaza nimic. E ca si cum valoarea lui X dispare... Nu-mi dau seama de ce... Puteti, va rog, sa-mi spuneti ce se intampla ? de ce X nu mai are valoare ?

Sper ca m-am facut inteles, si va multumesc pentru rabdare si ajutor.

Sai.
 2/2/2012 9:30:27 PM
User is offlineSaiSaijo
21 posts


Re: Problema Matrice
 (N/A)
Din pacate nu pot sa editez, variabila H (H=0) este in plus.
 2/2/2012 11:59:41 PM
User is offlineSaiSaijo
21 posts


Re: Problema Matrice
 (N/A)
Nu mai este nevoie, am gasit buba... Mai trebuia sa bag un STEP -1 la FOR-ul meu ca sa mearga.

Codul final este:

**det nr linii, coloane

CLEAR

LcFisier=FOPEN("fin2.txt",12)

lnLinii=0

DO WHILE !FEOF(lcFIsier)
    lcText=FGETS(lcFisier)
   
    IF !EMPTY(lcText)
    lnLinii=lnLinii+1
    ENDIF
ENDDO
FCLOSE(lcFisier)



lnColoane=0

FOR i=1 TO LEN(lcText)
    IF SUBSTR(lcText,i,1)!=" "
    lnColoane=lnColoane+1
    ENDIF
ENDFOR


****Ordonare Matrice

DIMENSION MatriceOrd ( lnLinii*2, lnColoane) as Number

x=0
y=0
k=0


lcFisier=FOPEN("fin2.txt",12)   
DO WHILE !FEOF(lcFisier)
    lcText=FGETS(lcFisier)
        x=x+1
For j=1 To Len(lcText)
    If Substr(lcText,j,1)!=" "
        Y=Y+1
        Store Val(Alltrim(Substr(lcText,j,1))) To MatriceOrd(x,Y)
    Endif
Endfor
x=x+1
Y=0

For k=Len(lcText) To 1 Step -1
    If Substr(lcText,k,1)!=" "
        Y=Y+1
        Store Val(Alltrim(Substr(lcText,k,1))) To MatriceOrd(x,Y)
    Endif
Endfor
j=0
Y=0
k=0
Enddo
Fclose(lcFisier)


***Export Matrice
lcTextOUT=""

a=FCREATE("fout2.txt")
FCLOSE(a)
a=FOPEN("fout2.txt",12)


FOR i=1 TO lnLinii*2
    x=i
    FOR j=1 TO lnColoane
        y=j
        AUX=MatriceOrd(x,y)
        lcTextOut=lcTextOut+ALLTRIM(STR(AUX))+" "
    ENDFOR
    FPUTS(a,lcTextOUT)
    lctextOUT=""
ENDFOR
FCLOSE(a)
 2/3/2012 12:38:43 AM
User is offlineDaniel Buduru
3522 posts
1st




Re: Problema Matrice
 (N/A) Modified By Daniel Buduru  on 2/3/2012 1:42:45 AM)
Am o curiozitate: ce fel de teme sunt astea?
Sectiunea "tema pentru acasa" are o cu totul alta destinatie, vezi "Ce-i cu forumul asta?", dar nu asta e problema.
Ce studiezi? FoxPro 2x, VFP, sau altceva?
Temele asta impun rezolvarea eficienta a problemei, sau utilizarea obligatorie a anumitor functii?

Ceea ce ai facut cu un asa consum de cod se face in cateva linii:

Dime laMatrix[2,1]
laMatrix[1,1]='5678'
laMatrix[2,1]='4567'

For lni=ALEN(laMatrix,1) to 1 STEP -1
   Dime laMatrix(Alen(laMatrix,1)+1,1)
   AINS(laMatrix,lni+1)
   laMatrix(lni+1,1)=''
   FOR lnk=LEN(laMatrix(lni,1)) TO 1 STEP -1
      laMatrix(lni+1,1)= laMatrix(lni+1,1)+SUBSTR(laMatrix(lni,1),lnk,1)
   NEXT lnk
 NEXT lni

DISPLAY MEMORY LIKE laMatrix


Daniel Buduru
 2/3/2012 2:30:31 PM
User is offlineSaiSaijo
21 posts


Re: Problema Matrice
 (N/A) Modified By SaiSaijo  on 2/3/2012 3:54:46 PM)
Ce am citit in "Ce-i cu forumul asta?":

-Vor fi postate intrebari de catre Grigore Dolghin care asteapta raspunsurile utilizatorilor.
-Forumul este moderat

Ce am vazut in forum:
-Intrebari nu au mai fost postate de prin 2009.
-Forumul nu este moderat
-Forumul contine in mare majoritate intrebari ale altor useri care cereau ajutor pentru problemele lor, useri care nu au fost atentionati ca au postat gresit. Imi cer scuze daca postul meu e diferit fata de al lor, intr-un mod pe care eu nu l-am observat.

Cat despre mine, studiez momentan VFP. Este primul limbaj de programare pe care-l studiez (am background=0 cand vine vorba de programare) si am inceput in urma cu 2 luni.
Unele probleme pe care trebuie sa le rezolv au restrictie asupra unor comenzi, altele (ca acesta) trebuiesc doar rezolvate cat mai eficient. Din pacate este tot ce am reusit sa fac cu cunostintele mele..

Intr-adevar rezolvarea ta este mult mai frumoasa si eficienta dar din pacate, cel putin momentan, nu am o imaginatie asa de bogata :)

Multumesc pentru ajutor, apreciez ce faceti cu acest forum :) O zi buna,
Sai.
 2/3/2012 3:37:39 PM
User is offlineDaniel Buduru
3522 posts
1st




Re: Problema Matrice
 (N/A)
 SaiSaijo wrote
Ce am citit in "Ce-i cu forumul asta?":

-Vor fi postate intrebari de catre Grigore Dolghin care asteapta raspunsurile utilizatorilor.
-Forumul este moderat

Ce am vazut in forum:
-Intrebari nu au mai fost postate de prin 2009.
-Forumul nu este moderat
-Forumul contine in mare majoritate intrebari ale altor useri care cereau ajutor pentru problemele lor, useri care nu au fost atentionati ca au postat gresit. Imi cer scuze daca postul meu e diferit fata de al lor, intr-un mod pe care eu nu l-am observat.
...

Grig se referea la sectiunea "Tema pentru acasa", care a inceput sa fie inteleasa ca locul de postare a intrebarilor legate de tema de la scoala ....
E bine sa postezi in sectiunea corespunzatoare, in cazul acestui thread, in "Cod, sintaxa si comenzi". Pe de o parte, asa poti primi raspuns mai repede la intrebarile puse - fiecare utilizator citeste sectiunile care-l intereseaza -, pe de alta parte, e mai usor de cautat in forum rezolvari la aceeasi problema sau similara ...
E adevarat ca nimeni nu a primit atentionari pana acum, dar orice are un inceput :)

 SaiSaijo wrote
...
Cat despre mine, studiez momentan VFP. Este primul limbaj de programare pe care-l studiez (am background=0 cand vine vorba de programare) si am inceput in urma cu 2 luni.
Unele probleme pe care trebuie sa le rezolv au restrictie asupra unor comenzi, altele (ca acesta) trebuiesc doar rezolvate cat mai eficient. Din pacate este tot ce am reusit sa fac cu cunostintele mele..
...

Daca studiezi VFP, si nu FoxPro, e bine sa inveti limbajul VFP, si nu ramasitele istorice ale DbaseII, ramase in limbaj doar pentru compatibilitatea cu versiunile anterioare.
VFP e singurul limbaj care, ajuns la versiunea 9, poate rula fara modificari aplicatii realizate in dbaseII, foxplus, foxpro ..., care dateaza aproape 30 de ani. Asta insa nu e un motiv sa folosesti aceste elemente de limbaj, atunci cand limbajul ofera si alte posibilitati, mai adecvate sistemelor pe care ruleaza acum aplicatiile.
Tehnicile de programare utilizate in FoxPro erau adaptate rularii in 640KB RAM, cu un sistem de operare mono-tasking si mono-user. Nu mai e cazul sa fie utilizate si in ziua de azi, cand memoria disponibila e mai mare decat cea pe care o poate adresa VFP, iar accesul la disc este jobul exclusiv al sistemului de operare ...

Cu cunostintele nu te nasti, ele se capata, si asta faci acum. Informatiile pe care le primesti depind de modul in care expui problema. Una este sa ceri sprijinul in a gasi o eroare de cod, si alta sa cauti o metoda de rezolvare a unei probleme.

 SaiSaijo wrote
...
Intr-adevar rezolvarea ta este mult mai frumoasa si eficienta dar din pacate, cel putin momentan, nu am o imaginatie asa de bogata :)
...

Nu e vorba de imaginatie, ci de experienta :) Majoritatea problemelor au deja o rezolvare consacrata.
In VFP in special, exista intotdeauna mai multe variante pentru a rezolva o problema, dupa cum exista si mai multe functii si comenzi cu care poti face acelasi lucru.
Unele metode sunt mai eficiente decat altele din punct de vedere al consumului de resurse, al timpului de executie sau al fiabilitatii, altele sunt practic la fel de eficiente, doar ca utilizeaza alt algoritm si/sau alte comenzi.

Daca vrei sa inveti sa programezi, si nu faci un curs (un curs adevarat, nu ce se preda la scoala ..), o cale eficienta e sa citesti functiile si comenzile din help. Sunt atat de multe, incat nu toate sunt cunoscute (sau au uitat de ele) chiar programatorilor care lucreaza in FoxPro si VFP de cand au aparut :). In help gasesti si exemple de utilizare precum si comenzile si functiile relatate.

Mai gasesti in VFP o aplicate, Solution.app, pe care o poti lansa cu comanda DO HOME(2)+'Solution\Solution.app'.  Exploreaz-o, vei vedea cum au gandit cei care au realizat limbajul VFP utilizarea lui.

Daniel Buduru
  Visual FoxPro  Tema pentru acasa  Problema Matric...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2013 Profox   Terms Of Use  Privacy Statement