Close
Faqja 2 prej 6 FillimFillim 1234 ... FunditFundit
Duke shfaqur rezultatin 11 deri 20 prej 53
  1. #11
    i/e regjistruar Maska e zeus
    Anëtarësuar
    27-05-2003
    Vendndodhja
    Këtu
    Postime
    944
    -------------------------------------------------------

    Mendoj se Gjigandi ka te drejte! Perdorimi i nje matrice eshte i papershtatshem.

    Per te renditur permbajtjen ne nje file mund te perdoret edhe nje liste e renditur siç thote nje koleg me lart po perseri me duket e papershtatshme sepse mendoj se qellimi nuk eshte qe ky shoku jone thjesht te mbaroje detyren, po te mesoje te punoje me nje file. Une ne fakt C nuk mbaj mend shume tani se e kam bere para 6 vjeteve po per ta mbajtur kete file gjithnje te renditur: cdo rekord i ri duhet krahasuar me ato ekzistueset dhe duhet pozicionuar ne vendin qe i takon sipas rendit rrites ose zbrites. Nuk e di nese kjo mund te behet me nje file ashtu siç behet psh me nje liste. Nese nuk mund te realizohet me nje file te vetem mund te perdoren file ndihmes.

    -------------------------------------------------------
    Në botë ka 10 lloje njerëzish: ata që kuptojnë sistemin binar, dhe ata që nuk e kuptojnë!

  2. #12
    Programues Softueresh Maska e edspace
    Anëtarësuar
    04-04-2002
    Vendndodhja
    Filadelfia, SHBA
    Postime
    2,565
    Cila është arsyeja që të duket i papërshtatshëm përdorimi i matricave? Gjigandi zuri në gojë përcaktimin e madhësisë dhe ajo është disi me vënd por nga provat që bëra, programi është shumë i shpejtë edhe për 1.000.000+ rekorde, prandaj kufizimi i matricës nuk është problem.

    Sugjerimi që jep ti me përdorimin e skedarëve nuk është praktik sepse për çdo rresht që do shtohet, ti duhet ta krahasosh me rreshtat e tjerë dhe këtë do ta bësh duke lexuar skedarin. Leximi i hard diskut është shumë herë më i ngadaltë se leximi i memorjes dhe programi do ishte tepër i ngadaltë. Prandaj mënyra që kam ndjekur, lexon dhe shkruan në disk vetëm njëherë. Krahasimi dhe renditja bëhet në memorje që është shumë e shpejtë.

    Duke përdorur listat zinxhir i vetmi përmirësim do ishte se programi do zinte më pak memorje. Në anën tjetër, nqs do bëje krahasimin në skedar ose me lista zinxhir, do duhej të shkruaje një funksion më vete për renditjen dhe kjo nuk është gjë e lehtë. Unë përdora funksionin qsort që është standart i C dhe është shkruajtur nga ekspertët.

    Përdorimi i matricave të lejon përdorimin e treguesve [i] dhe kjo është shumë e rëndësishme kur punon me rekorde që lexohen ose ndryshohen shpesh. (psh: katalogu i librarisë, llogaritë e bankave, faturat e shitjes, etj).

    Një zgjidhje pak më e mirë do ishin matricat dinamike, por edhe këto kanë problemet e tyre.
    Ndryshuar për herë të fundit nga edspace : 03-12-2004 më 15:07
    Edi

  3. #13
    i/e regjistruar Maska e zeus
    Anëtarësuar
    27-05-2003
    Vendndodhja
    Këtu
    Postime
    944
    -------------------------------------------------------------

    Besoj se detyra eshte e qarte: sa here shtoj 1 rekord duhet te pozicionohet ne vendin e duhur. Mos bej sikur nuk kupton kush eshte problemi i matricave! Nqs une deklaroj nje matricë me 20 elementë dhe te nesermen ne mengjes dua te shtoj elementin e 21 duhet te ndryshoj 1 rresht te programit (ne mos me shume) dhe kete duhet ta bej sa here kam nevoje per me shume rekorde. Pastaj nuk me duket e arsyeshme kur duhet te shtoj nje element ne nje bashkesi (qoftë kjo matrice, file apo list) elementesh te renditur te aplikoj quicksort çdo herë! Nejse ai ka mendjen e tij e le te beje si te doje...

    P.S. Eshte thjesht nje debat konstruktiv (shpresoj) pa tone polemike!

    -------------------------------------------------------------
    Në botë ka 10 lloje njerëzish: ata që kuptojnë sistemin binar, dhe ata që nuk e kuptojnë!

  4. #14
    i/e regjistruar
    Anëtarësuar
    11-10-2004
    Postime
    39
    Mua me duket se perdorimi i vektoreve eshte mjaft i pershatshem per problemin ne fjale. Sic thote edhe Edi nje permiresim mund te ishte perdorimi i vektoreve dinamike. Nje permiresim tjeter mund te ishte nese dihet se sa rreshta ka skedari. Ne kete rastin e fundit mund te rezervohet aq memorie sa duhet dhe jo me teper. Kjo praktike eshte shume e perhapur. P.sh. cdo format fotosh qe njoh une (p.sh. BMP) ne fillim te skedarit ka te dhena per foton (sa pixel jane, sa ngjyra jane etj.).

    Sic e tha edhe Edi, renditja e nje skedari in-place (pa e ngarkuar te teren ne memorie) ka problemin qe eshte shume e ngadalshme. Por sigurisht qe nese nuk ke memorie te mjaftueshme ne disk do e besh (keshtu vepronin databazat dikur).
    Nje verejtje qe do beja ne lidhje me kete rast eshte qe skedari duhet te jete binar. Eshte teper e veshtire te renditesh nje skedar tekst si ai qe perdori Edi in-place.

    Nga ana tjeter nuk mendoj se eshte e sugjerueshme perdorimi i listave ne kete rast. Renditja e listave kerkon te shkruash funksione speciale dhe eshte e sigurte qe do jete shume me e ngadalshme se renditja e vektoreve.

    Nje strukture qe mund te perdoret ketu dhe qe shumekujt i kujton listat (por nuk eshte liste) eshte pema (tree). Pema eshte nje strukture ku elementet renditen gjate futjes. Futja e nje elementi ne peme kushton log time ndersa ne nje vektor kushton constant time. Por renditja e nje vektori kushton n*log(n) time kurse renditja e nje peme nuk kushton asgje sepse pema eshte e renditur.

    Do ishte interesante qe ndokush te bente eksperimente me vektore dhe peme dhe te krahasonte shpejtesine e programeve. Une besoj se vektori duhet te jete me i shpejte por edhe shpejtesia e pemes duhet te jete e pranueshme.

  5. #15
    Programues Softueresh Maska e edspace
    Anëtarësuar
    04-04-2002
    Vendndodhja
    Filadelfia, SHBA
    Postime
    2,565
    Gjeta kohën e lirë për të rindërtuar programin më lart me strukturën e pemës që ka përmëndur edhe Iliri. U mundova të shkruaja kod sa më të shpejtë në mënyrë që të barazohej sa më mirë me kodin e shkruajtur për matricën dhe të mund të bëheshin krahasime domethënëse për të dyja strukturat.
    Jepni mendimet tuaja për ndryshimet në kod nqs shikoni mundësi për përmirësime.

    Sipas eksperimenteve që bëra, Matrica ngelet metoda më e mirë për këtë program por edhe Pema nuk është larg. Që të dyja strukturat kanë vështirësi me renditjen e rekordeve; matrica me funksionin qsort, ndërsa pema me funksionin hedh_ne_peme. Nxjerrja e rekordeve nga pema është më e ngadaltë, dhe po ashtu edhe lirimi i memorjes. Funksioni për të shtuar një nyje të re në pemë është shkruajtur në menyrën përsëritëse (me while) sepse metoda rekursive ishte shumë e ngadaltë. Nxjerrja nga pema dhe lirimi i memorjes bëhet në mënyrën rekursive për të shmangur kodin e gjatë me mënyrat përsëritëse.

    Më poshtë janë rezultatet e të dy versioneve
    1. Matrica (array) me përmasë të paracaktuar për 1.500.000 rekorde
    2. Pema (tree) (pa kufizim për memorjen)

    Sistemi i përdorur: Pentium 4 2.66 GHz, 256 MB memorje
    Sistemi Operativ: Windows XP SP1
    Përpiluesi: Dev-C++ 4.9.9.1 me GCC/MinGW 3.3.1

    Do ishte mirë që programet të testoheshin në disa sisteme para se të nxjerrim konkluzione.

    Koha e harxhuar nga programet në bazë të numrit të rekordeve
    Kodi:
    # Rekordeve	Matrica (ms)	Pema (ms)
      125.000	  470		  610
      250.000	  910		1.251
      500.000	1.790		2.600
      750.000	2.653		4.130
    1.000.000	3.500		7.000
    1.250.000	5.900		8.800
    1.500.000	7.500		11000

    Analiza e funksioneve të Matricës Statike (array)
    Kodi:
    Funksioni		% kohes
    rekord_krah		80,23
    strcmp			 9,30
    shkruaj_databaze	 5,81	
    lexo_databaze		 2,33
    fgets			 2,33
    Analiza e funksioneve të Pemës
    Kodi:
    Funksioni		% kohes
    hidh_ne_peme		52,70
    shkruaj_databaze	21,96
    liro_memorje		19,26
    lexo_databaze		 3,38
    fgets			 1,42
    strcmp			 0,71
    shkruaj_databaze dhe liro_memorje jane rekursive.


    Skedarët e kodit janë bashkëngjitur më poshtë.

    Kodi në C për Matricën
    Kodi PHP:
    // Autori: Edi, edspace ET comcast PIKE net
    // Pershkrimi: 
    //     Lexon dhe shkruan rekorde ne nje skedar sipas renditjes alfabetike
    //     Rekordi permban 2 kolona te ndara me tab 
    //
    #include <stdlib.h> 
    #include <stdio.h> 
    #include <string.h> 
    #include <time.h>

    typedef struct rekord rekord;

    const 
    REK_MAX 1500000;  // numri maksimal per rekordet

    struct rekord // struktura e nje rekordi

        
    char personi [20];  // emri i personit deri ne 20 shkronja
        
    int num;            // numri
    }; 

    //********************************************************************
    // Hap skedarin db dhe hidh rekordet ne matricen r
    // Kthen numrin e rekordeve ne skedar ose -1 nqs nuk hapet skedari
    //
    int lexo_databaze( const char db [], rekord r);

    //********************************************************************
    // Hap skedarin db dhe shkruar nr rekorde nga matrica r
    // Kthen 0 nqs ndodh gabim
    //
    int shkruaj_databaze(const char db [], const rekord r, const size_t nr);

    //********************************************************************
    // Krahaso dy rekorde duke u bazuar mbi personin. 
    // Ky funksion perdoret per renditjen e rekordeve
    // emrat 0 konsiderohen si te pavlefshem dhe renditen ne fund 
    // Kthejme: -1 nqs r1<r2, 0 nqs r1=r2,  1 nqs r1>r1
    // A < Z < 0
    //
    int rekord_krah ( const rekord r1, const rekord r2);


    //********************************************************************
    // MAIN
    //
    int main (void

       
    clock_t koha1 clock(); 

       const 
    char db [] = "databaza.txt"// emri i skedarit ku do ruhet info
       
    const char db1 [] = "databaza2.txt"// emri i skedarit ku do ruhet info
        
       // tregues per array me rekorde
       
    rekord NULL;
       
       
    // kerkojme memorjen per REK_MAX rekorde
       
    callocREK_MAXsizeof(rekord) );
       
       if( 
    == NULL )  // nqs nuk ka memorje te mjaftueshme
       
    {
           
    printf("GABIM: Nuk ka memorje te mjaftueshme\n");   
           return 
    1;
       }       
       
       
    int nr_rekordeve lexo_databazedb);
       
       if ( 
    nr_rekordeve == -)
       {
           
    printf("GABIM: Nuk mund te hapej skedari %s\n"db);
       }
       
       
    qsort (rnr_rekordevesizeof (rekord), (const void *)rekord_krah);  
         
       if( !
    shkruaj_databazedb1rnr_rekordeve ) )
       {
           
    printf("GABIM: Nuk mund te hapej skedari %s\n"db1);
           return 
    1;
       }    
       
       
    free(r);
       
       
    printf("Koha e ekzekutimit: %ld"clock() - koha1);
       
       return 
    0;   // mbaruam


    //************************************************************************
    // Lexojme rekordet nga databaza
    //
    int lexo_databaze( const char db [], rekord r)
    {
       
    FILE inskedari// tregues per skedarin

       
    if(!(inskedari fopen(db"r"))) 
       {
           return -
    1// nqs nuk hapim dot skedarin kthejme kodin -1 (gabim)
       
    }    
        
       
    int i 0;
       
    char rresht [100];  // buffer per 1 rresht (maksimumi 100 shkronja)
      
       
    while(REK_MAX )   // marrim REK_MAX rekorde nga skedari
       
    {
           
    fgetsrresht100inskedari);   // marrim rreshtin

           // nqs eshte rreshti i fundit, dalim jashte
           
    if( feof(inskedari) || strlen(rresht) == 1) break;  
           
           
    // marrim emrin e personit qe ndahet me tab nga numri
           
    strncpyr[i].personistrtok (rresht,"\t"), 20 ); 
           
    r[i].num atoistrtok (NULL," \n") );    // marrim numrin        
           
    i++;

       }

       
    fclose(inskedari);   // mbyllim skedarin
       
       
    return i;       // numri i rekordeve qe gjetem ne skedar
    }   

    //************************************************************************
    // Shkruajme rekordet ne databaze
    //
    int shkruaj_databaze( const char db [], const rekord rsize_t nr )
    {
       
    FILE outskedari// tregues per skedarin
      
       // nqs nuk hapim dot skedarin per te shkruar
       
    if(!(outskedari fopen(db"w+"))) // 
       
    {
           return 
    0// nqs nuk hapim dot skedarin kthejme kodin 0 (gabim)
       
    }    
       
       
    int i;
       
       for (
    0nri++)  // shkruajme rekordet
       
    {    // emri dhe numri jane te ndara me tab
           
    fprintf (outskedari"%s\t%d\n"r[i].personir[i].num);
       }    
      
       
    fclose (outskedari);  // mbyllim skedarin
       
       
    return 1;
    }

    //************************************************************************
    // Krahasojme rekordet e databazes
    //  
    int rekord_krah (const rekord r1, const rekord r2)
    {
        if( 
    strcmp("\0"r1->personi) == ) return 1;  // zeron e vendosim ne fund
        
    if( strcmp("\0"r2->personi) == ) return -1// zeron e vendosim ne fund
        
    return strcmp (r1->personir2->personi);       // krahasojme dy fjale
    }

    // fund 

    Kodi në C për Pemën
    Kodi PHP:
    // Autori: Edi, edspace ET comcast PIKE net
    // Pershkrimi: 
    //     Lexon dhe shkruan rekorde ne nje skedar sipas renditjes alfabetike
    //     Rekordi permban 2 kolona te ndara me tab 
    //
    #include <stdlib.h> 
    #include <stdio.h> 
    #include <string.h> 
    #include <time.h> 

    typedef struct rekord rekord;
    typedef struct nyje nyje;
    typedef nyjepeme;

    struct rekord // struktura e nje rekordi

        
    char personi [20];  // emri i personit deri ne 20 shkronja
        
    int num;            // numri
    }; 

    struct nyje {
       
    rekord  data;
       
    nyje majtas;
       
    nyje djathtas;
    };

    //********************************************************************
    // Hap skedarin db dhe kthe pemen me rekorde
    //
    peme lexo_databaze( const char db []);

    //********************************************************************
    // Shkruaj rekordet e pemes p ne db
    //
    void shkruaj_databaze(FILE dbpeme p);

    //********************************************************************
    // Hidh/ngjit nyjen n ne pemen p sipas rendit alfabetik
    //
    void hidh_ne_pemenyje npeme  p);

    //********************************************************************
    // liro memorjen e nje peme ne menyren rekursive 
    // liro degen majtas, liro degen djathtas, liro renjen
    //
    void liro_memorje(peme p);

        
    //********************************************************************
    // MAIN
    //
    int main (void

       
    clock_t koha1 clock(); 
       
       const 
    char db [] = "databaza.txt"// emri i skedarit ku do ruhet info
       
    const char db1 [] = "databaza2.txt"// emri i skedarit ku do ruhet info
        
       
    peme p NULL;

       
    lexo_databazedb );
       
       if( 
    == NULL )  
       {
           
    printf("GABIM: Nuk mund te lexonim databazen\n");   
           return 
    1;
       }
       
       
    FILE outskedari// tregues per skedarin
       
       
    if(!(outskedari fopen(db1"w+"))) // 
       
    {
           
    printf("GABIM: Nuk mund te hapej skedari %s\n"db1);
           return 
    1;
       }    
       
       
    shkruaj_databaze(outskedarip);
       
       
    fclose(outskedari);
       
       
    liro_memorje(p);
       
       
    printf("Koha e ekzekutimit: %ld"clock() - koha1);
       
       return 
    0;   // mbaruam


    //************************************************************************
    // Lexojme rekordet nga databaza
    //
    peme lexo_databaze( const char db [] )
    {
       
    FILE inskedari// tregues per skedarin
       
    char rresht [100];  // buffer per 1 rresht (maksimumi 100 shkronja)

       
    if(!(inskedari fopen(db"r"))) 
       {
           
    printf("Nuk mund te hapej skedari %s\n"db);
           return 
    NULL
       }    
       
       
    // ************* formojme renjen e pemes ***********************
       // Ky bllok eshte ndare nga While per te shmangur nje kusht (if) brenda while
       //
       
    if( fgetsrresht100inskedari) == NULL )
       {
           
    fclose(inskedari);
           return 
    NULL;
       }    
       if( 
    strlen(rresht) == )
       {
           
    fclose(inskedari);
           return 
    NULL;
       }    
       
       
    peme p calloc(1sizeof(nyje) );
        
       
    // assert(p!=NULL);
       
    strncpyp->data.personistrtok (rresht"\t"), 20 ); 
       
    p->data.num atoistrtok (NULL" \n") );    // marrim numrin        
       
    p->majtas NULL;
       
    p->djathtas NULL;
       
       
    nyje NULL;
       
       
    // ************* formojme nyjet e tjera ***********************
       //
       
    while( fgetsrresht100inskedari)!= NULL )   
       {
           
    // nqs eshte rreshti i fundit, dalim jashte
           
    if( strlen(rresht) == ) break;  
           
           
    calloc(1sizeof(nyje) );
           
           if( 
    == NULL 
           {
               
    liro_memorje);
               
    fclose(inskedari);
               return 
    NULL;
           }        
           
           
    // marrim emrin e personit qe ndahet me tab nga numri
           
    strncpyn->data.personistrtok (rresht"\t"), 20 ); 
           
    n->data.num atoistrtok (NULL" \n") );    // marrim numrin        
           
    n->majtas NULL;
           
    n->djathtas NULL;
           
           
    hidh_ne_peme(np);
           
       }
       
       
    fclose(inskedari);   // mbyllim skedarin
       
       
    return p// kthejme pemen
    }   

    //************************************************************************
    // Shkruaj databazen ne db nga pema p sipas renditjes alfabetike
    //
    void shkruaj_databaze (FILEdbpeme p)
    {
       if (
    != NULL
       {
          
    shkruaj_databaze(dbp->majtas);
          
    fprintf(db"%s\t%d\n"p->data.personip->data.num);
          
    shkruaj_databaze(dbp->djathtas);
       }
    }

    //************************************************************************
    // Hidh/Ngjit nyjen n ne pemen p
    // Programuar me perseritje sepse menyra rekursive eshte me e ngadalte
    //
    void hidh_ne_pemenyje npeme p)
    {     
       while(
    1)
       {
           if( 
    strcmpn->data.personip->data.personi ) <= )
           {
               if( 
    p->majtas == NULL )
               {
                   
    p->majtas n;
                   return;
               }    
               else 
    p->majtas;
           }
           else 
           {
               if( 
    p->djathtas == NULL )
               {
                   
    p->djathtas n;
                   return;
               }    
               else 
    p->djathtas;
           }
       }    
    }    


    //************************************************************************
    // Liro memorjen e pemes p
    //
    void liro_memorje(peme p)
    {
        if( 
    == NULL ) return; // fakultative sepse edhe free(null) ben return 
        
    if(p->majtas != NULLliro_memorje(p->majtas);
        if(
    p->djathtas != NULLliro_memorje(p->djathtas);
        
        
    free(p);
        
    NULL;  // fakultative
    }

    // fund 
    Fotografitë e Bashkëngjitura Fotografitë e Bashkëngjitura  
    Skedarët e Bashkëngjitur Skedarët e Bashkëngjitur
    Ndryshuar për herë të fundit nga edspace : 08-12-2004 më 14:53
    Edi

  6. #16
    63n700 Maska e werewolf
    Anëtarësuar
    03-10-2003
    Vendndodhja
    Rome
    Postime
    164
    cool!
    megjithate une qendroj me mendimin se nuk duhet perdorur matrica kur nuk te jepet dimensioni i inputit, pasi sic eshte shkruajtur me lart, nese e ke matricen me 100 rekorde, dhe kur arrin ne fud shef qe duhet te shkruaj 101 , ca do behet?????? do ndryshohet dimensioni i matrices, rikompilohet programi dhe do shkruhen prape 101 rekordet???
    nje nga gjerat qe me kane ngel ne mend ne keto vite eshte se:" Kur nuk e di dimensionin e inputit, DUHET perdorur struktura dinamike(mgjs me vektor & matrice mund te punoj me shpejt programi)". Te dyja kane te mirat dhe te keqijat e tyre........ne kete rast me mire te perdoren pemet.

    hej edi, nuk do ishte me mire qe rekordet, te hidheshin ne peme kur i merr ne input dhe ne fund te shkruheshin ne file? Keshtu i beje All in 1 ?
    . Je madh plako, ke shume durim.....!
    po mos te kisha nje thes me provime dhe projektet(3 projekte), mbase do kisha bere ndo1 code.....
    bye
    Ndryshuar për herë të fundit nga werewolf : 08-12-2004 më 16:58
    The truth may be out there, but lies are inside your head.

  7. #17
    Programues Softueresh Maska e edspace
    Anëtarësuar
    04-04-2002
    Vendndodhja
    Filadelfia, SHBA
    Postime
    2,565
    Për eksperimentet që bëra unë, kufizimi i matricës ishte 1 milion e 500 mijë. Kur matrica mund të ketë përmasa të tilla nuk është nevoja ta ndryshosh programin sepse kufizime të tilla nuk arrihen, ose mund të arrihen shumë shumë rrallë. Një skedar me 1.500.000 rekorde është rreth 30MB. Skedarë të tillë bëhen të pa menaxhueshëm dhe është më mirë të ndahen në dy tre skedarë. Prandaj edhe programin nuk ështe nevoja ta ndryshosh e përpilosh nga fillimi por mjafton të ndash të dhënat në dy skedarë.

    Matrica vërtet ka kufizim përmasat, por siç tregohet dhe nga rezultatet, pema është më e ngadaltë, edhe pse punë sekondash.


    Në lidhje me leximin e rekordeve, ato lexohen dhe hidhen në pemë një nga e një. Funksioni lexo_databaze lexon rreshtin, formon nyjen, pastaj e hedh nyjen në pemë. Këtë gjë e përsërit deri sa gjen fundin e skedarit ose kompjuteri nuk ka më memorje (calloc = NULL).

    Nuk e kuptova sugjerimin tënd sepse unë atë që thua ti kam bërë.

    Suksese me provimet!
    Edi

  8. #18
    63n700 Maska e werewolf
    Anëtarësuar
    03-10-2003
    Vendndodhja
    Rome
    Postime
    164
    / Hap skedarin db dhe hidh rekordet ne matricen r
    // Kthen numrin e rekordeve ne skedar ose -1 nqs nuk hapet skedari
    //
    int lexo_databaze( const char db [], struct rekord * r);
    per kete e kisha fjalen
    Ti e merr nga skedari inputin (rekordet te pa renditur) apo jo?
    po sikur ti merrje nga perdoruesi dhe ti mbaje te renditura ne peme ose matrice dhe ne fund ti shkruaje ne peme???
    ushtrimi nuk thoshte te merrje skedarin dhe ta rendisje, por ta mbaje te renditur( rekordin e ri qe merje ta vije ne vendin e duhur), par do ishte me mire qe ne file ta shkruaje vetem ne fund, pasi te kishte mbaruar inputi nga perdoruesi, keshtu do evitoje te perdorje funksionin lexo database, por beje nje funksion tjeter qe ti merrte rekordet nga perdoruesi dhe ti vinte ne vendin e duhur

    pse te perdoret nje matrice aq e madhe kur mund te duhen te futen vetem 2 rekorde psh?????
    zgjidhja me matricen mund te jete(pak) eficent nga ana temporale(koha e ekzekutimitte programit) se ai me pemet, por per hapesire le shume per te deshiruar....



    rofsh!
    Ndryshuar për herë të fundit nga werewolf : 08-12-2004 më 19:28
    The truth may be out there, but lies are inside your head.

  9. #19
    i/e regjistruar
    Anëtarësuar
    11-10-2004
    Postime
    39
    Edi me pelqen shume analiza jote. Urime.
    Werewolf, nuk arrij dot ta kuptoj se cfare do te thuash. A mund te shkruash pak kod qe te qartesohemi?

  10. #20
    63n700 Maska e werewolf
    Anëtarësuar
    03-10-2003
    Vendndodhja
    Rome
    Postime
    164
    kerkesa e ushtrimit ishte ti merrje rekordet dhe ti vije ne nje file te ordinuara, prandaj i thashe edit qe funksionin lexo_database ta shkruante ne menyre qe ta merte intputin nga perdoruesi, dhe jo nga skedari, jo se kishte ndo1 gje kjo, nuk ndryshon gje, por i pergjigjet me sakte kerkeses(qe thote ta lexoje rekordin dhe ta hedhi ne file te ordinuar).
    dhe tjeter thashe qe 'me pelqen' me shume zgjidhja me peme, se ka komplesitet me te ulet ne lidhje me hapesiren(harxhon me pak memorje ne disa raste, dhe eshte e pershtatshme ne rastet kur nuk dime dimensionin e inputit)

    Kodi eshte shume OK, dhe analiza! Nejse.....
    bye
    The truth may be out there, but lies are inside your head.

Faqja 2 prej 6 FillimFillim 1234 ... FunditFundit

Tema të Ngjashme

  1. Strukturat paralele të Serbiisë
    Nga Sabriu në forumin Çështja kombëtare
    Përgjigje: 1
    Postimi i Fundit: 20-03-2009, 04:27
  2. Listat e Zgjedhesve
    Nga shefqeti11 në forumin Problematika shqiptare
    Përgjigje: 0
    Postimi i Fundit: 14-02-2007, 06:14
  3. Zgjidhet kriza elektorale, arrihet marëveshja në zyrën e presidentit Moisiu
    Nga Xhuxh Xhumaku në forumin Tema e shtypit të ditës
    Përgjigje: 312
    Postimi i Fundit: 03-02-2007, 14:05
  4. Kuvendi që na la trashëgim ADN-në e Dushkut
    Nga Kosovari_78_Ca në forumin Tema e shtypit të ditës
    Përgjigje: 1
    Postimi i Fundit: 22-05-2005, 01:24

Regullat e Postimit

  • Ju nuk mund të hapni tema të reja.
  • Ju nuk mund të postoni në tema.
  • Ju nuk mund të bashkëngjitni skedarë.
  • Ju nuk mund të ndryshoni postimet tuaja.
  •