C# Girilen 4 Notun Ortalamasını Hesaplama

ÖmerAltıntas

Kilopat
Katılım
11 Haziran 2014
Mesajlar
489
Daha fazla  
Cinsiyet
Erkek
Arkadaşlar bir sorum olacak. Şimdi ben programı yaptım her şey güzel fakat eksili sonuç girince tekrar o satıra göndermesini istiyorum nasıl yapabilirim ? Şu şekilde yaptım ama olmadı.

Console.WriteLine("1.sözlüyü girin");
perf1 = Convert.ToInt16(Console.ReadLine());
if (perf1 < 0)
{
Console.WriteLine("1. sözlüyü tekrar girin");
}
Böyle yaptığım zaman tekrar o satıra göndermesini istiyorum ama diğer satıra geçiyor. Daha yeni başladım pek bilmiyorum.
 
Şu işini görür sanırım;

Kod:
int perf1 =-1;
int loop=0;
While(perf1<0)
{
      if(loop==0)
     {
             Console.WriteLine("1. sözlüyü girin");
             loop = 1;
     }
     else
            Console.WriteLine("1. sözlüyü tekrar girin");
     perf1 = Convert.ToInt16(Console.ReadLine());
}
Burada ilk değer 0'dan küçük olacak ve döngü içerisine girecek. Orada da kullanıcıdan pozitif değer girene kadar değeri alacak.
 
Son düzenleyen: Moderatör:
Kod:
using System;

namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
            double studentGrade = -1;
 
            while(studentGrade <= -1)
            {
                Console.Write("1. Sözlüyü girin: ");
                studentGrade = double.Parse(Console.ReadLine());
            }

           // Virgüllü bir değer girebilmek için double değişkenini kullandık
           // While içine girilen koşul false olana dek çalışır
        }
    }
}

Aşağıda ki kod yapısı daha ileri seviyedir, bu şekilde ki yapıda tüm işlemleri tek bir kerede yaparsınız. En baştaki kod Program.cs dosyası, en sondaki kod ise Extension.cs dosyasının içerisindedir. Eğer herhangi bir sorun yaşıyorsanız bu dosyaların ismini anlayabileceğiniz bir şekilde istediğiniz gibi değiştirebilirsiniz.

Kod:
using System;

namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
            bool gradeControl = false; // While döngüsünün kontrolü.
            string[] studentGrade; // Notların tutulacağı değişken.

            do
            {
                Console.Write("Tüm notları aralarında boşluk bırakarak yazın: ");
                studentGrade = Console.ReadLine().Split(' ');
                // Yukarıda Split komutunun içerisinde boşluk olduğu için her boşluktan sonraki sayıyı dizinin bir sonraki elemanına aktarır.
                // Yani 2 5 7 şeklinde giriş yapıldığında dizinin ilk elemanına 2, bir sonraki elemanına 5 ve son elemanına 7 sayıları eklenir.

                foreach (string Items in studentGrade)
                {
                    if (!Items.IsNumeric()) // Girilen verinin sayı olup olmadığını kontrol eder, string girilmesi halinde hata vererek başa döner.
                    {
                        Console.Clear(); // Konsolda ki tüm yazıları temizler.
                        Console.WriteLine("Sadece sayı olarak yazabilirsiniz, tekrar deneyin.");
                        gradeControl = true;
                        break;
                    }
                    if (int.Parse(Items) <= -1) // Dizinin içerisinde ki verilerin -1 veya -1'den küçük olup olmadığını kontrol eder, küçükse hata vererek başa döner.
                    {
                        gradeControl = true;
                        break;
                    }
                }
            }
            while (gradeControl); // Do içerisinden gradeControl değişkenine true değeri aktarıldığı zaman işlem altındaki koddan çalışmaya devam eder.

            Console.ReadLine();
        }
    }
}

Kod:
using System;

namespace Test
{
    public static class Extension
    {
        public static decimal Sınıf_Adı(this object Değişken_Adı) // Örnek sınıf.
        {
            return Convert.ToDecimal(Değişken_Adı);
        }
        public static bool IsNumeric(this string Text)
        {
            int Output;
            return int.TryParse(Text, out Output);
        }
    }
}
 
Son düzenleyen: Moderatör:
Uyarı! Bu konu 8 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Yeni konular

Geri
Yukarı