Merhaba vermiş olduğum kod 1-1000 arasında rastgele bir değer vermekte. Bunu 10 tane rastgele değer verecek şekilde ve 10 tane değerden en küçük olanı da ekrana yazdıracak şekilde nasıl yapabilirim?
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#define N 1000
#define M 10
int main() {
srand(time(NULL));
int arr[M] = { 0 };
int min = N;
for (int i = 0; i < M; ++i) {
arr[i] = rand() % N + 1;
if (arr[i] < min) {
min = arr[i];
}
printf("%d. value: %d\n", i + 1, arr[i]);
}
printf("min value: %d\n", min);
return 0;
}
Hocam saygılarımı sunarım. Kod için teşekkürler fakat bu diziler konusunu daha tam öğrenemedim. Kodu girdiğim vakit burada bir hata alıyorum if(rastgeleDizi < enKucuk).
Dizileri öğrenmediğiniz için bu yöntem yardımcı olacaktır. Temp adında bir geçici değişken tanımladım ve bunu oluşabilecek en yüksek değer olan 1000´e eşitledim ki 10 veya 100 gibi değerler yaparsak "500,501,502,503,504,505,506,507,508,509" diye sayılar çıkarsa en küçük değer 100 veya 10 olarak gözükmesin.
Dizilere çalışmalısınız. Anlamadığınız yerleri sorabilirsiniz.
Kod:
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#define N 1000
#define M 10
int main() {
srand(time(NULL));
int arr[M] = { 0 };
int min = N;
for (int i = 0; i < M; ++i) {
arr[i] = rand() % N + 1;
if (arr[i] < min) {
min = arr[i];
}
}
printf("min value: %d\n", min);
return 0;
}
Dizileri öğrenmediğiniz için bu yöntem yardımcı olacaktır. Temp adında bir geçici değişken tanımladım ve bunu oluşabilecek en yüksek değer olan 1000´e eşitledim ki 10 veya 100 gibi değerler yaparsak "500,501,502,503,504,505,506,507,508,509" diye sayılar çıkarsa en küçük değer 100 veya 10 olarak gözükmesin.
Fakat bunu en verimli şekilde dizilerle yapabilirsiniz. Çünkü bu 10 değere toplu olarak tekrar erişme şansınız olmayacak. En küçük değere "temp" üzerinden ve son oluşturulan sayıya da "rastgele" üzerinden erişebilirsiniz fakat diğer 8 değer yazdırıldıktan sonra yok olacak.
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#define N 1000
#define M 10
int main() {
srand(time(NULL));
int arr[M] = { 0 };
int min = N;
for (int i = 0; i < M; ++i) {
arr[i] = rand() % N + 1;
if (arr[i] < min) {
min = arr[i];
}
printf("%d. value: %d\n", i + 1, arr[i]);
}
printf("min value: %d\n", min);
return 0;
}
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#define N 1000
#define M 10
int main() {
srand(time(NULL));
int arr[M] = { 0 };
int min = N;
for (int i = 0; i < M; ++i) {
arr[i] = rand() % N + 1;
if (arr[i] < min) {
min = arr[i];
}
printf("%d. value: %d\n", i + 1, arr[i]);
}
printf("min value: %d\n", min);
return 0;
}
Fakat bunu en verimli şekilde dizilerle yapabilirsiniz. Çünkü bu 10 değere tekrar erişme şansınız olmayacak. En küçük değere "temp" üzerinden ve son oluşturulan sayıya da "rastgele" üzerinden erişebilirsiniz fakat diğer 8 değer yazdırıldıktan sonra yok olacak.
For döngüsünün içinde dizilerin ninci elemanını her seferinde bastırarak bunu çözebilirsiniz.
Diziler aynı tip değişkenler topluluğudur. 0 dan başlarlar. Yani 10 elemanlı bir dizinin indisleri(elemanlara ulaşmak için kullandığımız elemanlar) 0,1,2,3,4,5,6,7,8,9 dur. Örneğin diziler[3] diziler 4. elemanı geri döndürür. Bu şekilde aynı tip değişkenler için tekrar tekrar değişken yaratmak yerine dizi kullanabiliriz. Kıyaslarken sıkıntı yaşıyor olmanızın sebebi siz bütün dizi ile bir sayıyı kıyaslamışsınız o dizide. rastgeleDizi < enKucuk yaparsanız yapabilirsiniz. Aksi taktirde dizinin adı adresini belli eder ( ramde tutulduğu yeri) bu kıyaslama da bir tam sayı ile kıyaslarken anlamsız olacağı için hata verir.