C++ gelişmiş hesap makinesi

Başlatan TRKağan, 19 Nisan 2016 - 18:11:22

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

TRKağan

Herkese Merhaba. Windowsda C++ ile yaptığım hesap makinesinin kodları. Vakit budukça geliştirmeye devam ediyorum. Faktoriyel ile trigonometriyi internetten aldım gerisi bana aittir. Hatalarım varsa bildiriniz.



#include <iostream>
#include <math.h>
#include <windows.h>   //Kütüphaneler Tanımlandı
using namespace std;

main(){
setlocale(LC_ALL,"Turkish"); //Türkçe karekter tanımı
SetConsoleTitle("Hesap Makinesi / Coder:Kagan Akpinar"); //Consol başlığı
system("color 3A"); //Consol rengi
int x,y,z,i;
char a;
double number;
        int sayi;


label:


//hesap makinesi


cout<<"      Hesap Makinesine Hoşgeldiniz.\n";
cout<<"          Lütfen Bir işlem Seçiniz.\n";
cout<<"  1)  Matematiksel İşlemler\n";
        cout<<"  2)  Geometrik İşlemler\n";
cin>> z;

//Switch-case Başlangıcı
switch(z) {

case 1:{
system("cls"); //Ekranı temizledik
cout<<"     Matamatiksel İşlemler\n";
cout<<"  1)  Toplama İşlemi\n";
cout<<"  2)  Çıkarma İşlemi\n";
cout<<"  3)  Çarpma İşlemi\n";
cout<<"  4)  Bölme İşlemi\n";
cout<<"  5)  Karekök Alma\n";
cout<<"  6)  Üslü İşlemler\n";
cout<<"  7)  Logaritma Hesaplama\n";
cout<<"  8)  Trigonometri Hesaplama\n";
cout<<"  9)  Faktoriyel Hesaplama\n";
cout<<"  10) İkinci Dereceden Denklemin Köklerini Bul\n";
cin>>x;
//case 1 içindeki switch-case
/////////////////////////////////////////////////////////////////////////////////
switch(x){
//Toplama İşlemi
case 1 : {
system("cls"); //Ekranı temizledik
cout<<"  Toplama İşlemi   \n";
cout<<"Birinci Sayıyı giriniz:";
                cin>> x;
cout<<"İkinci sayıyı giriniz:";
cin>> y;
cout<<"Sayıların Toplamı:"<<" "<< x+y << endl;
}
break;

//Çıkarma İşlemi
case 2 : {
system("cls"); //Ekranı temizledik
cout<<"    Çıkarma İşlemi   \n";
cout<<"Birinci Sayıyı giriniz:";
cin>> x;
cout<<"İkinci sayıyı giriniz:";
cin>> y;
cout<<"Sayıların Farkı:"<<" "<< x-y;
}
break;
//Çarpma İşlemi
case 3 : {
system("cls"); //Ekranı temizledik
cout<<"    Çarpma İşlemi  \n";
cout<<"Birinci Sayıyı giriniz:";
cin>> x;
cout<<"İkinci sayıyı giriniz:";
cin>> y;
cout<<"Sayıların Çarpımı:"<<" "<<x*y;
}
break;
//Bölme işlemi
case 4 : {
system("cls"); //Ekranı temizledik
cout<<"   Bölme İşlemi   \n";
cout<<"Birinci Sayıyı giriniz:";
cin>> x;
cout<<"İkinci sayıyı giriniz:";
cin>> y;
cout<<"Sonuç:"<<" "<<x/y;
}
break;
//Karekök Alma
case 5 : {
system("cls"); //Ekranı temizledik
cout<<"   Karekök Alma   \n";
cout<<"Bir Sayı giriniz:";
cin>> x;
cout<<"Sayının Karekökü:"<<" "<<sqrt(x);

}
break;
//Üslü işlemler
case 6 : {
system("cls"); //Ekranı temizledik
cout<<"   Üslü İşlemler\n";
cout<<"Taban giriniz:";
cin>>x;
cout<<"Üs giriniz:";
cin>>y;
cout<<"Sonuç:"<<" "<< pow (x, y);
}
break;
//Logaritma Hesaplama
case 7 : {
system("cls"); //Ekranı temizledik
cout<<"   Logaritma Hesaplama   \n";
        cout << " Sayıyı Giriniz: " ; cin  >> number ;
cout << " Logaritma " << number << "=";
number = log10 (number);
cout << number <<endl;

}
break;
//Trigonimetri Hesaplama
case 8 : {

double answersin,answercos,answertan;
system("cls"); //Ekranı temizledik
cout << "   Trigonometri Hesaplama " << endl;
cout << " Sayıyı Giriniz: " ; cin >> number ;
cout << " Trigonometri " << number << " =\n ";
answersin = sin (number*3.14159265/180);
answercos = cos (number*3.14159265/180);
answertan = tan (number*3.14159265/180);

cout << " Sin " << number << " "  << floor(answersin) << endl;
cout << "  Cos " << number << " "  << floor(answercos) << endl;
cout << "  Tan " << number << " "  << floor(answertan) << endl;
cout << "  Cot " << number << " "  << floor(1/answertan) << endl;



}
break;
//Faktöriyel Heseplama
case 9:{
system("cls"); //Ekranı temizledik
cout<<"    Faktöriyel Hesaplama   \n";
cout<<" Bir Sayı giriniz:";
cin>>sayi;
int fakt=1,sayac;
for(sayac=1;sayac<=sayi;sayac++)
{
fakt=fakt*sayac;
}
cout<<sayi<<"!=" <<fakt<<endl;
}
break;
//İkinci dereceden denklemin köklerini bulma
case 10:{
system("cls"); //Ekranı temizledik
float x, y, z;
float a;
float x1, x2;

cout<<"   İkinci Dereceden Denklemin Köklerini Bulma  \n";
cout<<" Denklemin x,y ve z katsayılarını giriniz:\n";
cout<<"x=";cin>>x;
cout<<"y=";cin>>y;
cout<<"z=";cin>>z;
a=y*y-4*x*z ;

if(a<0)
cout<<"Gerçel kök yok\n";
else {
if(a==0)
{
x1 = -y / (2 * x);
cout << x1 << " "<<"noktasında çakışan iki kök vardır." << endl;
}
else {
x1 = (-y + sqrt(a)) / (2 * x);
x2 = (-y - sqrt(a)) / (2 * x);
cout << x1 <<" "<< "ve"<<" "<< x2 <<" "<< "noktalarında iki gerçel kök vardır." << endl;
}
}
}
break;
default:{
cout<<"Hata Yanlış Seçim Yaptınız. \n";
break;
}
}
///////////////////////////////////////////////////////////////////////////////
}
break;

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
case 2 : {


system("cls"); //Ekranı temizledik
cout<<"            Geometrik İşlemler\n";
cout<<"  1) Karenin Alanını ve Çevresini Bul\n";
cout<<"  2) Dikdörtgenin Alanını ve Çevresini Bul\n";
cout<<"  3) Çokgenler\n";
cout<<"  4) Eşkenar Dörtgen Alan Bulma\n";
cout<<"  5) Paralelkenar Alan Bulma\n";
cout<<"  6) Yamuk'un Alanını Bulma\n";
cout<<"  7) Daire Alan ve Çevre Hesaplama  \n";
cin>>x;
    //case 2 içindeki switch- case
    switch(x) {
    //Kare alan ve çevre hesabı
    case 1:{
    system("cls"); //Ekranı temizledik
    cout<<"    Karenin Alanı ve Çevresi  \n";
    cout<<"Karenin bir kenarını giriniz:";
    cin>>x;
    cout<<"Karenin Alanı:"<< x*x << " Karenin Çevresi:" << 4*x << endl;
}
    break;
    //Dikdörtgen alan ve çevre hesabı
    case 2:{
system("cls"); //Ekranı temizledik
cout<<"     Dikdörtgenin Alanı ve Çevresi   \n";
cout<<"Dikdörtgenin kısa ve uzun kenarını giriniz:\n";
cin>>x;
cin>>y;
cout<<"Dikdörtgenin Alanı:" << x*y << " Dikdörtgenin Çevresi:"<< 2*(x+y) << endl;

}
break;
//Çokgenler
case 3:{
system("cls"); //Ekranı temizledik
cout<<"    Çokgenler   \n";
cout<<"Kenar sayısını giriniz:";
      cin>>x;
      cout<<"Bir iç açısı:"<<" "<< 180*(x-2) /x << endl;
      cout<<"Bir dış açısı:"<<" "<< 360/x << endl;
      cout<<"İç açılar toplamı:"<<" "<< 180*(x-2) <<endl;
      cout<<"Toplam köşegen sayısı:"<<" "<<  x*(x-3) /2 << endl;
      cout<<"Bir köşesinden en fazla"<<" "<<  x-3 <<" köşegen çizilebilir"<<endl;
      cout<<"Bir köşesinden çıkan köşegenler ile"<<" "<< x-2 <<" tane üçgen oluşur.\n";
}
break;
//Eşkenar dörtgen alan bulma
case 4:{
system("cls"); //Ekranı temizledik
cout<<"  Eşkenar Dörtgen Alan Bulma\n";
cout<<"Eşkenar dörtgenin köşegen uzunluklarını giriniz:\n";
cin>>x>>y;
cout<<"Alan"<<" "<< (x*y) /2 << endl;
}
break;
//Paralelkenar alan bulma
case 5:{
system("cls"); //Ekranı temizledik
cout<<"   Paralelkenar Alan Bulma    \n";
cout<<"Paralelkenarın Yüksekliği:";
cin>>x;
cout<<"Yüksekliğin indiği tabanın uzunluğu:";
cin>>y;
cout<<"Alan:"<<" "<< x*y << endl;


}
break;
//Yamuk alan hesabı
case 6:{
system("cls"); //Ekranı temizledik
float x,y,z;
cout<<"    Yamuk Alan Hesabı   \n";
cout<<"Alt taban giriniz:";
cin>>x;
cout<<"Üst taban giriniz:";
cin>>y;
cout<<"Yüksekliği Giriniz:";
cin>>z;
cout<<"Alan:"<<" "<< z*(x+y) /2 << endl;

}
break;
//Daire alan ve çevre hesabı
case 7:{
system("cls"); //Ekranı temizledik
cout<<"  Daire Alan ve Çevre Hesabı  \n";
cout<<"Yarıçap Giriniz:";
cin>>x;
cout<<"Alan:"<<" "<< pow(x,2);
cout<<"p"<<" ";
cout<<"Çevre:"<<" "<< 2*x <<"p" << endl;

}
break;
default : {
cout<<"Hata. Yanlış seçim yaptınız.";
break; }
}
   







}
/////////////////////////////////////////////////////////////////////////////////
break;
}

cout<<"\nYeniden denemek ister misiniz?[E/H]\n";
cin>>a;

if(a=='e'||a=='E'){
cout<<"Yeniden başlatılıyor...\n";
    Sleep (1000); //Consolu 1 saniye beklettik
    system("cls"); //Ekranı temizledik
goto label; //Başa dönmesini istedik. Yani label yazan yere
                }
  else if (a=='h'||a=='H'){ //Aksi takdirde çıkmasını söyledik
exit(0);

}




bugra9

@TRKağan, yaptığın bir uygulamayı paylaşman çok hoş olmuş ama farkettiysen burası bir linux forumu ve senin kodların sadece window işletim sistemi bulunan bir cihazda çalışacak şekilde yazılmış.
C++ dilini bir işletim sistemine göre kısıtlamak yerine her cihazda derlenebilecek şekilde yazmak daha hoş olmaz mıydı?

Eğer izin verirsen kodlarındaki platform bağımlı satırları silip her cihazda çalışabilecek şekilde paylaşıyorum. İstemediğin takdirde belirtirsen silerim.

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

using namespace std;

main() {
        setlocale(LC_ALL, "Turkish"); //Türkçe karekter tanımı
        int x, y, z, i;
        char a;
        double number;
        int sayi;


        label:


            //hesap makinesi


            cout << "      Hesap Makinesine Hoşgeldiniz.\n";
        cout << "          Lütfen Bir işlem Seçiniz.\n";
        cout << "  1)  Matematiksel İşlemler\n";
        cout << "  2)  Geometrik İşlemler\n";
        cin >> z;

        //Switch-case Başlangıcı
        switch (z) {

            case 1:
                {
                    cout << "     Matamatiksel İşlemler\n";
                    cout << "  1)  Toplama İşlemi\n";
                    cout << "  2)  Çıkarma İşlemi\n";
                    cout << "  3)  Çarpma İşlemi\n";
                    cout << "  4)  Bölme İşlemi\n";
                    cout << "  5)  Karekök Alma\n";
                    cout << "  6)  Üslü İşlemler\n";
                    cout << "  7)  Logaritma Hesaplama\n";
                    cout << "  8)  Trigonometri Hesaplama\n";
                    cout << "  9)  Faktoriyel Hesaplama\n";
                    cout << "  10) İkinci Dereceden Denklemin Köklerini Bul\n";
                    cin >> x;
                    //case 1 içindeki switch-case
                    /////////////////////////////////////////////////////////////////////////////////
                    switch (x) {
                        //Toplama İşlemi
                        case 1:
                            {
                                cout << "  Toplama İşlemi   \n";
                                cout << "Birinci Sayıyı giriniz:";
                                cin >> x;
                                cout << "İkinci sayıyı giriniz:";
                                cin >> y;
                                cout << "Sayıların Toplamı:" << " " << x + y << endl;
                            }
                            break;

                            //Çıkarma İşlemi
                        case 2:
                            {
                                cout << "    Çıkarma İşlemi   \n";
                                cout << "Birinci Sayıyı giriniz:";
                                cin >> x;
                                cout << "İkinci sayıyı giriniz:";
                                cin >> y;
                                cout << "Sayıların Farkı:" << " " << x - y;
                            }
                            break;
                            //Çarpma İşlemi
                        case 3:
                            {
                                cout << "    Çarpma İşlemi  \n";
                                cout << "Birinci Sayıyı giriniz:";
                                cin >> x;
                                cout << "İkinci sayıyı giriniz:";
                                cin >> y;
                                cout << "Sayıların Çarpımı:" << " " << x * y;
                            }
                            break;
                            //Bölme işlemi
                        case 4:
                            {
                                cout << "   Bölme İşlemi   \n";
                                cout << "Birinci Sayıyı giriniz:";
                                cin >> x;
                                cout << "İkinci sayıyı giriniz:";
                                cin >> y;
                                cout << "Sonuç:" << " " << x / y;
                            }
                            break;
                            //Karekök Alma
                        case 5:
                            {
                                cout << "   Karekök Alma   \n";
                                cout << "Bir Sayı giriniz:";
                                cin >> x;
                                cout << "Sayının Karekökü:" << " " << sqrt(x);

                            }
                            break;
                            //Üslü işlemler
                        case 6:
                            {
                                cout << "   Üslü İşlemler\n";
                                cout << "Taban giriniz:";
                                cin >> x;
                                cout << "Üs giriniz:";
                                cin >> y;
                                cout << "Sonuç:" << " " << pow(x, y);
                            }
                            break;
                            //Logaritma Hesaplama
                        case 7:
                            {
                                cout << "   Logaritma Hesaplama   \n";
                                cout << " Sayıyı Giriniz: ";
                                cin >> number;
                                cout << " Logaritma " << number << "=";
                                number = log10(number);
                                cout << number << endl;

                            }
                            break;
                            //Trigonimetri Hesaplama
                        case 8:
                            {

                                double answersin, answercos, answertan;
                                cout << "   Trigonometri Hesaplama " << endl;
                                cout << " Sayıyı Giriniz: ";
                                cin >> number;
                                cout << " Trigonometri " << number << " =\n ";
                                answersin = sin(number * 3.14159265 / 180);
                                answercos = cos(number * 3.14159265 / 180);
                                answertan = tan(number * 3.14159265 / 180);

                                cout << " Sin " << number << " " << floor(answersin) << endl;
                                cout << "  Cos " << number << " " << floor(answercos) << endl;
                                cout << "  Tan " << number << " " << floor(answertan) << endl;
                                cout << "  Cot " << number << " " << floor(1 / answertan) << endl;



                            }
                            break;
                            //Faktöriyel Heseplama
                        case 9:
                            {
                                cout << "    Faktöriyel Hesaplama   \n";
                                cout << " Bir Sayı giriniz:";
                                cin >> sayi;
                                int fakt = 1, sayac;
                                for (sayac = 1; sayac <= sayi; sayac++) {
                                    fakt = fakt * sayac;
                                }
                                cout << sayi << "!=" << fakt << endl;
                            }
                            break;
                            //İkinci dereceden denklemin köklerini bulma
                        case 10:
                            {
                                float x, y, z;
                                float a;
                                float x1, x2;

                                cout << "   İkinci Dereceden Denklemin Köklerini Bulma  \n";
                                cout << " Denklemin x,y ve z katsayılarını giriniz:\n";
                                cout << "x=";
                                cin >> x;
                                cout << "y=";
                                cin >> y;
                                cout << "z=";
                                cin >> z;
                                a = y * y - 4 * x * z;

                                if (a < 0)
                                    cout << "Gerçel kök yok\n";
                                else {
                                    if (a == 0) {
                                        x1 = -y / (2 * x);
                                        cout << x1 << " " << "noktasında çakışan iki kök vardır." << endl;
                                    } else {
                                        x1 = (-y + sqrt(a)) / (2 * x);
                                        x2 = (-y - sqrt(a)) / (2 * x);
                                        cout << x1 << " " << "ve" << " " << x2 << " " << "noktalarında iki gerçel kök vardır." << endl;
                                    }
                                }
                            }
                            break;
                        default:
                            {
                                cout << "Hata Yanlış Seçim Yaptınız. \n";
                                break;
                            }
                    }
                    ///////////////////////////////////////////////////////////////////////////////
                }
                break;

                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            case 2:
                {
                    cout << "            Geometrik İşlemler\n";
                    cout << "  1) Karenin Alanını ve Çevresini Bul\n";
                    cout << "  2) Dikdörtgenin Alanını ve Çevresini Bul\n";
                    cout << "  3) Çokgenler\n";
                    cout << "  4) Eşkenar Dörtgen Alan Bulma\n";
                    cout << "  5) Paralelkenar Alan Bulma\n";
                    cout << "  6) Yamuk'un Alanını Bulma\n";
                    cout << "  7) Daire Alan ve Çevre Hesaplama  \n";
                    cin >> x;
                    //case 2 içindeki switch- case
                    switch (x) {
                        //Kare alan ve çevre hesabı
                        case 1:
                            {
                                cout << "    Karenin Alanı ve Çevresi  \n";
                                cout << "Karenin bir kenarını giriniz:";
                                cin >> x;
                                cout << "Karenin Alanı:" << x * x << " Karenin Çevresi:" << 4 * x << endl;
                            }
                            break;
                            //Dikdörtgen alan ve çevre hesabı
                        case 2:
                            {
                                cout << "     Dikdörtgenin Alanı ve Çevresi   \n";
                                cout << "Dikdörtgenin kısa ve uzun kenarını giriniz:\n";
                                cin >> x;
                                cin >> y;
                                cout << "Dikdörtgenin Alanı:" << x * y << " Dikdörtgenin Çevresi:" << 2 * (x + y) << endl;

                            }
                            break;
                            //Çokgenler
                        case 3:
                            {
                                cout << "    Çokgenler   \n";
                                cout << "Kenar sayısını giriniz:";
                                cin >> x;
                                cout << "Bir iç açısı:" << " " << 180 * (x - 2) / x << endl;
                                cout << "Bir dış açısı:" << " " << 360 / x << endl;
                                cout << "İç açılar toplamı:" << " " << 180 * (x - 2) << endl;
                                cout << "Toplam köşegen sayısı:" << " " << x * (x - 3) / 2 << endl;
                                cout << "Bir köşesinden en fazla" << " " << x - 3 << " köşegen çizilebilir" << endl;
                                cout << "Bir köşesinden çıkan köşegenler ile" << " " << x - 2 << " tane üçgen oluşur.\n";
                            }
                            break;
                            //Eşkenar dörtgen alan bulma
                        case 4:
                            {
                                cout << "  Eşkenar Dörtgen Alan Bulma\n";
                                cout << "Eşkenar dörtgenin köşegen uzunluklarını giriniz:\n";
                                cin >> x >> y;
                                cout << "Alan" << " " << (x * y) / 2 << endl;
                            }
                            break;
                            //Paralelkenar alan bulma
                        case 5:
                            {
                                cout << "   Paralelkenar Alan Bulma    \n";
                                cout << "Paralelkenarın Yüksekliği:";
                                cin >> x;
                                cout << "Yüksekliğin indiği tabanın uzunluğu:";
                                cin >> y;
                                cout << "Alan:" << " " << x * y << endl;


                            }
                            break;
                            //Yamuk alan hesabı
                        case 6:
                            {
                                float x, y, z;
                                cout << "    Yamuk Alan Hesabı   \n";
                                cout << "Alt taban giriniz:";
                                cin >> x;
                                cout << "Üst taban giriniz:";
                                cin >> y;
                                cout << "Yüksekliği Giriniz:";
                                cin >> z;
                                cout << "Alan:" << " " << z * (x + y) / 2 << endl;

                            }
                            break;
                            //Daire alan ve çevre hesabı
                        case 7:
                            {
                                cout << "  Daire Alan ve Çevre Hesabı  \n";
                                cout << "Yarıçap Giriniz:";
                                cin >> x;
                                cout << "Alan:" << " " << pow(x, 2);
                                cout << "p" << " ";
                                cout << "Çevre:" << " " << 2 * x << "p" << endl;

                            }
                            break;
                        default:
                            {
                                cout << "Hata. Yanlış seçim yaptınız.";
                                break;
                            }
                    }








                }
                /////////////////////////////////////////////////////////////////////////////////
                break;
        }

        cout << "\nYeniden denemek ister misiniz?[E/H]\n";
        cin >> a;

        if (a == 'e' || a == 'E') {
            cout << "Yeniden başlatılıyor...\n";
            goto label; //Başa dönmesini istedik. Yani label yazan yere
        } else if (a == 'h' || a == 'H') { //Aksi takdirde çıkmasını söyledik
            return 0;
        }
}


Alıntı YapHatalarım varsa bildiriniz.
Hata değil de doğru olmayan bir kullanımı belirteyim. "goto" komutu assembly dilinde döngü oluşturmak için kullanılır. Bunun daha yüksek seviye dillerdeki karşılığı "for", "while" gibi döngüsel yapılar. Yani "for", "while" gibi döngülerin kullanılabildiği dillerde "goto" komutunu kullanmamak daha temiz, basit ve düzenli bir kodlama yapısı sunacaktır.

TRKağan

Böylesi daha doğru olmuş cevabınız içinde teşekkürler.

Erdem

( 1 + ( ( 2 + 3 ) * ( 4 * 5 ) ) )

Şu yöntemi deneyebilirsin. Örneğin okunan karakter ( ise hiç bir şey yapmayacak. Eğer okunan bir işleç ise + gibi işleçler isimli bir yığıta atacak. Eğer ) ise yapılması gereken aritmetik işlem yapılacak. Sayı ise değerler isimli yığıta eklenecek.