Visual Basic Studio sayının toplamını veren kod yapmak

EMRE BAYINDIR

Hectopat
Katılım
25 Mart 2020
Mesajlar
150
Merhaba Visual Basic Studio 2022 : Windows forms uygulaması (.NET Framework) uzantılı açtığım projede almak istediğim yardım, bize 1 adet buton ve 1 adet textbox verilmiştir. Programı çalıştırdığımızda textbox1'e 0 ile 1000 arasında bulunan rastgele 10 sayıyı 3+42+12 şeklinde yazıp butona bastığımızda yazdığımız 10 sayının toplamını veren bir kod yazmak istiyoruz. Yardımlarınızı bekliyorum.
 
Hatalı olmuş olabilir hata alırsanız yazın

C#:
        private TextBox textBox1;
        private Button generateButton;
        private Button calculateButton;

        public MainForm()
        {
            InitializeComponent();
        }

        private void InitializeComponent()
        {
            textBox1 = new TextBox();
            generateButton = new Button();
            calculateButton = new Button();

            SuspendLayout();

            // TextBox1
            textBox1.Location = new System.Drawing.Point(12, 12);
            textBox1.Multiline = true;
            textBox1.Size = new System.Drawing.Size(260, 200);

            // Generate Button
            generateButton.Location = new System.Drawing.Point(12, 220);
            generateButton.Size = new System.Drawing.Size(120, 30);
            generateButton.Text = "Generate Numbers";
            generateButton.Click += new System.EventHandler(GenerateButton_Click);

            // Calculate Button
            calculateButton.Location = new System.Drawing.Point(150, 220);
            calculateButton.Size = new System.Drawing.Size(120, 30);
            calculateButton.Text = "Calculate Sum";
            calculateButton.Click += new System.EventHandler(CalculateButton_Click);

            // MainForm
            AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
            AutoScaleMode = AutoScaleMode.Font;
            ClientSize = new System.Drawing.Size(284, 261);
            Controls.Add(textBox1);
            Controls.Add(generateButton);
            Controls.Add(calculateButton);
            Name = "MainForm";
            Text = "Random Number Sum App";

            ResumeLayout(false);
            PerformLayout();
        }

        private void GenerateButton_Click(object sender, EventArgs e)
        {
            Random random = new Random();
            List<int> randomNumbers = new List<int>();

            for (int i = 0; i < 10; i++)
            {
                randomNumbers.Add(random.Next(0, 1001));
            }

            textBox1.Text = string.Join(" + ", randomNumbers);
        }

        private void CalculateButton_Click(object sender, EventArgs e)
        {
            string[] numbers = textBox1.Text.Split('+');
            int sum = 0;

            foreach (var number in numbers)
            {
                if (int.TryParse(number.Trim(), out int num))
                {
                    sum += num;
                }
            }

            MessageBox.Show($"Sum: {sum}", "Result", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }

        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new MainForm());
        }
    }
 
Hatalı olmuş olabilir hata alırsanız yazın.

C#:
 private TextBox textBox1;
 private Button generateButton;
 private Button calculateButton;

 public MainForm()
 {
 InitializeComponent();
 }

 private void InitializeComponent()
 {
 textBox1 = new TextBox();
 generateButton = new Button();
 calculateButton = new Button();

 SuspendLayout();

 // TextBox1.
 textBox1.Location = new System.Drawing.Point(12, 12);
 textBox1.Multiline = true;
 textBox1.Size = new System.Drawing.Size(260, 200);

 // Generate Button.
 generateButton.Location = new System.Drawing.Point(12, 220);
 generateButton.Size = new System.Drawing.Size(120, 30);
 generateButton.Text = "Generate Numbers";
 generateButton.Click += new System.EventHandler(GenerateButton_Click);

 // Calculate Button.
 calculateButton.Location = new System.Drawing.Point(150, 220);
 calculateButton.Size = new System.Drawing.Size(120, 30);
 calculateButton.Text = "Calculate Sum";
 calculateButton.Click += new System.EventHandler(CalculateButton_Click);

 // MainForm.
 AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
 AutoScaleMode = AutoScaleMode.Font;
 ClientSize = new System.Drawing.Size(284, 261);
 Controls.Add(textBox1);
 Controls.Add(generateButton);
 Controls.Add(calculateButton);
 Name = "MainForm";
 Text = "Random Number Sum App";

 ResumeLayout(false);
 PerformLayout();
 }

 private void GenerateButton_Click(object sender, EventArgs e)
 {
 Random random = new Random();
 List<int> randomNumbers = new List<int>();

 for (int i = 0; i < 10; i++)
 {
 randomNumbers.Add(random.Next(0, 1001));
 }

 textBox1.Text = string.Join(" + ", randomNumbers);
 }

 private void CalculateButton_Click(object sender, EventArgs e)
 {
 string[] numbers = textBox1.Text.Split('+');
 int sum = 0;

 foreach (var number in numbers)
 {
 if (int.TryParse(number.Trim(), out int num))
 {
 sum += num;
 }
 }

 MessageBox.Show($"Sum: {sum}", "Result", MessageBoxButtons.OK, MessageBoxIcon.Information);
 }

 [STAThread]
 static void Main()
 {
 Application.EnableVisualStyles();
 Application.SetCompatibleTextRenderingDefault(false);
 Application.Run(new MainForm());
 }
 }

Hocam cevabın için teşekkür ederim ama bu şekilde hiç görmedik başlangıç seviyesindeyiz ve farklı bir dil galiba yazdığın. Daha çok şu şekilde yazıyoruz
Ekran görüntüsü 2023-11-22 114530.png
 
Sadece toplamsa işin kolay. Inputu alıp, sonuç değişkeni yapıp her artıdan ayırdığın stringi, inte dönüştürüp sonuca doğru gideceksin. Bir sefere özel kod vereceğim. Normalde bu tarz üstüne algoritmik bir şekilde düşünmen gereken şeylerde yardımcı olmam ama dilin özelliklerinden yararlanman gerekecek, salt üstüne düşünme değil yani.

Bir de VB.NET kullanmanı önermiyorum. C# dene programlama öğrenmek istiyorsan.

Geçelim koda;
Kod:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim result As Integer = 0
    Dim nums As String() = TextBox1.Text.Split("+")
    For Each num As String In nums
        Try
            result += Convert.ToInt32(num)
        Catch ex As FormatException
            MessageBox.Show("Sayı ve + dışında bir girdi yapmayın!")
        End Try
    Next
    Label1.Text = $"Sonuç: {result}"
End Sub

Kodun yaptığı işlem basit aslında. Tek kafanı karıştırabilme ihtimali bulunan yeri anlatayım. Öncelikle TextBox1.Text üzerinden gelen stringi ayırarak bir liste haline getirdik. Daha sonrasında bu listedekileri birer sayı haline getirip toplamak için döngüye girdik. Topladıktan sonra sonucu label1.text'e yazdırıyoruz. Bu kadar.

Not: Try Catch bloğu hataları yakalamak içindir. Eğer kullanıcı sayı ve artı dışında bir şey girerse hata çıkabileceğini varsaydığımız için ekliyoruz ki hata çıkmasın da uyaralım kullanıcıyı diye.
1700668463934.png

1700668514592.png

1700668479601.png
 

Yeni konular

Geri
Yukarı