C iç içe for döngüsünü anlamak için öneriler

Bu gördüğün standart bir bubble sort algoritmasıdır. Kod verilen kelimeler içinde geziyor. Mesela "merhaba"yı düşün. Döngüye girdiğinde m geliyor ardından iç döngüde de m geliyor. Sonra iç döngü artmaya başlıyor ve e harfine geçiyor. M harfi E'den büyük olduğu için bir işlem yapılmıyor. Yani bu bir büyükten küçüğe sıralama. Daha sonra iç döngü r harfine geçiyor ve tüm kelimeyi bitirdikten sonra dış döngü e harfine geçiyor ve tüm harfleri e harfi ile kıyaslıyor.

Bunu anlamanın tek yolu eline kağıt ve kalem alıp yazarak çalışman. Üşenirsen hiçbir şey öğrenemezsin.

1'Den başlayıp 20'ye kadar say. Artık iç içe döngüleri yapabilirsin.

C:
#include <stdio.h>

int main()
{
int i = 1;
int k = 0;

for(i; i<20;) // i, 1 olarak döngüye başlar.
{
for(k; k<10; k++) // i 1'ken 2.döngüye girer. k bu sırada 0'dır.

// i + k, i + k, i + k, i + k.
printf("%d-", i+k); // 1 + 0, 1 + 1, 1 + 2, 1 + 3 şeklinde k 10'a gelinceye kadar devam eder.

k = 0; // k, 10 olduktan sonra 0'a eşitlenir.
i += 10; // i, 2.döngüden sonra 10 arttırılır. 1.döngüde i, 10 olarak başlar ve 20 olana kadar tekrar eder.
}
printf("\n");

return 0;
}

1.döngü, i = 1 olarak başla.
2.döngü, 0'dan 9'a kadar say, sayarken bu sayıları i ile topla ve ekrana yazdır.(İ+0, i+1, i+2, i+3)
1.döngü, değerini 10 arttır.
2.döngü, 0'dan 9'a kadar say, sayarken bu sayıları i ile topla ve ekrana yazdır.

Teşekkürler tavsiyelerinizi dinleyeceğim.

Anlayamadımdan kasıt mantığını mı? Yoksa nasıl yapıldığını mı?

Mantık dersen iki boyutlu dizileri için, örneğin okulda bulunan sınıfları sıralamak istiyorsun (sınıflar 1-12 arası, şubeler a-D arası gidiyor olsun).
1. for ile sayıları, 2. for ile harfleri döndüreceksin.
Yani 1. for 1 diyecek ve buradan itibaren 2. for ile 1a, 1b, 1C, 1D yazacak, sonra 1. for 2 diyecek, 2 for 2a, 2b, 2C, 2D diyecek.

C:
#include<stdio.h>

main()
{
int i,j,k;

char sinif;

for(i=1;i<=12;i++)
{
printf("%3d",i);
for(sinif=97;sinif<=100;sinif++)
{
printf("%c",sinif);
break;
}

}

}

Hocam yazdırmak istediğimi kavradım, fakat burada beceremedim 1'den 12'ye kadar 1A 12A diye gidiyor ondan sonra kesiliyor. Nasıl düzeltebilirim? Basit iki hatam var ama ne olduğu çözemedim.
 
Son düzenleyen: Moderatör:
Hocam yazdırmak istediğimi kavradım, fakat burada beceremedim 1'den 12'ye kadar 1A 12A diye gidiyor ondan sonra kesiliyor. Nasıl düzeltebilirim? Basit iki hatam var ama ne olduğu çözemedim.
Çünkü for döngüsü içinde "break;" ifadesi var.
 

Yeni konular

Geri
Yukarı