C++ Telefon Rehberi

Telefon rehberi.cpp

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <ctype.h>
#include <Windows.h>
#define SIL system("CLS");// bundan sonra system("cls");kullanacagım her yere sil yazarsam da aynı şey olur.
int N = 0;//Asagida her fonksiyon icin ayrı ayrı N degeri tenımlamamak icin başta tanımlarsak direk bu degere ulaşabiliriz.
struct dogumtarihi
{
	char gun[10];
	char ay[10];
	char yil[10];
};
struct adres
{
	char il[100];
	char mahalle[100];
	char sokak[100];
	char numara[100];
	char epostaadresi[100];
};
struct Rehber
{
	char Isim[100];
	char Soyad[100];
	char evtelefonu[100];
	char ceptelefonu[100];
	char istelefonu[100];
	struct adres adresler;
	struct dogumtarihi dogum;
}KisiBilgileri[BUFSIZ];

void menu();//MENÜ YAPMA FONKSİYONU.
void kisiEkle(struct Rehber KisiBilgileri[BUFSIZ]);//KİŞİ EKLEME FONKSİYONU.
void arama(struct Rehber KisiBilgileri[BUFSIZ]);//MENUDE ARAMA İÇİN YAPILAN FONKSİYON.
void ekranaYazdir(struct Rehber KisiBilgileri[BUFSIZ], int sayac);//EKRANA GORUNTULEMEK İÇİN YAZILAN FONKSİYON.
void txtYaz(struct Rehber KisiBilgileri[BUFSIZ]);//DOSYA İÇİNE YAZMAK İÇİN YAPTIĞIM FONKSİYON.
void guncelle(struct Rehber KisiBilgileri[BUFSIZ]);//GUNCELLEME YAPMAK İÇİN YAPILAN FONKSİYON.
void silme(struct Rehber KisiBilgileri[BUFSIZ]);//SİLME İŞLEMİ YAPMAK İÇİN YAPILAN FONKSİYON.

void main()   //MAIN
{
	FILE *rehber;//Dosya tanımlama islemi
	rehber = fopen("Rehber.csv", "r");//dosya acma işlemi
	char secim;
	char cikis = 'h';//programin kapanmamasi icin
	if (rehber == NULL)
	{
		printf("Dosya Bulunamadi...\n");
	}
	else
	{
		while (!feof(rehber))//dosyanın sonuna gelene kadar 
		{
			fscanf(rehber, "%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",
				&KisiBilgileri[N].Isim,
				&KisiBilgileri[N].Soyad,
				&KisiBilgileri[N].evtelefonu,
				&KisiBilgileri[N].ceptelefonu,
				&KisiBilgileri[N].istelefonu,
				&KisiBilgileri[N].adresler.il,
				&KisiBilgileri[N].adresler.mahalle,
				&KisiBilgileri[N].adresler.sokak,
				&KisiBilgileri[N].adresler.numara,
				&KisiBilgileri[N].adresler.epostaadresi,
				&KisiBilgileri[N].dogum.gun,
				&KisiBilgileri[N].dogum.ay,
				&KisiBilgileri[N].dogum.yil);
			N++;
		}
		fclose(rehber);//rehbberi kapama.
	}
	do
	{
		SIL
			menu();
		char devamET = 'h';
		char switch_on;
		switch_on = getch();
		switch (switch_on)//switch case ile menu yapımı
		{
		case '1':/// KISI EKLE ///
			do
			{
				kisiEkle(KisiBilgileri);
				printf("Kisi Eklemeye devam edecekmisiniz? [e]\n");
				devamET = tolower(getch());//cevabi kucuk harfe cevirme
				txtYaz(KisiBilgileri);
			} while (devamET == 'e');
			continue;
		case '2':/// GORUNTULE ///
			for (int i = 0; i < N; i++)
			{
				ekranaYazdir(KisiBilgileri, i);
				getch();//kaldirirsan hepsini tek seferde gosterir
			}
			printf("\nMenuye donmek icin bir tusa basin\n");
			getch();
			continue;
		case '3':/// ARAMA ///
			arama(KisiBilgileri);
			printf("\nMenuye donmek icin bir tusa basin\n");
			getch();
			continue;
		case '4':/// GUNCELLE ///
			guncelle(KisiBilgileri);
			txtYaz(KisiBilgileri);
			printf("Guncellemeye devam edecekmisiniz? [e]\n");
			devamET = tolower(getch());
			printf("\nMenuye donmek icin bir tusa basin\n");
			getch();
			continue;
		case '5':/// SIL ///
			silme(KisiBilgileri);
			txtYaz(KisiBilgileri);
			printf("Kisi silmeye devam edecekmisiniz? [e]\n");
			devamET = tolower(getch());
			printf("Menuye donmek icin bir tusa basin\n");
			getch();
			continue;
		case '6':/// cikis ///
			char cik[] = "rehberden cikiyorsunuz";
			for (int i = 0; i < 23; i++)
			{
				printf("%c", cik[i]);
				Sleep(200);//animasyonla rehberden cikiyorsunuz yazdırırken kac saniyede olacağını belirleme
			}
			cikis = 'e';
			break;
		}
	} while (cikis == 'h');
}
void menu()//menu yapimi
{
	printf("\n\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260");
	printf("\n\260\260                      //\\\\               \260");
	printf("\n\260\260 1.Ekle              //  \\\\              \260");
	printf("\n\260\260                    //    \\\\             \260");
	printf("\n\260\260 2.Goruntule       //      \\\\	           \260");
	printf("\n\260\260                  //TELEFON \\\\	   \260");
	printf("\n\260\260 3.Ara           //REHBERİNE \\\\          \260");
	printf("\n\260\260                //            \\\\	   \260");
	printf("\n\260\260 4-Guncelle    //              \\\\        \260");
	printf("\n\260\260              //                \\\\       \260");
	printf("\n\260\260 5-Sil       //   HOSGELDİNİZ    \\\\	   \260");
	printf("\n\260\260            //                    \\\\     \260");
	printf("\n\260\260 6-Cikis     -----------------------     \260");
	printf("\n\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260\260");
	printf("\n\n");
	printf("Lutfen bir secenek giriniz..\n\n");
}
void ekranaYazdir(struct Rehber KisiBilgileri[BUFSIZ], int sayac)
{
	printf("\n** %2d **************\n", sayac + 1);
	printf("    ADI : %s\n", KisiBilgileri[sayac].Isim);
	printf("SOY ADI : %s\n", KisiBilgileri[sayac].Soyad);
	printf("EV TEL NO  : %s\n", KisiBilgileri[sayac].evtelefonu);
	printf("CEP TEL NO:%s \n", KisiBilgileri[sayac].ceptelefonu);
	printf("Is TEL NO: %s\n", KisiBilgileri[sayac].istelefonu);
	printf("ADRESLER....\n");
	printf("İL:%s\n", KisiBilgileri[sayac].adresler.il);
	printf("MAHALLE:%s\n", KisiBilgileri[sayac].adresler.mahalle);
	printf("SOKAK:%s\n", KisiBilgileri[sayac].adresler.sokak);
	printf("Numara:%s\n", KisiBilgileri[sayac].adresler.numara);
	printf("E-POSTA ADRESİ:%s\n", KisiBilgileri[sayac].adresler.epostaadresi);
	printf("Dogum tarihi Gun:%s\n", KisiBilgileri[sayac].dogum.gun);
	printf("Dogum tarihi Ay:%s\n", KisiBilgileri[sayac].dogum.ay);
	printf("Dogum tarihi Yil:%s\n", KisiBilgileri[sayac].dogum.yil);
}
void kisiEkle(struct Rehber KisiBilgileri[BUFSIZ])
{
	printf("Lutfen Kisi Bilgilerini Kucuk Harflerle Giriniz\n");
	printf("ISIM         \t: ");
	flushall();
	gets(KisiBilgileri[N].Isim);
	printf("SOYISIM      \t: ");
	flushall();
	gets(KisiBilgileri[N].Soyad);
	printf("EV  TEL NO   \t: ");
	flushall();
	gets(KisiBilgileri[N].evtelefonu);
	printf("CEP TEL NO   \t: ");
	flushall();
	gets(KisiBilgileri[N].ceptelefonu);
	printf("IS TEL NO   \t: ");
	flushall();
	gets(KisiBilgileri[N].istelefonu);
	printf("IL   \t: ");
	flushall();
	gets(KisiBilgileri[N].adresler.il);
	printf("MAHALLE   \t: ");
	flushall();
	gets(KisiBilgileri[N].adresler.mahalle);
	printf("SOKAK   \t: ");
	flushall();
	gets(KisiBilgileri[N].adresler.sokak);
	printf("NUMARA  \t: ");
	flushall();
	gets(KisiBilgileri[N].adresler.numara);
	printf("E-POSTA ADRESI   \t: ");
	flushall();
	gets(KisiBilgileri[N].adresler.epostaadresi);
	printf("Dogum tarihi gun   \t: ");
	flushall();
	gets(KisiBilgileri[N].dogum.gun);
	printf("Dogum tarihi ay   \t: ");
	flushall();
	gets(KisiBilgileri[N].dogum.ay);
	printf("Dogum tarihi yil   \t: ");
	flushall();
	gets(KisiBilgileri[N].dogum.yil);

	N++;
}
void guncelle(struct Rehber KisiBilgileri[BUFSIZ])
{
	int guncellenecekKisininNumarasi;
	int sec;//Guncellenecek bilginin numarasidir.
	for (int i = 0; i < N; i++)
	{
		ekranaYazdir(KisiBilgileri, i);
	}
	printf("-----Guncellemek istediginiz kisinin numarasini giriniz:---\n");
	scanf("%d", &guncellenecekKisininNumarasi);
	guncellenecekKisininNumarasi--;
	SIL
		ekranaYazdir(KisiBilgileri, guncellenecekKisininNumarasi);

	printf("1. Ad\n");
	printf("2. Soyad\n");
	printf("3. EvtEL_\n");
	printf("4. Ceptel\n");
	printf("5. Istel\n");
	printf("6. IL\n");
	printf("7. Mahalle\n");
	printf("8. Sokak\n");
	printf("9. Numara\n");
	printf("10. Epostaadresi\n");
	printf("11. Dogum tarihi Gun\n");
	printf("12. Dogum tarihi Ay \n");
	printf("13. Dogum tarihi Yil \n");
	printf("Hangisini guncellmek istiyor isiniz?");
	scanf("%d", &sec);//bu seceneklere gore kisinin neyinin degiseceğini belirleriz
	if (sec == 1)
	{
		printf("Eski Bilgi : %s\n", KisiBilgileri[guncellenecekKisininNumarasi].Isim);
		printf("Yeni Bilgi : "); flushall;
		scanf("%s", KisiBilgileri[guncellenecekKisininNumarasi].Isim);//boylelikle yeni bilgi eski bilgi yerine gecer.
	}
	else if (sec == 2)
	{
		printf("Eski Bilgi : %s\n", KisiBilgileri[guncellenecekKisininNumarasi].Soyad);
		printf("Yeni Bilgi : "); flushall;
		scanf("%s", KisiBilgileri[guncellenecekKisininNumarasi].Soyad);
	}
	else if (sec == 3)
	{
		printf("Eski Bilgi : %s\n", KisiBilgileri[guncellenecekKisininNumarasi].evtelefonu);
		printf("Yeni Bilgi : "); flushall;
		scanf("%s", KisiBilgileri[guncellenecekKisininNumarasi].evtelefonu);
	}
	else if (sec == 4)
	{
		printf("Eski Bilgi : %s\n", KisiBilgileri[guncellenecekKisininNumarasi].ceptelefonu);
		printf("Yeni Bilgi : "); flushall;
		scanf("%s", KisiBilgileri[guncellenecekKisininNumarasi].ceptelefonu);
	}
	else if (sec == 5)
	{
		printf("Eski Bilgi : %s\n", KisiBilgileri[guncellenecekKisininNumarasi].istelefonu);
		printf("Yeni Bilgi : "); flushall;
		scanf("%s", KisiBilgileri[guncellenecekKisininNumarasi].istelefonu);
	}
	else if (sec == 6)
	{
		printf("Eski Bilgi : %s\n", KisiBilgileri[guncellenecekKisininNumarasi].adresler.il);
		printf("Yeni Bilgi : "); flushall;
		scanf("%s", KisiBilgileri[guncellenecekKisininNumarasi].adresler.il);
	}
	else if (sec == 7)
	{
		printf("Eski Bilgi : %s\n", KisiBilgileri[guncellenecekKisininNumarasi].adresler.mahalle);
		printf("Yeni Bilgi : "); flushall;
		scanf("%s", KisiBilgileri[guncellenecekKisininNumarasi].adresler.mahalle);
	}
	else if (sec == 8)
	{
		printf("Eski Bilgi : %s\n", KisiBilgileri[guncellenecekKisininNumarasi].adresler.sokak);
		printf("Yeni Bilgi : "); flushall;
		scanf("%s", KisiBilgileri[guncellenecekKisininNumarasi].adresler.sokak);
	}
	else if (sec == 9)
	{
		printf("Eski Bilgi : %s\n", KisiBilgileri[guncellenecekKisininNumarasi].adresler.numara);
		printf("Yeni Bilgi : "); flushall;
		scanf("%s", KisiBilgileri[guncellenecekKisininNumarasi].adresler.numara);
	}
	else if (sec == 10)
	{
		printf("Eski Bilgi : %s\n", KisiBilgileri[guncellenecekKisininNumarasi].adresler.epostaadresi);
		printf("Yeni Bilgi : "); flushall;
		scanf("%s", KisiBilgileri[guncellenecekKisininNumarasi].adresler.epostaadresi);
	}
	else if (sec == 11)
	{
		printf("Eski Bilgi : %s\n", KisiBilgileri[guncellenecekKisininNumarasi].dogum.gun);
		printf("Yeni Bilgi : "); flushall;
		scanf("%s", KisiBilgileri[guncellenecekKisininNumarasi].dogum.gun);
	}
	else if (sec == 12)
	{
		printf("Eski Bilgi : %s\n", KisiBilgileri[guncellenecekKisininNumarasi].dogum.ay);
		printf("Yeni Bilgi : "); flushall;
		scanf("%s", KisiBilgileri[guncellenecekKisininNumarasi].dogum.ay);
	}
	else if (sec == 13)
	{
		printf("Eski Bilgi : %s\n", KisiBilgileri[guncellenecekKisininNumarasi].dogum.yil);
		printf("Yeni Bilgi : "); flushall;
		scanf("%s", KisiBilgileri[guncellenecekKisininNumarasi].dogum.yil);
	}
}
void arama(struct Rehber KisiBilgileri[BUFSIZ])
{
	SIL
		char aranacakisim[BUFSIZ];
	char yanit = 'e';
	char secenek = 0;
	do
	{
		printf("Isme gore arama icin 1 i \nSoy isme gore arama yapmak icin 2'a basiniz..\n");
		secenek = getch();
		char Bayrak = 'H';
		if (secenek == '1')
		{
			printf("\n Aradiginiz Kisinin Adini Giriniz..\n");
			flushall();
			gets(aranacakisim);
			for (int i = 0; i <= N; i++)
			{
				if (strcmp(KisiBilgileri[i].Isim, aranacakisim) == 0)//teker teker kontrol etmede strcmp kullanırız
				{
					ekranaYazdir(KisiBilgileri, i);
					Bayrak = 'E';
				}
			}
			if (Bayrak == 'H')
			{
				printf(" Aradiginiz Kisi Bulunamadi!..\n");
			}
		}
		else if (secenek == '2')
		{
			printf("\n Aradiginiz Kisinin Soy Adini Giriniz..\n");
			flushall();
			gets(aranacakisim);
			for (int i = 0; i <= N; i++)
			{
				if (strcmp(KisiBilgileri[i].Soyad, aranacakisim) == 0)
				{
					ekranaYazdir(KisiBilgileri, i);
					Bayrak = 'E';
				}
			}
			if (Bayrak == 'H')
			{
				printf(" Aradiginiz Kisi Bulunamadi!..\n");
			}
		}
		printf(" Aramaya Devam Etmek Istiyor musunuz ? < Evet >\n");
		yanit = tolower(getch());
	} while (yanit == 'e');
}
void silme(struct Rehber KisiBilgileri[BUFSIZ])
{
	int silinenecekKisininNumarasi = 0;
	char silEmin;
	int sec;//Silinellenecek bilginin numarasidir.
	for (int i = 0; i < N; i++)
	{
		ekranaYazdir(KisiBilgileri, i);
	}
	printf("Silmek istediginiz kisinin numarasini giriniz lutfen\n");
	scanf("%d", &silinenecekKisininNumarasi);
	SIL
		silinenecekKisininNumarasi--;
	ekranaYazdir(KisiBilgileri, silinenecekKisininNumarasi);
	printf("\nBu kisinin dogru kisi olduguna emin misiniz?");
	silEmin = tolower(getch());
	if (silEmin == 'e')
	{
		strcpy(KisiBilgileri[silinenecekKisininNumarasi].Isim, KisiBilgileri[N - 1].Isim);
		strcpy(KisiBilgileri[silinenecekKisininNumarasi].Soyad, KisiBilgileri[N - 1].Soyad);
		strcpy(KisiBilgileri[silinenecekKisininNumarasi].evtelefonu, KisiBilgileri[N - 1].evtelefonu);
		strcpy(KisiBilgileri[silinenecekKisininNumarasi].istelefonu, KisiBilgileri[N - 1].istelefonu);
		strcpy(KisiBilgileri[silinenecekKisininNumarasi].ceptelefonu, KisiBilgileri[N - 1].ceptelefonu);
		strcpy(KisiBilgileri[silinenecekKisininNumarasi].adresler.il, KisiBilgileri[N - 1].adresler.il);
		strcpy(KisiBilgileri[silinenecekKisininNumarasi].adresler.mahalle, KisiBilgileri[N - 1].adresler.mahalle);
		strcpy(KisiBilgileri[silinenecekKisininNumarasi].adresler.sokak, KisiBilgileri[N - 1].adresler.sokak);
		strcpy(KisiBilgileri[silinenecekKisininNumarasi].adresler.numara, KisiBilgileri[N - 1].adresler.numara);
		strcpy(KisiBilgileri[silinenecekKisininNumarasi].adresler.epostaadresi, KisiBilgileri[N - 1].adresler.epostaadresi);
		strcpy(KisiBilgileri[silinenecekKisininNumarasi].dogum.gun, KisiBilgileri[N - 1].dogum.gun);
		strcpy(KisiBilgileri[silinenecekKisininNumarasi].dogum.ay, KisiBilgileri[N - 1].dogum.ay);
		strcpy(KisiBilgileri[silinenecekKisininNumarasi].dogum.yil, KisiBilgileri[N - 1].dogum.yil);
		N--;
	}
}
void txtYaz(struct Rehber KisiBilgileri[BUFSIZ])
{
	FILE *rehber;//dosya acma
	rehber = fopen("Rehber.csv", "w");//dsyaya yazma
	if (rehber == NULL)
	{
		printf("DOsya bulunamadi\n");
	}
	else
	{
		for (int i = 0; i < N; i++)
		{
			//fprintfler ile dosyaya yazma
			fprintf(rehber, "%s\t", KisiBilgileri[i].Isim);
			fprintf(rehber, "%s\t", KisiBilgileri[i].Soyad);
			fprintf(rehber, "%s\t", KisiBilgileri[i].evtelefonu);
			fprintf(rehber, "%s\t", KisiBilgileri[i].ceptelefonu);
			fprintf(rehber, "%s\t", KisiBilgileri[i].istelefonu);
			fprintf(rehber, "%s\t", KisiBilgileri[i].adresler.il);
			fprintf(rehber, "%s\t", KisiBilgileri[i].adresler.mahalle);
			fprintf(rehber, "%s\t", KisiBilgileri[i].adresler.sokak);
			fprintf(rehber, "%s\t", KisiBilgileri[i].adresler.numara);
			fprintf(rehber, "%s\t", KisiBilgileri[i].adresler.epostaadresi);
			fprintf(rehber, "%s\t", KisiBilgileri[i].dogum.gun);
			fprintf(rehber, "%s\t", KisiBilgileri[i].dogum.ay);
			fprintf(rehber, "%s\n", KisiBilgileri[i].dogum.yil);
		}
	}
	fclose(rehber);//dosyayı kapama
}

Feet ,inç ve Cm Dönüşümleri C++

1 feet = 30,48 cm && 1 cm = 0,0328

1 inç = 2.54 cm && 1 cm = 0.3937

#include "iostream"
#include "locale.h"

using namespace std;

void feet_cevir();
void inc_cevir();
void feetcm();
void cmfeet();
void inccm();
void cminc();


int feet,inc,cm;
int main()
{
	setlocale(LC_ALL, "Turkish");
	cout << "~~Uzunluk Birimi Çevirme~~" << endl;
	cout << "1)feet-cm " << endl;
	cout << "2)inç-cm" << endl;
	cout << "\nislemi seç" << endl;
	int secim;
	cin >> secim;

	switch (secim)
	{
	case 1:
		feet_cevir();
		break;
	case 2:
		inc_cevir();
		break;
	default:
		break;
	}
	system("pause");
	return 0;
}

void feet_cevir(){
	cout << "Feet - Cm işlemleri" << endl;
	cout << "1) feet-cm" << endl;
	cout << "2) cm-feet" << endl;
	cout << "\nislemi seç" << endl;
	int feet_secim;
	cin >> feet_secim;

	switch (feet_secim)
	{
	case 1:
		feetcm();
		break;
	case 2:
		cmfeet();
		break;
	default:
		break;
	}
}

void inc_cevir(){
	cout << "inc - Cm işlemleri" << endl;
	cout << "1) inc-cm" << endl;
	cout << "2) cm-nc" << endl;
	cout << "\nislemi seç" << endl;
	int inc_secim;
	cin >> inc_secim;

	switch (inc_secim)
	{
	case 1:
		inccm();
		break;
	case 2:
		cminc();
		break;
	default:
		break;
	}

	
}


void feetcm(){
	cout << "\feet - cm dönüştürücüsü" << endl;
	cout << "feet : ";
	cin >> feet;
	if (feet < 0)
		cout << "hatalı giriş.";
	else
	{
		cm = 0.0328*feet;
		cout << "cm :  " << cm << endl;
	}
	
}

void cmfeet(){
	cout << "\cm - feet dönüştürücüsü" << endl;
	cout << "cm : ";
	cin >> cm;
	if (cm < 0)
		cout << "hatalı giriş.";
	else
	{
		feet = 39.48*cm;
		cout << "feet :  " << feet << endl;
	}
	
}


void inccm(){
	cout << "\inc - cm dönüştürücüsü" << endl;
	cout << "inc : ";
	cin >> inc;
	if (inc < 0)
		cout << "hatalı giriş.";
	else
	{
		cm = 0.393*inc;
		cout << "cm :  " << cm << endl;
	}

}

void cminc(){
	cout << "\cm - feet dönüştürücüsü" << endl;
	cout << "cm : ";
	cin >> cm;
	if (cm < 0)
		cout << "hatalı giriş.";
	else
	{
		inc = 2.54*cm;
		cout << "inc :  " << inc << endl;
	}
}

16-Djkstra Algoritması

Dijkstra Algoritması

Dijkstra algoritması – Graf teorisindeki tek-kaynaklı en küçük yol probleminin çözümüdür.

Yönlü ve yönsüz grafların her ikisi için kullanılır. Fakat, kenarların hepsinin negatif olmayan ağırlıkları olmalıdır.

Ör – 1: 

ornek1_1                                      ornek1_2

ornek1_3                                       ornek1_4ornek1_5

Ör -2 : 

ornek2_1                                                       ornek2_2  ornek2_3                                                      ornek2_4 ornek2_5                                                      ornek2_6 ornek2_7

15-Graflar

Graf, bir olay veya ifadenin düğüm ve çizgiler kullanılarak
gösterilmesi şeklidir
Graf, matematiksel anlamda düğümler ve düğümler arasındaki ilişkiyi gösteren kenarlardan oluşan bir kümedir. Mantıksal ilişki düğüm ile düğüm veya düğüm ile kenar arasında kurulur.
Köse (vertex) adı verilen düğümlerden ve kenar (edge) adı verilip köseleri birbirine bağlayan bağlantılardan oluşan veri yapısıdır.
Aynen ağaçlar gibi çizgeler de doğrusal olmayan veri yapıları grubuna girerler.
Bağlantılı listeler ve ağaçlar grafların özel örneklerindendir. Her kenar iki düğümü birleştirir.

Okumaya devam edin 15-Graflar

14 -Huffman Şıkıştırma Algoritması

Huffman Kodu, Bilgisayar biliminde, veri sıkıştırması için kullanılan, bir entropi kodlama algoritmasıdır. David A. Huffman tarafından 1952 yılında geliştirilmiştir.

Huffman’ın algoritması, her sembol (veya karakter) için özel bir kod üretir. Bu kodlar (ikilik sistemdeki 1 ve 0’lardan oluşan) bit haritası şeklindedir. Veri içerisinde en az kullanılan karakter için en uzun, en çok kullanılan karakter için ise en kısa kodu üretir.

Huffman’ın algoritması, veri içerisindeki karakterlerin kullanım sıklığına (frekans) göre bir ağaç oluşturur. Ağacın en tepesinden aşağıya doğru ilerlerken sola ayrılan dal için 0, sağa ayrılan dal için 1 kodu verilir.

Ör: “AAAABBBCC” kelimesinin huffman algoritması ile sıkıştırma oranını bulunuz.
1- Öncelikle karakterlerin metinde bulunma sıklığı(frekans) larını buluyoruz.
A karakteri metinde 4 kere geçmiş yani frekansı 4
A: 4 , B: 3 , C: 2
2- Bundan sonra yapılacak işlem en düşük frekansa sahip iki elemanı seçerek onlardan ağaç oluşturma işlemi

huffman1

huffman2

3- Şimdide bu karakterlerin yeni hallerinin ne olacağına. Ağaçta kökten itibaren eğer karakterimiz sol alt ağaçta bulunuyorsa koda 0 ekliyoruz , eğer karakter sağ alt ağaçta ise 1 ekliyoruz. Buna göre:

A: 0 oluyor
B: 11
C: 10

Sonuç: Normalde “AAAABBBCC” metinini 8*9 bit ile saklıyorduk. Şimdi ise bu metni şu şekilde saklıyoruz.

AAAA = 0000
BBB = 111111
CC = 1010

“AAAABBBCC” = 00001111111010 yani 14 bit.

Sıkıştırma oranı ((72- 14) / 72) * 100 = %80 oranında sıkıştırdık.

Ör 2:

Ör 3 :

C++ da hangi kelimenin önce geldiğini bulan program

goto komutu ile yapılışı :

// TestCpp.cpp : Defines the entry point for the console application.
//forumkod.com && ibrahimkaya.net

#include "stdafx.h"
#include "iostream"
#include "clocale"
//#include "ctime"
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
	setlocale(LC_ALL,"Turkish");
	//srand(time(NULL));

	char isim1[20];
	cout<<"Bir kelime gir(A) : ";  	cin>> isim1;

	char isim2[20];
	cout<<"Başka sayı veya kelime gir(B) : ";  	cin>> isim2;

	int i= 0;
	do
	{
		if(isim1[i] > isim2[i]){
			cout<<"A B den sonra";
			goto son;
		}

		else if(isim1[i] < isim2[i]){
			cout<<"A B den önce";
			goto son;
		}

		else
			i++;

	}while (i < 20);

	cout<<"A B ye eşit";

	son :
	system("pause");
	return 0;
}

goto komutu kullanılmadan yapışı :

// TestCpp.cpp : Defines the entry point for the console application.
//forumkod.com && ibrahimkaya.net

#include "stdafx.h"
#include "iostream"
#include "clocale"
//#include "ctime"
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
	setlocale(LC_ALL,"Turkish");
	//srand(time(NULL));


	char isim1[20];
	cout<<"Bir kelime gir(A) : "; 
	cin>> isim1;
	

	char isim2[20];
	cout<<"Başka sayı veya kelime gir(B) : "; 
	cin>> isim2;


	if(isim1[20] == isim2[20])
			cout<<"A B ye eşit";

	int i= 0;
	do
	{
		if(isim1[i] > isim2[i]){
			cout<<"A B den sonra";
			break;
		}


		else if(isim1[i] < isim2[i]){
			cout<<"A B den önce";
			break;
		}

		else
			i++;
			
		
			
	}while (i < 20);

	

	
	system("pause");
	return 0;
}

13-Ağaçlar(Tree)

Ağaçlar,doğrusal olmayan belirli niteliklere sahip iki boyutlu veri yapılarıdır.
İkili ağaçlar,düğümlerinde en fazla iki bağ içeren ağaçlardır.
Ağacın en üsteki düğümüne kök (root) denir.
Ağaçlar kökü yukarıda yaprakları aşağıda olacak şekilde çizilirler.

Ağaç veri modelinde ;

  • Bir kök işaretçisi
  • Sonlu sayıda bir düğümü ve onları bağlayan dalları vardır.
  • Veri,ağacın düğümlerinde tutulur. Dallar ise geçiş koşulları vardır.
  • Her ağacın bir kök işaretçisi vardır.

Okumaya devam edin 13-Ağaçlar(Tree)

12-Arama Algoritmaları (Searching Algoritm)

Sıralı veya sırasız listedeki bir elemanın yerinin bulunması işlemine arama denir.Bir liste veya dizi içerisindeki veriler(sayısal veya string olabilir)belirli bir anahtar(key) ifadeye göre aranır.Bu anahtar ifade kelime ,sözcük veya her ikisi de olabilir.

  • Doğrusal arama (Linear search)
  • İkili arama (Binary search)

Genelde küçük boyutlu ve sırasız verilerin aranmasında doğrusal arama ,büyük boyutlu ve sıralı verilerin aranmasında ikili arama algoritmaları seçilir.

Okumaya devam edin 12-Arama Algoritmaları (Searching Algoritm)

11-Sıralama Algoritmaları (Sorting Algorithm)

Sıralama Algoritmaları
(Sorting Algorithm)

sıralama,bir grup veriyi artan ya da azalan bir
şekilde art arda yerleştirme işlemidir.

  • Kabarcık Sıralama(Buble Sort)
  • Araya Yerleştirerek Sıralama(İnsertion Sort)
  • Seçmeli Sıralama(Selection Sort)
  • Hızlı Sıralama(Quick Sort)
  • Birleştirmekli Sıralama(Merge Sort)
  • Kümelemeli Sıralama(Heap Sort)
  • Kabuk Sıralama(Shell Sort)

!Sıralamalar genellikle küçükten büyüğe doğru.

Okumaya devam edin 11-Sıralama Algoritmaları (Sorting Algorithm)

10-Algoritma Analizi, Algoritmalarda Karmaşıklık ve Zaman Karmaşıklığı

Algoritmaların Özellikleri

–   Giriş : Belirlenen veri kümesinden algoritma giriş değerleri alır.

–   Çıkış : Algoritma her bir giriş kümesinde çıkış değerleri üretir. Bu

değerler problemin çözümüdür.

–   Açıklık : Algoritmanın adımları açık olarak tanımlanmalıdır.

–   Doğruluk : Algoritma her bir giriş kümesi için doğru çıkış üretmelidir.

–   Sonluluk : Algoritma, her bir giriş kümesi için amaçlanan çıkışı, sonlu

işlem adımı(büyük olabilir) sonunda üretmelidir

–   Verimlilik : Algoritmanın her bir adımı tam ve sonlu bir zaman diliminde                                          gerçeklenmelidir.

–   Genellik : Yordam formdaki her probleme uygulanabilecek şekilde

genel olmalıdır.

Okumaya devam edin 10-Algoritma Analizi, Algoritmalarda Karmaşıklık ve Zaman Karmaşıklığı