Merhaba. Elimde bir çift boyutlu matris var. Her satır ve kolon benzersiz sıralama üretmeli. Çıktı olarak şöyle olmasını umarak(sadece umdum) kodladım:
2 hata gözlemledim.
İlk hata umduğum çıktı gelmiyor. Hatta örneğin 5'ten büyük bir değer girersem taşma yaşıyor 32 bin gibi sayılar veriyor.
İkinci hata aşağıdaki ilk 3 satır gibi bir çıktı vermek yerine
1 2 3
2 3 4
3 4 5 formatında çıktı veriyor.
Nasıl bir işlem ve mantık hatasına sahibim? Mantığını pek kavrayamamış gibiyim sanırım. Kodlar aşağıda.
Olması gereken(yıldızlı noktalar benzersizliği devam ettiren birer rakam aslında :)):
1 2 3 4 5 6 7 8
2 1 4 3 6 5 8 7
3 4 1 2 7 8 5 6
4 3 2 1 8 7 6 5
5 * * * * * * 4
6 * * * * * * 3
7 * * * * * * 2
8 7 8 5 4 3 2 1
Şöyle bir kodum var.
#include <stdio.h>
int main()
{
int boyut;
printf("Boyut: ");
scanf("%d", &boyut);
/*for(int i = 1; i <= boyut; i++)
{
for(int j = 1; j <= boyut; j++)
{
printf("%d", j);
}
printf("\n");
}*/
int a[boyut][boyut];
for(int i = 0;i<boyut;i++){
for(int j = 1;j<boyut;j++){
a[i][j]=i+j;
}
}
for(int i = 0;i<boyut;i++){
for(int j = 1;j<boyut;j++){
printf("%d ",a[i][j]);
}
printf("\n");
}
}
Düzenleme
Şöyle deniyorum hiç yazdıramıyorum bile:
int a[boyut][boyut];
for (int n = 0; n < boyut; n+=n) {
for (int i = 0; i < boyut; i++) {
for (size_t j = 0; j < boyut; j++) {
a[i+n][j] = a[i][j];
a[i][j+n] = a[i][j];
a[i+n][j+n] = !a[i][j];
}
}
}
for (int i = 0; i < boyut; i++) {
for (int j = 0; j < boyut; j++) {
if (/* condition */) {
/* code */
}
}
}
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]