Close
Duke shfaqur rezultatin -9 deri 0 prej 8
  1. #1
    Programues Softueresh Maska e edspace
    Anëtarësuar
    04-04-2002
    Vendndodhja
    Filadelfia, SHBA
    Postime
    2,565

    Sfida nga PR-TECH: Një Copëz Kriptogrami

    Sfida është hapur nga Grupi Teknologjik i Prishtinës. Po e hedhim në forum që anëtarët të mund të diskutojnë zgjidhjet dhe të mësojnë nga eksperienca e njëri-tjetrit. Tema do qëndrojë e mbyllur gjatë kohës që sfida është e hapur dhe zgjidhja juaj nuk duhet bërë publike gjatë kësaj kohe. Kur të skadojë afati i lejuar, tema do hapet dhe pastaj mund të postoni përgjigjet tuaja dhe të diskutoni me anëtarët e tjerë.

    Një Copëz Kriptogrami
    Problemi eshte i hapur
    Prej:03/12/2004 Deri:10/12/2004


    Kjo sfidë është për ata që janë të etur për kriptologji. Si edhe në sfidat tjera, ju duheni që t'a zbuloni algortimin me të cilin bëhet enkriptimi i mesazheve, e pastaj t'a krijoni një skriptë që do t'a implementoj algoritmin adekuat për dekriptimin e suksesëshëm të mesazheve të enkriptuara. Sa për lehtësim në vijim është vendosur një shembull që tregon mesazhin origjinal, si dhe mesazhin e enkriptuar pas aplikimit të algoritmit enkriptues:

    Mesazhi Origjinal:
    Kodi:
    Vargu i kriptuar.
    Mesazhi i Enkriptuar:
    Kodi:
    000056 0000C2 0001C8 000338 000750 000400 001A40 001000 006B00
    00E400 01A400 038000 074000 0EA000 184000 390000 2E0000
    Skripta që ju do t'a krijoni duhet të jetë në gjëndje të dekripton mesazhin e enkriptuar që gjendet në vijim:
    Kodi:
    00004A 0000EA 000080 000360 000750 000DA0 001D00 003280 002100
    Skripta mundet të bëhet në C, C++, Java, ose Perl. Nëse programi juaj përmbanë më shumë se një skedar atëherë le të arkivohet si tar.gz apo zip dhe si i tillë le të dërgohet në programim ET pr-tech PIKË net.
    Rrezultatet dhe kodet e sakta do të paraqiten deri më 1 javë pas skadimit të afatit të problemit.
    Edi

  2. #2
    Programues Softueresh Maska e edspace
    Anëtarësuar
    04-04-2002
    Vendndodhja
    Filadelfia, SHBA
    Postime
    2,565

    Përgjigja ime në C++ për këtë sfidë

    Kodi:
    Shkruaj mesazhin e shifruar: 00004A 0000EA 000080 000360 000750 000DA0 001D00 00
    3280 002100
    Mesazhi i deshifruar: Ju lumte!
    Kodi PHP:
    // Emri: Deshifrimi 
    // Data: 6/12/04 
    // Pershkrim: Sfida e Javes nga Grupi Teknologjik i Prishtines 
    // Perpiluesi: Dev-C++ 4.9.9.0 
    // Perdorimi: Shkruani mesazhin e shifruar dhe programi do e deshifroje 
    // P.Sh.
    // Shifruar: 00004A 0000EA 000080 000360 000750 000DA0 001D00 003280 002100
    // Deshifruar: Ju lumte!

    #include <iostream>     // input output 
    #include <string>       //  per vargjet 
    #include <sstream>      //  per copetimin e mesazhit te shifruar 

    using namespace std

    // *********************************************************** 
    // merr nje varg s me kodet HEX
    // kthen vargun e deshifruar
    // 
    // deshifruar[N] = shifruar[N] ---kthe----> HEX 
    //                             ---pjesto--> 2^N 
    //                             ---kthe----> ASCII
    // N fillon nga 0
    //
    string deshifro(const string s); 

    //***************************** main *******************************

    int main(int argcchar *argv[]) 

      
    string mesazhi_shifruar "";          // mesazhi si tekst 
      
    string mesazhi_deshifruar "";
         
      
    cout << "Shkruaj mesazhin e shifruar: "
      
    getline(cinmesazhi_shifruar);        // marrim mesazhin e shifruar 
      
      
    cout << "Mesazhi i deshifruar: " << deshifro(mesazhi_shifruar) << endl;
      
      
    system("Pause");
      return 
    0


    //******************************* deshifro ******************************* 

    string deshifro(const string s

        
    stringstream burimi(s);  // formojme nje burim vargjesh 
        
    ostringstream derdhje;   // formojme nje shtrat per mesazhin e deshifruar
        
    unsigned long numri_int// numri HEX (baze 16) i kthyer ne INT
        
    int i 0;               // indeksi i fjales 
        
        
    while( burimi >> hex >> numri_int )  // 
        
    {                
            
    derdhje <<  (char)( numri_int / (unsigned long)pow(2.0i) );
            
    i++;
        }
        
        return 
    derdhje.str();

    Edi

  3. #3
    Programues Softueresh Maska e edspace
    Anëtarësuar
    04-04-2002
    Vendndodhja
    Filadelfia, SHBA
    Postime
    2,565

    Zgjidhja e Sokol Kostës në C

    Kodi PHP:

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    #include <ctype.h>

    int konvertoNeKarakter(char *, int);
    int decimal(char);

    main(){

    FILE *input, *output;
    int i=0j=0k=-1flag=0;
    char nextChar;                   /* marr karakterin e radhes nga file-i dhe cdo */
    char hexa[6] = {'\0'}, dekriptuar[1000]={'\0'};   /* 6-she karakteresh e fus ne vektorin hexa, e cila do te konvertohet ne nje karakter */
    char inputKriptuar[20]={'\0'};
    char outputOrigjinal[20]={'\0'};


    /* marr emrin e file-it ku ndodhet teksti i kriptuar */
    printf("Fut emrin e file-it me tekstin e kriptuar: ");
    scanf("%s", &inputKriptuar);


    /* marr e mrin e file-it ku do te shkruhet teksti origjinal */
    printf("\n\nFut emrin e file-it ku do te shkruhet teksti origjinal: ");
    scanf("%s", &outputOrigjinal);

      if((
    input fopen(inputKriptuar"r")) == NULL){
        
    printf("Gabim ne hapjen e File-it\n");
        exit(
    1);
      }
      else{
        while(!
    feof(input)){
        
    fscanf(input"%c", &nextChar);
          if(
    isalnum(nextChar)){
          
    k++;            /* memorizon indeksin qe ka karakteri ne tekst */
          
    flag=1;  /* ky flag me duhet per te menjanuar hapesirat qe mund te kete midis 2 Nr hexadecimal */
          
    }     /* vetem nqs flag==1 therras funksionin per dekriptim */

          
    i=0;
          while(!
    feof(input) && isalnum(nextChar)){ /* memorizoj ne vektorin hexa[] numrin hexadecimal te radhes */
          
    hexa[i++]=nextChar;
          
    fscanf(input"%c", &nextChar);
          }
          if(
    flag==1){
          
    dekriptuar[j++] = (char)konvertoNeKarakter(hexak); /* funksioni qe ben dekriptimin */
          
    flag=0;                        /* ky kthen int, prandaj bej kastin ne char */
          
    }
        }
      if((
    output fopen(outputOrigjinal"w")) == NULL){
        
    printf("File-i output nuk egziston ose nuk mund te hapet!\n");
        exit(
    1);
      }
      else{
      
    fprintf(output"%s\n"dekriptuar);
      
    fclose(input);
      }
      }
      
    printf("%s\n"dekriptuar);
    system("PAUSE");
    return(
    0);

    }


    /* funksioni qe ben dekriptimin, domethene numrin hexadecimal e kthen ne decimal, e pjeston me */
    /* 2^k (k=indeksi i karakterit ne tekst) dhe keshtu perftohet kodi ascii ne decimal i karakterit */

    int konvertoNeKarakter(char hexa[],int k){
    int i=0dec=0;

    for(
    i=0i<6i++)
      
    dec += (decimal(hexa[i]))*pow(165-i);
    return 
    dec/pow(2k);
    }



    /* funksioni qe ben konvertimin e nje numri hexadecimal ne decimal */
    int decimal(char hexaChar){
    int i;
    char hexaNum[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};

    for(
    i=0i<16i++)
      if(
    hexaChar == hexaNum[i])
      return 
    i;


    Pjesa për shifrim/kriptim

    Kodi PHP:
    #include <stdio.h>
    #include <stdlib.h>
    #include <ctype.h>
    #include <math.h>

    int indice=0;

    /* vektor qe me duhet per te konvertuar nje numer decimal ne hexadecimal */
    char hexa[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};

    void kripto(char *, char *);
    void hexadecimal(int char *);


    main(){

    FILE *input, *output;
    char nextChar;     /* ketu memorizoj karakterin e radhes qe lexoj ne File */
    int i=0;
    char kriptuar[1000]={'\0'}, origjinali[1000]={'\0'}; /* vektoret qe do mbajne tekstin e kriptuar dhe origjinalin */
    char inputOrigjinal[20]={'\0'};           /* emri i File-it ku ndodhet teksti origjinal */
    char outputKriptuar[20]={'\0'};           /* emri i File-it ku do te shkruhet teksti i kriptuar */

    /* marr emrin e file-it ku ndodhet teksti origjinal */
    printf("\nFut emrin e File-it me tekstin origjinal: ");
    scanf("%s", &inputOrigjinal);

    /* marr emrin e file-it ku do te shkruhet teksti i kriptuar */
    printf("\n\n\Fut emrin e File-it ku do te shkruhet teksti i kriptuar: ");
    scanf("%s", &outputKriptuar);

      if((
    input fopen(inputOrigjinal"r")) == NULL){
        
    printf("Gabim ne hapjen e File-it input\n");
        exit(
    1);
      }
      else{
        while(!
    feof(input))    /* Derisa te mbaroj file-i lexoj te gjitha karakteret */     
        
    fscanf(input"%c", &origjinali[i++]);
         
        
    fclose(input);
        
    printf("\n%s\n\n"origjinali);
        
    kripto(origjinalikriptuar);   /* Funksioni qe ben kriptimin dhe tekstin e kriptuar e memorizon ne vektorin kriptuar[] */
        
    if((output fopen(outputKriptuar"w"))==NULL){
        
    printf("File-i output nuk egziston ose nuk mund te hapet\n");
        exit(
    1);
        }
        else{
        
    fprintf(output"%s\n"kriptuar);  /* shkruaj ne File tekstin e kriptuar */
        
    fclose(output);
        }
      }
    system("PAUSE");  
    return 
    0;
    }



    /* Funksioni qe ben kriptimin */

    void kripto(char origjinali[], char kriptuar[]){

    int i=0temp;
      for(
    i=0origjinali[i]!='\0'i++){          /* per cdo karakter ne teksstin origjinal */
      
    temp pow(2i);                   /* marr kodin ascii ne baze 10, e shumezoj */
      
    hexadecimal(((int)origjinali[i]) * tempkriptuar);  /* me 2^i, i=indeksi i karakterit ne vektorin e tekstit origjinal */
      
    }                           /* rezultatin e kthej ne hexadecimal me 6 shifra */
    printf("\n%s\n"kriptuar);
    return;
    }


    /* funksioni qe ben konvertimin e nje numri decimal ne numer hexadecimal */

    void hexadecimal(int decimalchar kriptuar []){
    int i=5;
    int temp;
      while(
    i>=0){
      
    temp pow(16i);
      
    kriptuar[indice++]=hexa[decimal/temp];
      
    decimal decimal - (decimal/temp)*temp;
      
    i--;
      }
      
    kriptuar[indice++]=' ';
    return;

    Edi

  4. #4
    Programues Softueresh Maska e edspace
    Anëtarësuar
    04-04-2002
    Vendndodhja
    Filadelfia, SHBA
    Postime
    2,565

    Një zgjidhje interesante nga Betim Deva në LISP

    Kodi:
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ; Autor: Betim Deva
    ; E-mail: betim ET pr-tech PIKE net
    ; Data: 10 Dhjetor 2004
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    
    ; Procedura qe e de-kripton  shkronjen
    ;Formula eshte dekriptuar = enkriptuar / 2^pozita (apo right-shift per n pozita)
    (define dekripto_shkronjen (lambda (dec pozita)
       (integer->char (/ dec (expt 2 pozita)))  
     ))
    
    ; Procedura rekurzive qe dekripton cdo karakter te listes
    (define dekripto (lambda (lst n)                   
      ;Kushti i ndaljes qe shikon nese eshte arritur elementi i fundit
      (if (null? (cdr lst)) 
           ;Nese po
           (cons (dekripto_shkronjen (car lst) n) '()) 
           ;Nese jo
           (append (                                   
                    ;Konstrukton listen me vetem elementin e pare
                    cons (dekripto_shkronjen (car lst) n) '()) 
                    ;Thirrja rekurzive me pjesen e tjeter te listes 
                    ; dhe pozita rritet per 1                
                    (dekripto (cdr lst) (+ n 1))
            )
      )
     ))
    
    ;Programi kryesor
    (define programi (lambda (lst)      
      ;Shikon nese lista eshte e mbushur
      ( if(null? lst)
         (write "Lista e zbrazet")
         ;Perndryshe Therret proceduren dekripto duke filluar prej pozites 0 
         ;Dhe i shfaq rrezultatet
         (display (dekripto lst 0))
      )
    ))                   
    
    
    ;Testimi per dekriptim
    (programi '(#x00004A #x0000EA #x000080 #x000360 #x000750 #x000DA0 #x001D00 #x003280 #x002100))
    Edi

  5. #5
    i/e regjistruar
    Anëtarësuar
    08-12-2004
    Vendndodhja
    prishtine
    Postime
    8
    per edspace
    pershendetje edspace desha te ju lus per nje sherbim...e kom nje detyre te thjesht ne java jom i ri ne kete..nese mundesh..po ta tregoj..po ta qes qetu ose mundesisht me jep emailin edhe te ta dergoj ne e-mail...edhe me ndihmo..qe e-mail im..edhe ti posa te shikosh kete citim ju lutem me lajmeroni ne e-mailin tim pas tasj do jav dergoj problermin tim ne e-mail tendin nese nuk prish pune

  6. #6
    i/e regjistruar
    Anëtarësuar
    08-12-2004
    Vendndodhja
    prishtine
    Postime
    8
    me fal qe e-mail i im toni_soft@hotmail.com tung all the best

  7. #7
    Programues Softueresh Maska e edspace
    Anëtarësuar
    04-04-2002
    Vendndodhja
    Filadelfia, SHBA
    Postime
    2,565
    Toni,

    Problemin në Java hidhe në forum dhe do gjesh ndihmën time ose të anëtarëve të tjerë. Emaili është (edspace ET comcast PIKË net) por siç të thashë, është mirë ta hedhësh në forum që të gjithë të mësojnë nga kodi i shkruajtur.

    Është mirë që detyrat të mundohesh ti bësh vetë dhe nqs të lindin probleme, të bësh pyetje në forum, duke hedhur edhe kodin që ke shkrjuajtur vetë.
    Edi

  8. #8
    i/e regjistruar
    Anëtarësuar
    08-12-2004
    Vendndodhja
    prishtine
    Postime
    8
    tung edi me fal por e di se duhet te mundohem vet por besom se nuk kom iden se si...por vetem se po kuptoj qe behet diqka per te bere parat te holla..por po te them se kete qa e dhash me posht kjo eshte detyra..por te preferoj te shkosh te shikosh librin e D. Schmidit..atje eshte kjo detyr kete detyr e kom per punim seminarik..edhe nese me ndihmo atehere te lutem shihe pak librin..edhe pastaj shko tek kapitulli 5..pastaj zgjedh.. 5.8 programming projects..pastaj shko tek detyra e 6..dhe pastaj nendetyra e 3..mundesish..shiko se spo muj si te qes ate figuren..se si lypet nese shikon pak librin qe te preferova besoj se edhe ti do te kesh me te leht te me ndihmosh..pra ketu mund ta gjesh librin
    http://www.cis.ksu.edu/~schmidt/CIS200/ch5V12.html
    flm per mirekuptimin sdi si tu kisha falenderu po qe se me ndihmon ne lidhje me kete..ok bye

    Alter the MakeChange application in Figure 3, Chapter 3, so that it reads its input interactively and displays the amounts of change as a four-bar graph. (Think of these as ``stacks'' of coins!)

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.
  •