Rastgele dizilmiş bir sütündaki sayiların en büyüğünü C dilinde nasıl yazabiliriz?

  • Konuyu başlatan Clix
  • Başlangıç Tarihi
  • Mesaj 7
  • Görüntüleme 3.557
Max komutu nerede? Ben göremedim.
C:
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    int a[10],max,min,i;
    for(i=0;i<5;i++){  //kullanıcıdan sayıları alıyoruz
        printf("%d. sayiyi girin: ",i+1); //%d. anlamı i=0 iken 1 yapıp 1. sayiyi giriniz der
        scanf("%d",&a[i]);
    }
    max=min=a[0]; //min ve max bir değere atadık ki karşılaştırma yapabilelim
    for(i=0;i<5;i++){
        if(a[i]<min)//a[0]dan kucuk bir değer varsa onu min yapar
            min=a[i];
        if(a[i]>max)//a[0]dan buyuk bir değer varsa onu max yapar
            max=a[i];
    }
    printf("en kucuk sayi: %d\n",min);
    printf("en buyuk sayi: %d\n",max);
 
    return 0;
}
printf satırlarında.
 
Max komutu diye bir şey yok. Adam kendisi integer değişken tanımlamış.
Sütundan kastın array dediğimiz dizi mi?

@HABAR muhtemelen başka bir programlama dili biliyorsun. Ya da onu bile bilmiyorsun. Sağdan soldan kod çalmanın bir anlamı yok. Söylediklerin bir şey ifade etmiyor.
 
Max komutu diye bir şey yok. Adam kendisi integer değişken tanımlamış.
Sütundan kastın array dediğimiz dizi mi?

@HABAR muhtemelen başka bir programlama dili biliyorsun. Ya da onu bile bilmiyorsun. Sağdan soldan kod çalmanın bir anlamı yok. Söylediklerin bir şey ifade etmiyor.
Hmm. Peki hocam, haklısınız. Ama üstteki linkte kaynak belittim.
 
Ek Açıklama 2020-04-07 185324.png

Kendiniz yazın ki eliniz alışsın. Basit bir şekilde yazmaya çalıştım.
@HABAR max ve min orada değişken ismi.
 
Dizide ise:
C:
#include <stdio.h>

int main(){
    int n,a=0;
    scanf("%d",&n);
    int b[n];    //elimizde n uzunluğunda b adlı bir dizi var
                //içeriğini doldurursun bir şekilde
    for (int i=0;i<n;++i){
        if (b[i]>a){
            a=b[i];
        }
    }
    //dizinin tüm elemanlarını gezip gördüğü büyük değeri a değişkenine atıyor
    //sonrasında printf kullanın, başka yerde kullanın; size kalmış
    return 0;
}
Hmm. Peki hocam, haklısınız. Ama üstteki linkte kaynak belittim.
Ben de herhangi bir konuya girip onu Google'da aratıp çıkan ilk siteyi kaynak olarak belirterek bir şeyler geveleyebilirim. Peki sizce bunu yapmam ne kadar mantıklı?
Ben C dilinde alıştırma yapıyorum ama mesela bir 10'a 10'luk bir dizi de satırları toplayıp ekrana yazdıracagım ama kodumda 1. satırı topluyor sonra 2. satırı 1 ile birlikte toplayıp 2'ye yazıyor sonra 3. satır 1 2 ve 3 satırları toplayıp 3'e yazıyor böyle 5. Satıra kadar devam ediyor sizce ne yapmam lazım :(
Sanırım bunu kastettiğiniz. Her satırda 10 sayı olacaksa diziyi 10*11 şeklinde tanımlayın. Son basamağa da toplamı yazarsınız. Hatta sütun da hesaplamak için 11*11 yapmak daha iyi olur. Üstüne en büyük değeri de ekleyince 12*12 oldu.
İlk 10 satır/sütun rastgele değerleri, 11. toplamı, 12. ise en büyük değeri tutuyor.
İlk for rastgele değer atıyor. Bunun için stdlib.h kütüphanesindeki rand fonksiyonu kullanılıyor. Rastgele büyük değer elde ediyor. Bu değeri istediğimiz aralığa getirmek için mod 100 aldım. 0-99 arasında değer döndürüyor. Sonuna +1 ekleyerek 1-100 arasında değer yapabilirsiniz. Rand fonksiyonu normalde rastgele döndürmez. Bunun için time.h kütüphanesini de kullanarak srand fonksiyonuna time(0) parametresini veriyoruz. Bu şekilde sistem saatini baz alıyor. Zamanı geri alamayacağınız için sürekli rastgele değer oluşturuyor. Aynı rastgele değerleri aynı zamanda çalıştırarak elde edebilirsiniz.
İkinci ve üçüncü for aslında aynı. Ufak farklar ile satır/sütun meselesi dönüyor. 10*10'luk tablomuzda önce satır, sonra sütun toplamı yapılıyor. i değeri satırı tutarken j değeri sütunu tutuyor.
Dördüncü ve beşinci for ise maksimum değeri hesaplıyor. Zaten elimde toplam diye bir değişken olduğu için max değişkeni kullanmaya gerek duymadım. Diğer döngülerden pek farkı yok.
Sonuncu ise yazdırıyor.
Başta dizide sağ alttaki 4 kısım boş kalacağı için sıfır değerini verdim. Çöp değer gelirdi.

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

int main(){
    srand(time(0));
    int a[12][12];
    a[10][10]=0;
    a[10][11]=0;
    a[11][10]=0;
    a[11][11]=0;
    int toplam=0;
    
    for (int i=0;i<10;++i){
        for (int j=0;j<10;++j){
            a[i][j]=rand()%100;
        }
    }
    
    for (int i=0;i<10;++i){
        for (int j=0;j<10;++j){
            toplam+=a[i][j];
        }
        a[i][10]=toplam;
        toplam=0;
    }   
    
    for (int i=0;i<10;++i){
        for (int j=0;j<10;++j){
            toplam+=a[j][i];
        }
        a[10][i]=toplam;
        toplam=0;
    }
    
    for (int i=0;i<10;++i){
        for (int j=0;j<10;++j){
            if (a[i][j]>toplam){
                toplam=a[i][j];
            }
        }
        a[i][11]=toplam;
        toplam=0;
    }
    
    for (int i=0;i<10;++i){
        for (int j=0;j<10;++j){
            if (a[j][i]>toplam){
                toplam=a[j][i];
            }
        }
        a[11][i]=toplam;
        toplam=0;
    }   
    
    for (int i=0;i<12;++i){
        for (int j=0;j<12;++j){
            printf("%3d ",a[i][j]);
        }
        printf("\n");
    }   
}
 
Son düzenleme:
Uyarı! Bu konu 6 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Technopat Haberler

Yeni konular

Geri
Yukarı