Sunday, 25 May 2014

C dilinde AVL ağaç işlemleri(ekleme,dengeleme,listeleme,adim sayisinin tespiti ve arama)

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>

//avl node tanımlanması
struct node
{
    int key;
    struct node *left;
    struct node *right;
    int height;
};

 int adim;
 int node_sayisi;
 int bulundu;

//verilen nodun yüksekliğini bulan fonksiyon..
int height_calculate(struct node *node)
{
    if (node == NULL)
        return 0;
    return node->height;
}

//iki sayının büyüğünü bulan fonksiyon.....
int max(int a, int b)
{
    return (a > b)? a : b;
}


struct node* newNode(int key)
{
    struct node* node = (struct node*)
                        malloc(sizeof(struct node));
    node->key   = key;
    node->left   = NULL;
    node->right  = NULL;
    node->height = 1;
    return(node);
}


struct node *rightRotate(struct node *b)
{
      struct node* a=b->left;
      struct node* subtree2=a->right;
     
     //döndürme yapılıyor...      
                      a->right=b;
                      b->left=subtree2;
       
         a->height=max(height_calculate(a->left),height_calculate(a->right))+1;  
           b->height=max(height_calculate(b->left),height_calculate(b->right))+1;    
           
           
            return a;
           
   
}


struct node *leftRotate(struct node *a)
{
           
           
       struct node* b=a->right;
       struct node* subtree2=b->left;
     
     
       //döndürme ...
       
        b->left=a;
       a->right=subtree2;  
         
     
     a->height=max(height_calculate(a->left),height_calculate(a->right))+1;
     b->height=max(height_calculate(b->left),height_calculate(a->right))+1;  
           
            return b;
 
}


int getBalance(struct node *r)
{
    if (r == NULL)
        return 0;
    return height_calculate(r->left) - height_calculate(r->right);
}

struct node* insert(struct node* node, int key)
{
   
    if (node == NULL)
        return(newNode(key));

    if (key < node->key)
        node->left  = insert(node->left, key);
    else
        node->right = insert(node->right, key);

   
    node->height = max(height_calculate(node->left), height_calculate(node->right)) + 1;

   
    int balance = getBalance(node);




   
   if (balance > 1 && key < node->left->key)
        return rightRotate(node);

 
    if (balance < -1 && key > node->right->key)
        return leftRotate(node);

 
    if (balance > 1 && key > node->left->key)
    {
        node->left =  leftRotate(node->left);
        return rightRotate(node);
    }

 
    if (balance < -1 && key < node->right->key)
    {
        node->right = rightRotate(node->right);
        return leftRotate(node);
    }

    return node;
}


void inOrder(struct node *root)
{
    if(root != NULL)
    {
       
        inOrder(root->left);
        printf("%d ", root->key);
        inOrder(root->right);
    }
}
 void display(){          
               printf("1.EKLE\n");
               printf("2.LISTELE(INORDER)\n");
               printf("3.ARAMA \n");
               printf("4.ORTALAMA ADIM SAYISI\n");
               printf("5.CIKIS\n\n");
               printf("SECIMINIZ: \n\n");
               }

void  count_node(struct node *root){
                 if(root!=NULL){
                         node_sayisi++;      
                          count_node(root->left);
                          count_node(root->right);    
                                }    
                   
                      }

struct node *search(struct node *root,int aranan){
                 
              if(root==NULL) return NULL;
             
           
                     if(aranan<root->key) {adim++;
                     return  search(root->left,aranan);
                                       
                                                       }
                    else if(aranan>root->key){ adim++;
                           return search(root->right,aranan);
                                       
                                              }
                    else
                          adim++;
                          return root;                  
                                           
                   
                  }


int InternalPathLength(struct node *root,int level){
           
if(root==NULL) return 0;

return level+InternalPathLength(root->left,level+1)+InternalPathLength(root->right,level+1);


                              }


int main()
{
  struct node *root = NULL;
 int sec;
 
   while(1){
      printf("\n\n");
  display();
  scanf("%d",&sec);
  if(sec==1){int sayi;
             printf("sayı giriniz:");
             scanf("%d",&sayi);
             root=insert(root,sayi);
           
             }
  if(sec==2) {
             inOrder(root);
             }
 
  if(sec==3){
             int aranan;
             printf("\n\n Aranacak sayı:");
             scanf("%d",&aranan);
             adim=0;
         
           if(search(root,aranan)==NULL)   printf("\n\nkayit bulunamadı...\a\a\n\n");
           else{
                       printf("\n\nkayit %d adimda bulundu...\n\n",adim);                    
                                            }
                 
             }
  if(sec==4){
             node_sayisi=0;
             count_node(root);
             printf("\n\nnode sayisi=%d ",node_sayisi);
           
             printf("\n\nInternal path length=%d\n\n",InternalPathLength(root,1));
             printf("ORTALAMA ADIM SAYISI:%f dir\n\n",(float)InternalPathLength(root,1)/node_sayisi);
           
             }
 
 
 
    if(sec==5) break;
    }
    printf("cikis yapiliyor.. cikmak icin tusa bas");      
   
     getch();          

}

Sunday, 11 May 2014

ASSEMBLY dilinde ASCII-BCD dönüşümü ve sayıların toplamı

   .MODEL SMALL
   .STACK 64
;--------------------------------------------------------------------
    .DATA
 DATA1_ASC DB '1234545612'
 DATA2_ASC DB '5645342978'
 DATA1_BCD DB 5 DUP(?)
 DATA2_BCD DB 5 DUP(?)
 DATA3_ADD DB 5 DUP(?)
 DATA4_ASC DB 10 DUP(?)
 ;--------------------------------------------------------------------
.CODE
     MAIN PROC FAR
        MOV AX,@DATA
        MOV DS,AX
     MOV SI,OFFSET DATA1_ASC
     MOV BX,OFFSET DATA1_BCD
     MOV CX,10
     CALL CONV_BCD
;*****************data1 convert...
      MOV SI,OFFSET DATA2_ASC
      MOV BX,OFFSET DATA2_BCD
      MOV CX,10
      CALL CONV_BCD    
;*****************data2 converT
      CALL BCD_ADD  
      CALL CONV_ASC
      HLT
     MAIN ENDP
 ;---------------------------------------------------------------------
 CONV_BCD PROC
    LP: PUSH CX
         MOV AX,[SI]
         XCHG AH,AL
         AND AX,0F0FH
         MOV CL,04
         SHL AH,CL
         OR AL,AH
         MOV [BX],AL  
         INC BX
         INC BX
         INC SI
         POP CX
         LOOP LP
        RET
    CONV_BCD ENDP  
;----------------------------------------------------------------------    
   BCD_ADD PROC
    MOV SI,OFFSET DATA1_BCD
      MOV DI,OFFSET DATA2_BCD
      MOV BX,OFFSET DATA3_ADD
      MOV CX,5
      CLC
    LP2:MOV AL,[SI]
        ADC AL,[DI]
        DAA
       MOV [BX],AL
        INC SI
        INC DI
        INC BX
      LOOP LP2
          RET  
   BCD_ADD ENDP    
;-----------------------------------------------------------------------      
   CONV_ASC PROC
    MOV SI,OFFSET DATA3_ADD
    MOV DI,OFFSET DATA3_ASC
    MOV CX,05
    LP3: MOV AL,[SI]
         MOV AH,AL
         AND AX,0F00FH
         MOV CL,04
         SHR  AH,CL
         XCHG AH,AL
         OR AX,3030H
         MOV [DI],AX
         ADD DI,2
         INC SI
         LOOP LP3
      RET
    CONV_ASC ENDP    
;------------------------------------------------------------------------        
       
       
       
       
   
 
             
   
         
       
     

Saturday, 3 May 2014

JAVADA LZW sıkıştırma algoritması kodlama ve çözme kaynak kodları

import java.io.*;
import java.util.*;

public class LZW {
   
    public static List<Integer> compress(String uncompressed){
       
        int box_size=256;
   
    Map<String,Integer>  box=new HashMap<String,Integer>();
   
    for(int i=0;i<256;i++) box.put(""+(char)i, i);//initialize table...
   
   
    List<Integer> result=new ArrayList<Integer>();
   
    String p="";
   
    for(char c:uncompressed.toCharArray()){
                      if(box.containsKey(p+c)==true)  p=p+c;
                      else{
                           result.add(box.get(p));
                           box.put(p+c, box_size++);
                          p=""+c;
                       
                          }
                     
                                     }//for sonu...
   
    if(p.equals("")==false) result.add(box.get(p));

    return result;
   
    }
   
public static String decompress(List<Integer> compressed){
   
   int box_size=256;
 
   Map<Integer,String> box=new HashMap<Integer,String>();
 
   String result="";
   for(int i=0;i<256;i++) box.put(i,""+(char)i);
 
   String p=""+(char)(int)compressed.remove(0);
 
   result=p;
 
   String entry="";
   for(int k:compressed){
             if(box.containsKey(k)==true) entry=box.get(k);
           
             else if(k==box_size) entry=p+p.charAt(0);
                 
                     else System.err.println();//hata...
 
                     
 
   
    result=result+entry;
   
   
    box.put(box_size++,p+entry.charAt(0));
   
   
    p=""+entry;
 }//for sonu

 
   return result;
}  
   
   
   
   
    public static void main(String[] args) throws IOException {
   
       
        String text="";
       
        try {
            FileInputStream fıs=new FileInputStream("D:\\deneme\\data.txt");
            InputStreamReader ısr=new InputStreamReader(fıs);
            BufferedReader br=new BufferedReader(ısr);
           
           String l=br.readLine();
         
         
           while(l!=null){
           text+=l;
           l=br.readLine();
         
           }
     
        } catch (Exception e) {
            e.printStackTrace();
        }
       
        List<Integer> compressed=compress(text);
       

        System.out.println(""+compressed);
       
        FileWriter fw=new FileWriter("D:\\deneme\\data_zip.txt");
        fw.write(""+compressed);
        fw.close();
       
       
        String decompressed=decompress(compressed);
       
        System.out.println(decompressed);
       
        FileWriter fw2=new FileWriter("D:\\deneme\\org.txt");
        fw2.write(decompressed);
        fw2.close();
       

Friday, 2 May 2014

DOS Komutları ( Birbirinden önemli komutlar )


Çalıştır komutları ile bilgisayarınıza daha iyi hakim olabilir, dilediğiniz gibi hükmedebilirsiniz.
compmgmt.msc : Bilgisayar yönetimini açar.
clipbrd.exe : Pano işlemcisini açar.
cleanmgr.exe : Disk temizleyiciyi açar.
ciadv.msc : Dizin yöneticisini açar.
charmap.exe : Karakterleri ayarlamanızı sağlar.
Sponsor baglantıya tıklayarak teşekkür edebilirsiniz.
calc.exe :
 Hesap makinesini açar.
diskmgmt.msc : Disk yönetimini açar.
devmgmt.msc :  Aygıt yöneticisini açar.
dfrg.msc :  Disk birleştiriciyi açar.
Sponsor baglantıya tıklayarak teşekkür edebilirsiniz.
eudcedit.exe : Karakter imal edebilirsiniz.
appwiz.cpl : Program ekle kaldırı açar.
access.cpl :  Erişebilirlik seçeneklerini açar.
accwiz.exe :  Erişebilirlik sihirbazını açar.
desk.cpl : Görüntü özelliklerini açar.
eventvwr.exe : Olay görüntüleyicisini açar
freecell.exe :  İskambil oyununu açar.
fsmgmt.msc :  Paylaşılan klasörler menüsünü açar.
hdwwiz.cpl :  Donanım ekleme sihirbazını açar.
Sponsor baglantıya tıklayarak destek verebilirsiniz.
iexpress.exe :  Setup programını açar.
inetcpl.cpl :  İnternet özelliklerini açar.
intl.cpl :  Bölge ve dil ayarlarını açar.
joy.cpl : Oyun kontrollerini açar.
magnify.exe :  Büyüteçi açar.
main.cpl :  Fare özelliklerini açar.
mmsys.cpl : Ses ayarlarını açar.
mspaint.exe : Paint programını açar.
narrator.exe :  İngilizce ekran okuyucusunu açar.
ntbackup.exe :  Yedekleme sihirbazını açar.
nusrmgr.cpl :  Kullanıcı hesaplarını açar.
osk.exe : Ekran klavyesi açar.
telnet.exe :  Telnet’i açar.
spider.exe :  Kağıt oyunu açar.
gpedit.msc :  Grup poliçesi açar.
msconfig.exe  : Sistem ayarlarını açar.
verifier.exe : Sürücü monitörünü açar.
drwtsn32.exe :  Sorun tanıma aracını açar.
dxdiag.exe :  DirectX sürümünüzü öğrenmenizi sağlar.
mobsync.exe :  Senkronizasyon sağlar.
mplay32.exe :  Media Player’ın çok basit bir halini açar.
odbcad32.exe : Database işleme sağlar.
packager.exe  : Obje paketleyiciyi açar.
perfmon.exe :  Sistem monitörünü açar.
progman.exe : Masaüstü yöneticisini açar.
rasphone.exe :  Erişim defterini açar.
shrpubw.exe :  Network paylaşımı bilgisini açar.
sigverif.exe :  İmza denetleyicisini açar.
sysedit.exe :  Sistem yöneticisini açar.
syskey.exe : Şifre databaseini açar.
sndrec32.exe : Ses kaydedicisini açar.
timedate.cpl :  Tarih ayarlama penceresini açar.
tourstart.exe :  Windows XP turu başlatır.
winchat.exe :  Windows içinde bulunan chat programını açar.
winmine.exe :  Mayın Tarlası oyununu açar.
write.exe :  WordPad’i açar.
wupdmgr.exe :  Windows güncelleştirme penceresini açar.
explorer.exe :  Windows Gezgini’ni açar.
powercfg.cpl :  Güç seçeneklerini açar.
rasphone.exe  : Ağ bağlantılarını açar.
regedt32.exe : Windows Kayıt Düzenleyicisi’ni açar.
regedit.exe : Windows Kayıt Düzenleyicisi’ni açar.
sndvol32.exe : Ses ayarlarını yapmanızı sağlar.
notepad.exe :  Not defterini açar.
taskmgr.exe :  Görev yöneticisini açar.
images
Denetim Masası Öğeleri İçin Çalıştır Komutları :
Program Ekle Kaldır / control appwiz.cpl
Tarih Saat özellikleri /control timedate.cpl
Ekran özellikleri / control desk.cpl
Hızlı bul / control findfast.cpl
Fontlar / control fonts
İnternet Özellikleri /control inetcpl.cpl
Klavye özellikleri /control main.cpl keyboard
Mouse Özellikleri / control main.cpl
Multimedya Özellikler /control mmsys.cpl
Ağ Özellikleri / control netcpl.cpl
Şifre özellikleri / control password.cpl
Printer /control printers
Ses Özellikleri / control mmsys.cpl sounds
Sistem Özellikleri /control sysdm.cpl

Thursday, 3 April 2014

C de dosyadan ağırlıklandırılmış graf verisini okuma ile prim ve dfs algoritmalarına göre dolaşma esasına dayanan BASİT bir uygulama

#include <stdio.h>
#include <stdlib.h>
#include<conio.h>
#include<limits.h>


 int adj[6][6];// MALİYET MATRİSİ
 int visit[6];//GRAFLARIN ZİYARET EDİLİP EDİLMEDİĞİNİ KONTROL etmek için...
 int color[6];//1 ise kuyruktan çıktı, 0 ise kuyrukta...
 int key[6];//key dizisi
 int parent[6];//parent dizisi...

struct adjlistnode{//komşuluk listesinin bir düğümünü ifade eden yapı..
                int destination;//hedef node
                 struct adjlistnode *next;
                   };
                 

 struct adjlist{
             
            struct adjlistnode *head;//her komşuluk listesinin ana düğümü vardır. bu düğüm de bunu temsilk eder...  
                };                



struct graph{// genel olarak graf yapısı...
             int v;
             struct adjlist* array;//node sayısı kadar komşuluk listesi oluşturmak için  dizi yapısı tanımlandı......
         
             };


struct adjlistnode* new_adjlist_node(int dest){//düğümleri bağlarken kullanacağımız yeni bir düğümün oluşturulması..
                 
                 
                    struct adjlistnode* new_node=(struct adjlistnode*) malloc(sizeof(adjlistnode));
                 
                    new_node->destination=dest;
                    new_node->next=NULL;
     
                    return new_node;//geri dönüş değeri olarak oluşturulan düğümü gönderiyo...
           
                    };

struct graph* createGraph(int vertex){
           
              struct graph* graph=(struct graph*) malloc(sizeof(struct graph));
              graph->v=vertex;
           
            graph->array=(struct adjlist*) malloc(vertex*sizeof(struct adjlist));
           
              for(int i=0;i<vertex;i++) graph->array[i].head=NULL;
           
              return graph;
     
              };

void add_edge(struct graph* graph,int source,int desti){//kenarları birleştirme için yazılmış metod..kaynak ve hedef düğümlerini parametre olarak alıyor...
           
            struct adjlistnode* new_node=new_adjlist_node(desti);//hedef düğümü için oluşturulan düğüm
         
            new_node->next=graph->array[source].head;
         
            graph->array[source].head=new_node;
         
            // yönsüz graf olduğu için her iki yön  bağlanır....
         
           /* new_node=new_adjlist_node(source);
            new_node->next=graph->array[desti].head;
            graph->array[desti].head=new_node;*/
         
                }

int convert(char x){//char ifadenin int değere convert yapılması...
           switch(x){
                     case '0':
                              return 0;
                              break;
                   
                   
                   case '1':
                            return 1;
                            break;
                         
                      case '2':
                               return 2;
                               break;
                             
                      case '3':
                               return 3;
                               break;
                             
                     case '4':
                              return 4;
                              break;
                   
                   
                      case '5':
                               return 5;
                               break;
                       case '6':
                                return 6;
                                break;
                         case '7':
                                  return 7;
                                  break;
                               
                          case '8':
                                   return 8;
                                  break;
                               
                           case '9':
                                    return 9;
                                    break;
                     
                     
                     
                     
                            default:
                                      return 0;          
               
                     }
                 }




void print(struct graph * graph){//istenilirse graf ekrana yazdırılabilir...
               
              for(int i=0;i<graph->v;i++){
                   
                      struct adjlistnode* temp=graph->array[i].head;//ana düğüm ..
                   
                      printf("vertex: %d--",i);
                   
                      while(temp){
                               
                               printf("%d-",temp->destination);
                               
                                  temp=temp->next;
                               
                               
                                  }
                      printf("\n\n");
                                         }  
               
           
                               }

void dfs(int s){//deept first search fonksiyonu...
         
             visit[s]=1;//ziyaret edildi anlamında...
           
             for(int i=0;i<6;i++){
                     if(adj[s][i] !=0 &&visit[i]==0){
                   
                                           dfs(i);
                                          printf("%d-->",i);
                                              }
               
             
               
                     }
           
           
           
             }
           
   int empty(){//kuyruğun boş olup olmadığının kontrolü...0:dolu 1: bos
               for(int i=0;i<6;i++){
                       if(color[i]==0) return 0;
                     
                       }
             
               return 1;
               }    


 int min_key(){//kuyruktaki elemanların key değerleri...
             
               int min=INT_MAX;//sonsuz anlamında...
               int min_index=-1;
               for(int v=0;v<6;v++){
                       if(color[v]==0&&key[v]<min){
                                            min=key[v];
                                            min_index=v;    
                                                   }
                     
                       }
             
             
             
              return min_index; //enküçük key değerine sahip düğüm inedexi geri döndürülüyor..
             
             
               }  
     
           
void prim(int s){//prim fonksiyonu...
           
              for(int i=0;i<6;i++){
                      color[i]=0;
                      key[i]=INT_MAX;
                      }//for
       
          key[s]=0;//baslangıc nodu key değeri 0 yapılıyor...
          parent[s]=-1;//başlangıç düğümü parenti olamaz..
       
       
       
                                       while(empty()!=1){      
                                                          int u=min_key();
                                                           color[u]=1;//kuyruktan cıkarma anlamına geliyo..
               
                                                            for(int j=0;j<6;j++){
                       
                                                                                if(adj[u][j]!=0&&color[j]==0&&adj[u][j]<key[j]){
                                                                                     parent[j]=u;    
                                                                                      key[j]=adj[u][j];
                                                             
                                                                                  }
                       
                       
                       
                                                                             }//for sonu..
               
                                                           }//while sonu
               
                  printf("KENAR -----PARENT-----MALİYET\n\n");
               
            for(int i=0;i<6;i++){
                    if(i!=s)
                    printf("%d------------>%d------------>%d\n\n",i,parent[i],adj[i][parent[i]]);
                 
                 
                    }  
       
              }


main(){
          char arr[20];
       
         for(int i=0;i<6;i++){//ziyaret edilmedi hepsi....
                 visit[i]=0;
           
                 }
       
                 FILE *dosya;
               
                 printf("graf dosyadan okunuyor...\n");
                 dosya=fopen("d:\\deneme\\graf.txt","r");
             
                 if(fopen("d:\\deneme\\graf.txt","r")==NULL) printf("dosya acilamadi..\n");
                 else{
           
                      int v=6;
                      struct graph* graph = createGraph(v);//v tane node olan graph oluşturuldu...
       
          fscanf(dosya,"%s",arr);
                         int i=0;
                                while(!feof(dosya)){
                                                 for(int j=0;j<6;j++){
                                                                   adj[i][j]=convert(arr[j]);
                               
                                                                     }                        
                             
                                                 fscanf(dosya,"%s",arr);
                                                                     i++;
                                                 for(int j=0;j<6;j++){
                                                                      adj[i][j]=convert(arr[j]);
                               
                                                                      }          
                                                         
                                                    } //feof sonu
                              fclose(dosya);
                     
                             for(int k=0;k<6;k++){
                                     for(int j=0;j<6;j++){
                                          if(adj[k][j]!=0)add_edge(graph,k,j);  //komşusu olanlar bağlanıyor..
                                                     
                                                                                       
                                                   
                                                      }
                                     
                                        }            
       
       printf("\n\ngraf oluşturuldu...\n");
     
       printf("\n\nAGİRLıKLANDRİLMİS  GRAF MATRIX:\n\n");
     
       for(int i=0;i<6;i++){
               for(int j=0;j<6;j++){
                       printf("%d--",adj[i][j]);
                     
                       }
               printf("\n");
             
               }
     
       int s;
     
       printf("\n\nVERILEN GRAFIN KOMSULUK MATRİSİ\n\n");
     
       print(graph);
   
       printf("başlangic nodu gir[0-5]="); scanf("%d",&s);
     
     
     
       printf("\n\ndfs  ciktisi:\n\n");
     
       dfs(s);
      printf("%d",s);
   
   
   
      printf("\n\nPRIM CIKTISI:\n\n");
      prim(s);
   
     
             
                  }//else sonu...
     
     
       
         getch();
       
         }

Wednesday, 2 April 2014

JAVADA JLIST COMPONENTINE VERİ EKLEMEK..



1.adım:Global olarak list model tanımlanır...Şu şekilde yapılabilir...

 public DefaultListModel dm=new DefaultListModel();


2. adım: Bu adımda ise oluşturulan default list model nesnemize elementlerimizi ekleyelim..

mesela 0-50 arası 10 ile tam bölünen sayıları yazdıralım jlist nesnemize...


for(int i=0;i<50;i+=10)dm.addElement(""+i);


3.adım:Ve son olarak oluşturduğumuz listmodelin jlist nesnesinin modeli olacak şekilde atıyoruz...


jList1.setModel(dl);



VE artık jlist nesnemizin içinde eklenen veriler görülecektir...


                                   KOLAY GELSİN.....

Saturday, 29 March 2014

C++ da memset() fonksiyonu


Bu fonksiyon bir string gibi bir yapının byte sayısı belirtilerek değerinin set edilmesini sağlar..

Bu fonksiyon formatı       void *memset(void *str, int c, size_t n)   şeklindedir..

Yani geriye değer döndürmez ve 3 adet parametre alır.



str :  Bu işaretçi değerlerini set edeceğimiz yapı.

c:  bu değer set edilecek değerdir.Değişken olarak int veya unsigned char da olabilir..

size_t n:  bu parametre ise set edilecek byte sayısını ifade eder....




ÖRNEK KOD:



#include <stdio.h>
#include <string.h>

int main ()
{
   char str[50];

   strcpy(str,"DENEME yasir kilic ");//string oluşturuldu...
   puts(str);

   memset(str,'x',5);   //stringin ilk 5 byte ksmı  'x' değeryle set ediliyor...
   puts(str);
   
   return(0);
}