C++ Hesap Makinesi Yapımı (Konsol App)

C++ Hesap Makinesi

Merhaba arkadaşlar bu yazımda sizlere c++ ile nasıl hesap makinesi yapabileceğinizi anlatacağım, kullanıcının girdiği sayılar ile toplama, çıkartma, bölme ve sayının üssünü alan bir hesap makinesi yapacağız. Hadi lafı daha uzatmadan hemen kodlarımıza geçelim.

#include <iostream>
#include <math.h>

Bu kodlarımız standart olarak kodlarımızın çalışmasını sağlayan kütüphanelerdir. Burada önemli olan kütüphane "math.h" kütüphanesidir ve matematiksel işlemler yapabilmemizi sağlıyor.

using namespace std;
float toplama(float x, float y) 
{
return x + y;
}
float cikarma(float x, float y)
{
return x - y;
}
float carpma(float x, float y)
{
return x * y;
}
float bolme(float x, float y) 
{
return x / y;
}
float ussu(float x, float y)
{
return pow(x, y);
}

Hangi matematiksel işlemi yapacaksak onun için fonksiyon oluşturduk ki daha kolay işlem yapabilelim. Kendini tekrar eden kodlar olmasın.
Üstte yazan "using namespace std;" ise sürekli olarak komutlarımızın başına std yazmaktan kurtaran kodumuzdur.

int main()
{
setlocale(LC_ALL, "turkish");
float sayi1, sayi2, sonuc;
int islemkontrol;
char islem;

cout << "İşlemler (+)toplama (-)çıkartma (*)çarpma (/)bölme (^)üssü"<<endl;

islemsifirlama:

cin >> sayi1 >> islem >> sayi2;

islemdevam:

switch (islem)
{
case '+':
sonuc = toplama(sayi1, sayi2);
cout << sonuc<<endl;
break;
case '-':
sonuc = cikarma(sayi1,sayi2);
cout << sonuc<<endl;
break;
case '*':
sonuc = carpma(sayi1,sayi2);
cout << sonuc<<endl;
break;
case '/':
sonuc = bolme(sayi1,sayi2);
cout << sonuc<<endl;
break;
case '^':
sonuc = ussu(sayi1, sayi2);
cout << sonuc << endl;
break;
default:
cout << "Yapabileceklerimin dışında bir işlem girdiniz";
break;
}

kontroltekrari:

cout << "işlem sonlandırmak için 0, işleme devam etmek için 1, işlemleri sıfırlamak için 2 giriniz"<<endl;
cin >> islemkontrol;


switch (islemkontrol)
{
case 0:
break;
case 1:
sayi1 = sonuc;
cout << sayi1<<" ";
cin >> islem >> sayi2;
goto islemdevam;
case 2:
goto islemsifirlama;
default:
cout << "Üzgünüm geçersiz veri girdiniz!!!"<<endl;
goto kontroltekrari;
}

}

Burada ise main fonksiyonunun içine ilk olarak Türkçe karakter hatasını gidermek için "setlocale(LC_ALL, "turkish");" yazdık ve artık sorunsuz bir şekilde programımızda Türkçe karakterleri kullanabiliyoruz.

Daha sonrasında ise float, int ve char olan değişkenlerimizi belirledik, ardından kullanıcıya hangi işlemi yapmak istediğini sorduk.

islemsifirlama: kısmında kullanıcıdan girilen sayıları aldık.
islemdevam: ile kullanıcının girdiği sayıları ve işlemi alıp kullanıcıya sonucu göstermek üzere bir "switch case" döngüsü oluşturduk ve kullanıcının istediği işleme göre "switch" yapısında işlemi hesaplatıp kullanıcıya sunduk.

kontroltekrari: kısmında kullanıcının işleme devam edip etmek istemediğini veya ne yapmak istediğini sorduk.
Kullanıcının verdiği sonucu yeni bir "switch" yapısına soktuk ve kullanıcı ne yapmak ister ise "goto" komutu ile o yere kullanıcıyı yönlendirdik.

Gelin şimdi bir de kodların tamamını toplu bir şekilde görelim.

#include <iostream>
#include <math.h>
/* Osman ERDEM C++ Hesap Makinesi */
using namespace std;
float toplama(float x, float y) 
{
	return x + y;
}
float cikarma(float x, float y)
{
	return x - y;
}
float carpma(float x, float y)
{
	return x * y;
}
float bolme(float x, float y) 
{
	return x / y;
}
float ussu(float x, float y)
{
	return pow(x, y);
}


int main()
{
	setlocale(LC_ALL, "turkish");
	float sayi1, sayi2, sonuc;
	int islemkontrol;
	char islem;

	cout << "İşlemler (+)toplama (-)çıkartma (*)çarpma (/)bölme (^)üssü"<<endl;

islemsifirlama:

	cin >> sayi1 >> islem >> sayi2;

islemdevam:

	switch (islem)
	{
	case '+':
		sonuc = toplama(sayi1, sayi2);
		cout << sonuc<<endl;
		break;
	case '-':
		sonuc = cikarma(sayi1,sayi2);
		cout << sonuc<<endl;
		break;
	case '*':
		sonuc = carpma(sayi1,sayi2);
		cout << sonuc<<endl;
		break;
	case '/':
		sonuc = bolme(sayi1,sayi2);
		cout << sonuc<<endl;
		break;
	case '^':
		sonuc = ussu(sayi1, sayi2);
		cout << sonuc << endl;
		break;
	default:
		cout << "Yapabileceklerimin dışında bir işlem girdiniz";
		break;
	}

kontroltekrari:

	cout << "işlem sonlandırmak için 0, işleme devam etmek için 1, işlemleri sıfırlamak için 2 giriniz"<<endl;
	cin >> islemkontrol;


	switch (islemkontrol)
	{
	case 0:
		break;
	case 1:
		sayi1 = sonuc;
		cout << sayi1<<" ";
		cin >> islem >> sayi2;
		goto islemdevam;
	case 2:
		goto islemsifirlama;
	default:
		cout << "Üzgünüm geçersiz veri girdiniz!!!"<<endl;
		goto kontroltekrari;
	}

}