Merhaba, C# öğrenmeye yeni başladım ve basit bir hesap makinesi yazmaya çalıştım fakat;
Kod:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
int x;
int y;
int z;
int p;
Console.WriteLine("1. Sayı :");
x = int.Parse(Console.ReadLine());
Console.WriteLine("2. Sayı :");
y = int.Parse(Console.ReadLine());
Console.WriteLine("Hangi işlem yapılacak?\n 1. Toplama\n 2.Çıkarma\n 3. Çarpma\n 4.Bölme");
p = int.Parse(Console.ReadLine());
if (p == 1)
{
z = x + y;
}
if (p == 2)
{
z = x - y;
}
if (p == 3)
{
z = x * y;
}
if (p == 4)
{
z = x / y; //BU SATIRDA CS0165 HATASI VERİYOR VE ATANMAYAN 'Z' DEĞİŞKENİNİN KULLANIMI YAZIYOR.
}
Console.WriteLine($"Sonuç : {z}");
Console.ReadKey();
}
}
}
İnternetten biraz baktım ama nasıl çözeceğimi anlamadım. Biraz değiştirip :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
int x;
int y;
int z;
int p;
Console.WriteLine("1. Sayı :");
x = int.Parse(Console.ReadLine());
Console.WriteLine("2. Sayı :");
y = int.Parse(Console.ReadLine());
Console.WriteLine("Hangi işlem yapılacak?\n 1. Toplama\n 2.Çıkarma\n 3. Çarpma\n 4.Bölme");
p = int.Parse(Console.ReadLine());
/* BU SATIRLARI EKLEYİNCE DÜZELDİ AMA KULLANICININ 0 GİRMESİ GEREKİYOR BU SATIRLARI SİLEREK NASIL DÜZELTEBİLİRİM.
Console.WriteLine("Lütfen 0 girin.");
z = int.Parse(Console.ReadLine());
*/
if (p == 1)
{
z = x + y;
}
if (p == 2)
{
z = x - y;
}
if (p == 3)
{
z = x * y;
}
if (p == 4)
{
z = x / y;
}
Console.WriteLine($"Sonuç : {z}");
Console.ReadKey();
}
}
}
Lütfen çözümü kolaysa sinirlenmeden yazın ya da "internete bak biraz cahil" falan yazmayın. Daha yeni kodlama dersleri bakıyorum, videolardan ve kitaplardan (eğitim sistemimiz çok güzel olduğu ve yeterli miktarda yazılım ve kodlama dersleri gösterdikleri için) öğrenmeye başladım. Bazen bile unutup yanlışlık yapıyorum kusura bakmayın. Teşekkür ederim şimdiden.
Senin için çalışan bir örnek hazırladım. @Daniel Saddler 'in de dediği gibi switch-case yapısını kullanman daha mantıklı olacaktır. İstersen, sonucu gösterdikten sonra, "goto" yapısını kullanarak, "tekrar denemek ister misiniz?" gibi bir soru sorup, cevaba göre en başa yönlendirebilirsin.
C#:
int x, y, sonuc;
tekrar_basla:
Console.WriteLine("Merhaba");
System.Threading.Thread.Sleep(2000);
Console.WriteLine("1. Sayı :");
x = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("2. Sayı :");
y = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Hangi işlem yapılacak?\n 1. Toplama\n 2. Çıkarma\n 3. Çarpma\n 4. Bölme");
sonuc = Convert.ToInt32(Console.ReadLine());
switch(sonuc) {
case 1:
sonuc = x + y;
break;
case 2:
sonuc = x - y;
break;
case 3:
sonuc = x * y;
break;
case 4:
sonuc = x / y;
break;
default:
Console.WriteLine("Hatalı bir tuşlama yaptınız!");
goto tekrar_basla;
}
Console.WriteLine("Sonuç: " + sonuc);
Console.ReadKey();
Senin için çalışan bir örnek hazırladım. @Daniel Saddler 'in de dediği gibi switch-case yapısını kullanman daha mantıklı olacaktır. İstersen, sonucu gösterdikten sonra, "goto" yapısını kullanarak, "tekrar denemek ister misiniz?" gibi bir soru sorup, cevaba göre en başa yönlendirebilirsin.
C#:
int x, y, sonuc;
tekrar_basla:
Console.WriteLine("1. Sayı :");
x = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("2. Sayı :");
y = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Hangi işlem yapılacak?\n 1. Toplama\n 2. Çıkarma\n 3. Çarpma\n 4. Bölme");
sonuc = Convert.ToInt32(Console.ReadLine());
switch(sonuc) {
case 1:
sonuc = x + y;
break;
case 2:
sonuc = x - y;
break;
case 3:
sonuc = x * y;
break;
case 4:
sonuc = x / y;
break;
default:
Console.WriteLine("Hatalı bir tuşlama yaptınız!");
goto tekrar_basla;
}
Console.WriteLine("Sonuç: " + sonuc);
Console.ReadKey();
Çok teşekkürler cevabınız için ama yeni başladığım için switch-case,goto vs. bilmiyorum anladığım kadarıyla switch if gibi case'ler de else if gibi. sonuc = Convert.ToInt32(Console.ReadLine());
Zor şeyler değil. Örnekler yaparak, kısa sürede öğrenirsiniz. Switch-case yapısı kısaca; önceden belli olan sonuçlara göre programın devamını sağlayan bir yapı denebilir. Mesela 1'den 4'e kadar kullandığımız gibi. Veya ok yönlerine göre ekrandaki bir oyun karakterini yönlendireceğiz ve her bir case'e ok tuşlarına basıldığını algılayan komutları yazarız. Üst ok tuşuna basıldığında şu şu yapılsın gibi. Goto da belirlediğiniz yere geri döndürüyor kısaca.
degisken = Convert.ToInt32(Console.ReadLine());
Yukarıdaki yapı da, klavyeden alınan sayısal değeri, int tipine dönüştürmeyi sağlıyor. Klavyeden alınan String değerlerle matematik işlemi yapamayacağımız için, matematik işlemleri öncesinde böyle bir dönüştürme işlemine ihtiyaç duyuyoruz.
Bu video windows için visual studio programlama sayfası nasıl açılır hakkında
Bu da 4 işlem yapan basit hesap makinesi yapımı. Video gerçekten çok basitçe anlatılmış izleyince yapması çok kolay. Buradan bakmanı öneririm hatta istersen 60-80 videosu var C# visual studio için hepsini izleyebilirsin.
Merhaba, C# öğrenmeye yeni başladım ve basit bir hesap makinesi yazmaya çalıştım fakat;
Kod:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
int x;
int y;
int z;
int p;
Console.WriteLine("1. Sayı :");
x = int.Parse(Console.ReadLine());
Console.WriteLine("2. Sayı :");
y = int.Parse(Console.ReadLine());
Console.WriteLine("Hangi işlem yapılacak?\n 1. Toplama\n 2.Çıkarma\n 3. Çarpma\n 4.Bölme");
p = int.Parse(Console.ReadLine());
if (p == 1)
{
z = x + y;
}
if (p == 2)
{
z = x - y;
}
if (p == 3)
{
z = x * y;
}
if (p == 4)
{
z = x / y; //BU SATIRDA CS0165 HATASI VERİYOR VE ATANMAYAN 'Z' DEĞİŞKENİNİN KULLANIMI YAZIYOR.
}
Console.WriteLine($"Sonuç : {z}");
Console.ReadKey();
}
}
}
İnternetten biraz baktım ama nasıl çözeceğimi anlamadım. Biraz değiştirip :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
int x;
int y;
int z;
int p;
Console.WriteLine("1. Sayı :");
x = int.Parse(Console.ReadLine());
Console.WriteLine("2. Sayı :");
y = int.Parse(Console.ReadLine());
Console.WriteLine("Hangi işlem yapılacak?\n 1. Toplama\n 2.Çıkarma\n 3. Çarpma\n 4.Bölme");
p = int.Parse(Console.ReadLine());
/* BU SATIRLARI EKLEYİNCE DÜZELDİ AMA KULLANICININ 0 GİRMESİ GEREKİYOR BU SATIRLARI SİLEREK NASIL DÜZELTEBİLİRİM.
Console.WriteLine("Lütfen 0 girin.");
z = int.Parse(Console.ReadLine());
*/
if (p == 1)
{
z = x + y;
}
if (p == 2)
{
z = x - y;
}
if (p == 3)
{
z = x * y;
}
if (p == 4)
{
z = x / y;
}
Console.WriteLine($"Sonuç : {z}");
Console.ReadKey();
}
}
}
Lütfen çözümü kolaysa sinirlenmeden yazın ya da "internete bak biraz cahil" falan yazmayın. Daha yeni kodlama dersleri bakıyorum, videolardan ve kitaplardan (eğitim sistemimiz çok güzel olduğu ve yeterli miktarda yazılım ve kodlama dersleri gösterdikleri için) öğrenmeye başladım. Bazen bile unutup yanlışlık yapıyorum kusura bakmayın. Teşekkür ederim şimdiden.
Sorun şu örneğin 5 i 2 ye böl 2.5 çıkar senin değerin ise int yani tam sayı değeri ve 2.5 tam sayı olmadığından sorun oluyor bunun için şimdilik double değişkenini kullan double ondalıklı(virgüllü) sayı değerlerini tutmanda yardımcı olur kısaca z nin başına int yerine double koy bide aklında bulunsun z artık bir double değişkeni o yüzden z yi dönüştürürken double'a dönüştürcez o yüzden int.Parse() yerine double.Parse()'ı dene