Çözüldü 1-1000 Arasında 10 Tane Rastgele Değerden En küçük Olanı Programa Yazdıran Kod

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

Fıraan

Decapat
Katılım
14 Eylül 2018
Mesajlar
132
Çözümler
1
Yer
Ankara/Mamak
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?

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

int main()
{

int rastgele;
srand(time(NULL));
rastgele=1+rand()%1000;

printf("%d",rastgele);
return 0;
getch();

}
 
Son düzenleyen: Moderatör:
Çözüm
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("%d. value: %d\n", i + 1, arr[i]);
    }
    
    printf("min value: %d\n", min);

    return 0;
}

Ömerrrrrr

Centipat
Katılım
8 Nisan 2020
Mesajlar
879
Çözümler
3
rastgeleyi dizi yapabilirsiniz. şöyle
Kod:
int rastgeleDizi[10];
int enKucuk=9999;
for(int i = 0;i<10;i++)
{
    srand(time(NULL));
    rastgeleDizi[i] = 1+rand()+1000
    if(rastgeleDizi[i] < enKucuk)
    {
        enKucuk=rastgeleDizi[i];
    }
}
 
KS
Fıraan

Fıraan

Decapat
Katılım
14 Eylül 2018
Mesajlar
132
Çözümler
1
Yer
Ankara/Mamak
rastgeleyi dizi yapabilirsiniz. şöyle
Kod:
int rastgeleDizi[10];
int enKucuk=9999;
for(int i = 0;i<10;i++)
{
    srand(time(NULL));
    rastgeleDizi[i] = 1+rand()+1000
    if(rastgeleDizi[i] < enKucuk)
    {
        enKucuk=rastgeleDizi[i];
    }
}
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).
 

Musa B.

Hectopat
Katılım
1 Ekim 2017
Mesajlar
1.316
Makaleler
2
Çözümler
8
C:
#include <stdio.h>
#include <conio.h>
#include <time.h>
#include <stdlib.h>

int main()
{

int rastgele, temp = 1000;
srand(time(NULL));
    for(int i = 0; i < 10; i++)
    {
        rastgele=1+rand()%1000;
        if(rastgele < temp)
        {
            temp = rastgele;
        }
    }


printf("%d",temp);
return 0;
getch();

}
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.
 

Vavien.

Terapat
Katılım
20 Aralık 2014
Mesajlar
10.442
Makaleler
6
Çözümler
216
Yer
İstanbul
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;
}
 
KS
Fıraan

Fıraan

Decapat
Katılım
14 Eylül 2018
Mesajlar
132
Çözümler
1
Yer
Ankara/Mamak
C:
#include <stdio.h>
#include <conio.h>
#include <time.h>
#include <stdlib.h>

int main()
{

int rastgele, temp = 1000;
srand(time(NULL));
    for(int i = 0; i < 10; i++)
    {
        rastgele=1+rand()%1000;
        if(rastgele < temp)
        {
            temp = rastgele;
        }
    }


printf("%d",temp);
return 0;
getch();

}
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.
Cevap için teşekkür ederim. 10 adet değeri de ekrana yazdırmam gerekiyor. Kendi kodumda da becerememiştim.
 

Musa B.

Hectopat
Katılım
1 Ekim 2017
Mesajlar
1.316
Makaleler
2
Çözümler
8
Cevap için teşekkür ederim. 10 adet değeri de ekrana yazdırmam gerekiyor. Kendi kodumda da becerememiştim.
Dizileri kesin olarak kullanmayacaksanız şöyle yapacaksınız;

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

int main()
{

int rastgele, temp = 1000;
srand(time(NULL));
    for(int i = 0; i < 10; i++)
    {
        rastgele=1+rand()%1000;
        printf("%d ", rastgele)
        if(rastgele < temp)
        {
            temp = rastgele;
        }
    }


printf("En kucuk deger: %d",temp);
return 0;
getch();

}
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.
 

Vavien.

Terapat
Katılım
20 Aralık 2014
Mesajlar
10.442
Makaleler
6
Çözümler
216
Yer
İstanbul
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("%d. value: %d\n", i + 1, arr[i]);
    }
    
    printf("min value: %d\n", min);

    return 0;
}
 
Çözüm
KS
Fıraan

Fıraan

Decapat
Katılım
14 Eylül 2018
Mesajlar
132
Çözümler
1
Yer
Ankara/Mamak
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("%d. value: %d\n", i + 1, arr[i]);
    }
   
    printf("min value: %d\n", min);

    return 0;
}
Kapsamlı bir şekilde çalışacağım dizilere. Teşekkür ederim.
Dizileri kesin olarak kullanmayacaksanız şöyle yapacaksınız;

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

int main()
{

int rastgele, temp = 1000;
srand(time(NULL));
    for(int i = 0; i < 10; i++)
    {
        rastgele=1+rand()%1000;
        printf("%d ", rastgele)
        if(rastgele < temp)
        {
            temp = rastgele;
        }
    }


printf("En kucuk deger: %d",temp);
return 0;
getch();

}
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.
Yardımlarınız için teşekkür ederim. Diziler konusunda başarılı olamazsam kullanacağım.
 

Ömerrrrrr

Centipat
Katılım
8 Nisan 2020
Mesajlar
879
Çözümler
3
Cevap için teşekkür ederim. 10 adet değeri de ekrana yazdırmam gerekiyor. Kendi kodumda da becerememiştim.
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.
 
Yukarı