C dilinde her seferinde tekrarsız farklı sayı oluşturma

Farklı sayıdan kastın program her çalıştığında farklı sonuç vermesi mi yoksa sonuçlar içinde aynı sayı olmaması mı?
Program her çalıştığında 1´den 16´ya kadar olan sayılar farklı düzende olacak. En azından hocanın anlatımından bunu anladım. Sorunun ekran görüntüsü:
1606231224125.png
 
Program her çalıştığında 1´den 16´ya kadar olan sayılar farklı düzende olacak. En azından hocanın anlatımından bunu anladım. Sorunun ekran görüntüsü: Eki Görüntüle 749291
Bu rastgele olmuyor ama kullanıcıdan alınmanız istemiş sayıları. Bunun için diziler kullanman gerekiyor. Rastgele sayı oluşturman gerekmiyor.
 
Bu rastgele olmuyor ama kullanıcıdan alınmanız istemiş sayıları. Bunun için diziler kullanman gerekiyor. Rastgele sayı oluşturman gerekmiyor.
Hocam öncelikle teşekkürler tekrardan. Hocaya yazdığımda bana hiç net bir cevap vermedi ve en son "kullanıcıdan giriş alın, siz yazdırın farklı sayılar" dedi. Ben de şuan kullanıcıya "Sayılar rastgele sıralansın mı?" şeklinde sorup bir giriş alacağım ve eğer giriş "Y" ise 1´den 16´ya kadar olan sayıları rastgele sıralatmak istiyorum. Bunu dizileri kullanmadan yapma şansım var mı? 4 satır ve her satırda 4 sayı olacak şekilde?
 
Hocam öncelikle teşekkürler tekrardan. Hocaya yazdığımda bana hiç net bir cevap vermedi ve en son "kullanıcıdan giriş alın, siz yazdırın farklı sayılar" dedi. Ben de şu an kullanıcıya "Sayılar rastgele sıralansın mı?" Şeklinde sorup bir giriş alacağım ve eğer giriş "Y" ise 1´den 16´ya kadar olan sayıları rastgele sıralatmak istiyorum. Bunu dizileri kullanmadan yapma şansım var mı? 4 satır ve her satırda 4 sayı olacak şekilde?
O zaman bunu dene. Ama bence hocan bile ne anlattığını bilmiyor haberin olsun.

C:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void) {
  char isRandom;

  printf("Rastgele yazilsin mi? ");
  scanf("%c", &isRandom);

  if (isRandom == 'y' || isRandom == 'Y'){
    srand(time(NULL));
    for (int row = 0; row < 4; row++){
      for (int col = 0; col < 4; col++){    
        int random = rand() % 16;    
        if (random < 10){
          printf("  %d", random);
        } else if (random >= 10 && random <= 16){
          printf(" %d", random);
        }    
      }
      printf("\n");
    }
  } else if (isRandom == 'n' || isRandom == 'N'){
    for (int i = 1; i <= 16; i++){    
      if (i < 10){
        printf("  %d", i);
      } else if (i >= 10 && i <= 16){
        printf(" %d", i);
      }
      if (i % 4 == 0)
        printf("\n");
    }
  } else{
    printf("Geçersiz bir deger girildi.");
  }
   
  return 0;
}
 
Döngü ve sorgu kullanarak önceki oluşturulan dizinin elemanlarını yeni oluşturulan dizi ile karşılaştırabilirsin. Eğer sıralama tamamen farklıysa da yeni dizi ekrana yazdırılır.
 
Bu nedir?
printf("%3d", i); yeterliydi.
Evet, aşağıdaki alan yerine senin attığın kullanılabilir ama arkadaş için bunu sorgular kullanarak yapması onun için daha yararlı olacaktır.

C:
if (i < 10){
    printf(" %d", i);
} else if (i >= 10 && i <= 16){
    printf(" %d", i);
}
 

Yeni konular

Geri
Yukarı