Merhabalar arkadaşlar, Sitemizi programlama ile ilgilenen bütün arkadaşlarımızın Türkçe içerik konusunda çektiği sıkıntılar düşünülerek soru/cevap şeklinde bir etkileşimde bulunabilmesi için kurduk. Umuyoruz hepimiz için güzel bir deneyim olur. Hasscript Ekibi

0
Point ile hizalama hk.

Çözüldü 1 Cevaplar 68 Gösterim .Net

Aşağıdaki programda A'dan Z'ye tüm İngilizce alfabesini sıralayan bir döngü bulunuyor. Sonrasında point ile bu harfleri hizalamaya çalıştım fakat bir türlü istediğim sonucu elde edemedim. Point'te yaptığım değişiklikler çoğunlukla harflerin görünmemesine sebep oluyor. Bu konuda da kaynaklar neden bu kadar kısıtlı anlam veremedim.

 

1. Harfleri 1. satır 13, 2. satır 13 tane olacak şekilde hizalamak istiyorum, bunu nasıl yapabilirim ?

2. Dinamik programlama hakkında kitap veya eğitim önerileriniz var mı ? Bu konuda pek kaynağa rastlayamadım.

 

Yardımlarınızı bekliyorum, şimdiden teşekkürler.

 

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 WinFormsApp1
{
    public partial class Form1 : Form
    {
        Label labels = new Label();
        int i = 1;
        int xartis = 0;
        int ilkAtamaYirmiDokuz = 0;
        public Form1()
        {
            InitializeComponent();

            for (char h = 'A'; h <= 'Z'; h++)
            {
                Label labels = new Label();
                Point lblkonum = new Point();
                if (h<'G')
                {
                    
                    if(ilkAtamaYirmiDokuz < 29)
                    {
                        lblkonum.X = 29;
                        lblkonum.Y = 80;
                        labels.Location = lblkonum;
                        labels.Name = "Label" + i;
                        labels.Text = Convert.ToString(h);
                        this.Controls.Add(labels);
                        ilkAtamaYirmiDokuz = 29;
                        i++;
                    }
                    else if (ilkAtamaYirmiDokuz >= 29)
                    {
                        xartis = xartis + 150;
                        lblkonum.X = xartis;
                        lblkonum.Y = 80;
                        labels.Location = lblkonum;
                        labels.Name = "Label" + i;
                        labels.Text = Convert.ToString(h);
                        this.Controls.Add(labels);
                        i++;
                    }
                    
                }
                
                 if(h>'M')
                {
                    xartis = xartis + 110;
                    lblkonum.X = xartis;
                    lblkonum.Y = 90;
                    labels.Location = lblkonum;
                    labels.Name = "Label" + i;
                    labels.Text = Convert.ToString(h);
                    this.Controls.Add(labels);
                    i++;
                }
                 
            }

        }

        private void button1_Click(object sender, EventArgs e)
        {
            
        }
    }
}

 

Ekran çıktısı; 

https://www.hizliresim.com/ed6uid4

kapalı

1 cevap

1
En İyi Cevap
        public Form1()
        {
            InitializeComponent();
            
            int x = 0;
            int y = 80;
            
            for (char h = 'A'; h <= 'Z'; h++)
            {
                
                Label labels = new Label();
                Point lblkonum = new Point();
                x += 29;
                if(x = 'M') {
                    x = 29;
                    y = 100;
                }
                
                lblkonum.X = x;
                lblkonum.Y = y;
                labels.Location = lblkonum;
                labels.Name = "Label" + i;
                labels.Text = Convert.ToString(h);
                this.Controls.Add(labels);
                i++; 
            }
        }

for döngünü biraz değiştirsen olur gibi geldi bana. Ama C# kurulu olmadığı için denemedim. Kısacası;

  • x değerini sürekli arttır
  • eğer ortadaki harfe denk geldiysen başa getir ve y değerini arttır ( yeni satıra başlasın)

Bu şekilde iki satıra M harfinden bölmüş olursun.

 

Dinamik programlama için özel bir kitapdan ziyade algoritmalar önerebilirim, bakabilirsin.

https://www.kitapyurdu.com/kitap/algoritmalar-amp-temel-algoritmalar-ve-veri-yapilari--kombinator-algoritmalar--sifreleme--geometrik-algoritmalar/90072.html

 

(5.7k puan)
seçti
1Yorumlar
(106 puan)
Teşekkür etmek için yazacaktım ancak unutmuşum. Aklıma gelince yazmak istedim, çok teşekkürler :)