Algoritmaya ait kodlamayı yapamadım

Kodla Büyü

akbilonline

Seçkin Üye
Seçkin Üye
Mesajlar
328
elimde iki boyutlu bir dizi var
1 2
3 4
5 6
şeklinde. şimdi bu diziyi sırasıyla
1 4
2 6
3 5
daha sonra
1 6
4 5
2 3
şeklinde 1 sabit olup diğer eğerleri 2 den başlayarak saat yönünün tersi şeklinde nasıl düzenleyebiliriz.
 
upload_2020-1-31_12-41-42.png

Python'da
 
Döngüdeki sayıyı kullanarak daha kısa bir aktarım yapılabilir. Ama onun için algoritmayı sağlam kurmak lazım. Kafa yormak lazım.
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections;
namespace ConsoleApplication8
{
class Program
{
static int[,] dizi;
static void Main(string[] args)
{
/* iki boyutlu dizimi tanımlayıp dolduralım */
dizi = new int [3,2] {
{1,2},
{3,4},
{5,6}
};
/********************************************/
ekranaYaz();
cevir();
ekranaYaz();
cevir();
ekranaYaz();
Console.ReadLine();
}
static void ekranaYaz()
{
for (int i = 0; i < 3; i++)
{
Console.Write(dizi[i, 0] + " " + dizi[i, 1]);
Console.WriteLine();
}
Console.WriteLine();
}
static void cevir()
{
// Sıra yapısını kullanarak ik ekleneni sıranın sonu kaydıralım tabiki dizinin ilk elemanı "1" hariç
Queue q = new Queue();
// sağ sütun elemanlarını yukardan aşağıya doğru sıraya ekleyelim
for (int i = 0; i < 3; i++)
{
q.Enqueue(dizi[i,1]);
}
// sol sütün elemanlarını aşağıdan yukarı doğru sıraya ekleyelim
for (int i = 2; i > 0; i--)
{
q.Enqueue(dizi[i, 0]);
}
// eklenen elemanların ilk eklenini sona alalım
q.Enqueue(q.Dequeue());
// tekrar diziye ekleyelim
// ilk eleman tabiki 1
dizi[0, 0] = 1;
// sağ sütun elemanlarını diziye ekleyelim
for (int i = 0; i < 3; i++)
{
dizi[i, 1] = Convert.ToInt32(q.Dequeue());
}
// sol sütün elemanlarını diziye ekleyelim
for (int i = 2; i > 0; i--)
{
dizi[i, 0] = Convert.ToInt32(q.Dequeue());
}
}
}
}

c# kodudur.
 
Hocam, vbnet ile yazdığım projeye fikstür denemesi ismi verdim. Projenin fotoğrafını ve açılır proje dosyasını ek olarak yükledim, visual studio 13 kullandım. Butona ait event kodları:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim k As Integer = CInt(TextBox1.Text) 'textboxa girilen değeri tam sayı olarak alıyor.
Dim sayilar(k - 1, k - 1) As String 'diziyi yazı olarak belirledim, siz sayı olarak tabelirleyebilirsiniz
Dim x, y As New List(Of String) 'değişkenin apsis ve ordinatının listeleri
Dim çıktı As String = "" 'çıktıyı mesaj olarak verecek
For i = 0 To k - 1 ' bu döngü ilk eşleştirme için yapıldı
If i < (k / 2) Then
x.Add(1 + i) 'koordinatları listelere atıyoruz
y.Add(k - i)
sayilar(x.Item(i) - 1, y.Item(i) - 1) = x.Item(i).ToString & " ile " & y.Item(i).ToString & " arasındaki maç" ' diziye değer atıyoruz
End If
Next


For j = 0 To (k / 2) - 1
çıktı = çıktı & sayilar(x.Item(j) - 1, y.Item(j) - 1) & Chr(13) ' verileri çıktıya yazdırıyor
Next


'NOT: x VE y LİSTELERİNİN ELEMAN SAYISI GİRİLEN DEĞERİN YARISI VE GİRİLEN DEĞERİN 2 EKSİĞİ KADAR DÖNME OLACAK
'DÖNMEDE HER DEFASINDA x LİSTESİNİN SON ELEMANI y LİSTESİNİN SON ELEMANI, Y LİSTESİNİN İLK ELEMANI X LİSTESİNİN 2.ELEMANI OLACAK

For i = 1 To k - 2 'BU BÖLÜM DÖNMEYİ SAĞLIYOR
Dim degisken As Integer = y.Item(0)
If k > 2 Then
For j = 0 To (k / 2) - 2
y.Item(j) = y.Item(j + 1)
Next
End If
y.Item((k / 2) - 1) = x.Item((k / 2) - 1)
If k > 4 Then
For j = (k / 2) - 1 To 2 Step -1
x.Item(j) = x.Item(j - 1)
Next
End If
x.Item(1) = degisken

çıktı = çıktı & Chr(13) 'fazladan bir boşluk
For j = 0 To (k / 2) - 1
sayilar(x.Item(j) - 1, y.Item(j) - 1) = x.Item(j).ToString & " ile " & y.Item(j).ToString & " arasındaki maç"
çıktı = çıktı & sayilar(x.Item(j) - 1, y.Item(j) - 1) & Chr(13)
Next
Next

MsgBox(çıktı)
End Sub

Siteden indirmede sorun olursa projeyi buradan da indirebilirsiniz.
https://drive.google.com/open?id=1eDmPp0Ax-I_3X1iT01P0_JMEi8-rRe7B
 

Ekli dosyalar

  • Picture.png
    Picture.png
    72.5 KB · Görüntüleme: 30
  • Fikstür deneme.rar
    75.8 KB · Görüntüleme: 5
Geri
Üst