C# parçanın kodunu parça ölçülerinden bulan program yazmak

Elassar

Kilopat
Katılım
19 Mart 2015
Mesajlar
554
Çözümler
2
Yer
Bursa
Daha fazla  
Cinsiyet
Erkek
Meslek
Öğrenci
Selamlar, yazacağım program kısaca şöyle;
Bir şirkette farklı boyut ve şekillerde parçalar üretiliyor. Her parçanın bir kodu var. Ancak nadir de olsa bazı parçaların kodu bilinmiyor. Bu parçanın kodunu, parça ölçülerinden bulan bir program yazacağım. Örneğin parçanın uzunluk, genişlik, çapı gibi değerleri bu programda istenilen yere yazacağım ve parça kodunu gösterecek ya da uyan parçaları gösterecek.
Bu programı yazarken elimde parça ölçülerinin olduğu bir data vs. yok. Bu olmadan da yazabilir miyim? Random parça için random ölçüler olsa da olur önemli olan bu programın bu istenilen şeye göre yazılması.
@Vavien.
C#:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Ölçüden_Parça_Bulma
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        Random r = new Random();
        double a, b, c, d, f, g;
        private void button1_Click(object sender, EventArgs e)     //ara butonu
        {
            double sayı1, sayı2, sayı3, sayı4, sayı5, sayı6;
            
            sayı1 = Convert.ToDouble(textBox1.Text);
            sayı2 = Convert.ToDouble(textBox2.Text);
            sayı3 = Convert.ToDouble(textBox3.Text);
            sayı4 = Convert.ToDouble(textBox4.Text);
            sayı5 = Convert.ToDouble(textBox5.Text);
            sayı6 = Convert.ToDouble(textBox6.Text);
            
            for (int k = 0; k < 1; k++)
            {
                              
                if (sayı6>sayı1)
                {
                    MessageBox.Show("Tekrar Deneyin - Sayı 6, Sayı 5'ten büyüktür!!!");                   
                }

                else
                {
                    //// sayı6, sayi5'ten büyük değilse işleme devam eder

                    if (sayı1 == a && sayı2 == b && sayı3 == c && sayı4 == d && sayı5 == f && sayı6 == g)
                    {
                        long rnd = r.Next(100000, 800000);
                        listBox1.Items.Add("Parça Kodu:" + rnd);
                    }

                    else
                    {
                        MessageBox.Show("Parça Bulunamadı");
                    }
                }
                

            }
          
                                  
        }



        private void button2_Click(object sender, EventArgs e)   //değer üret butonu
        {
            //DEĞERLER mm CİNSİNDENDİR örneğin random üretilen sayı 3500 ise parçanın uzunluğu 3500mm'dir.
                
                a = r.Next(0, 5000);
                b = r.Next(0, 500);
                c = r.Next(0, 50);
                d = r.Next(0, 15);
                f = r.Next(0, 40);
                g = r.Next(0, 2500);
                listBox2.Items.Add(a);
                listBox2.Items.Add(b);
                listBox2.Items.Add(c);
                listBox2.Items.Add(d);
                listBox2.Items.Add(f);
                listBox2.Items.Add(g);
        }



        private void button3_Click(object sender, EventArgs e)
        {
            listBox2.Items.Clear();
        }

        private void button4_Click(object sender, EventArgs e)
        {
            textBox1.Clear();
            textBox2.Clear();
            textBox3.Clear();
            textBox4.Clear();
            textBox5.Clear();
            textBox6.Clear();
        }






    }
}

Kodu bu şekilde yazdım ancak bu kodda bir yere dizileri de eklemem gerekiyor. Örneğin button2click kısmını diziyle değiştiriyorum ama kod doğru çalışmıyor. Nereye ekleyebilirim bir fikir verirseniz sevinirim.
 
Son düzenleme:
Kodlar aşırı derecede spagetti. İsimlendirme kurallarına uyulmamış. Algoritma sorunları. Kod üzerinde pek düşünülmüşe benzemiyor.
Eklediğin bir label'a bile ne yaptığı ile ilgili İngilizce olacak şekilde isimlendir.
Kullandığın döngüleri kafanda canlandır. Döngü konusunda eksiklerin var.

Anlattığına göre senaryo oluşturuyorum.
1- Şirkette belli sayıda ürün oluşturuluyordur. Her ürünün özelikleri aynı ama değerleri farklı. Bu yüzden ürün için bir sınıf oluşturmak gerekiyor. Ve tüm parçaların özelliklerini tanımlamak için bu sınıftan türeyen bir liste yapacağız.
2- Kullanıcıdan parça özellikllerini girmesini isteyeceğiz.
3- Girilen parça özelliklerini listeden aratıp bulmaya çalışacağız.

3 adımda istediğin şey yapılabiliyor. Senin için bir konsolda çalışan kodları gönderiyorum bunu Form'a dökmeyide sana bırakıyorum.

C#:
class Program
{
    static int Main(string[] args)
    {

        Product[] products = new Product[]
        {
            new Product{Code=1111, diameter=0.1, Width=1.1, Length=10.1},
            new Product{Code=2222, diameter=0.2, Width=2.2, Length=20.2},
            new Product{Code=3333, diameter=0.3, Width=3.3, Length=30.3},
            new Product{Code=4444, diameter=0.4, Width=4.4, Length=40.4},
            new Product{Code=5555, diameter=0.5, Width=5.5, Length=50.5},
        };

        Product entryProduct = new Product();

        entryProduct.diameter = Double.Parse(Console.ReadLine());
        entryProduct.Width = Double.Parse(Console.ReadLine());
        entryProduct.Length = Double.Parse(Console.ReadLine());

        Product foundProduct = products.FirstOrDefault(p => p.diameter == entryProduct.diameter && p.Width == entryProduct.Width && p.Length == entryProduct.Length);

        if(foundProduct != null)
        {
            Console.WriteLine(foundProduct.ToString());
        } else
        {
            Console.WriteLine("Girilen veriye uygun ürün bulunamadı.");
        }

        Console.ReadLine();
        return 0;
    }

}


class Product
{
    public int Code { get; set; }
    public double Length { get; set; }
    public double Width { get; set; }
    public double diameter { get; set; }

    public override string ToString()
    {
        return $"Code: {Code}\nLength: {Length}\nWidth: {Width}\nDiameter: {diameter}";
    }
}


Bu kodlar bu hali ile bile spagetti durumunda. İyileştirmek senin elinde.
 

Geri
Yukarı