search
Giriş
Merhabalar arkadaşlar, Sitemizi programlama ile ilgilenen bütün arkadaşlarımızın Türkçe içerik konusunda çektiği sıkıntılar düşünülerek soru/cevap şeklinde bir etkileşimde bulunabilmesi için kurduk. Umuyoruz hepimiz için güzel bir deneyim olur. Hasscript Ekibi
0 oy
562 gösterim
Sayılar dizisi şağıdaki gibi olsun.

sayİlar(25,22,17,19,47,3,98,5,124,10)

-Kullanıcıdan 1 ile 10 arasında bir sayı girilsin.

-Kullanıcı N degerini girmiş ise, programımız dizideki en kucuk N.sayiyi ekrana yazdırsın. Örneğin; kullanıcı 2 sayisini girdiğinde, programımız dizideki en kucuk ikinci sayı olan 5 sayısını ekrana yazdirsin. Kullanıcı 10 degerini girmis ise dizideki en buyuk sayı olan 124 değeri ekrana basılsın.

PROGRAMI SIRALAMA ALGORİTMALARINDAN HERHANGİ BİRİNİ KULLANMADAN YAZINIZ.

(Bu programı cozememe nedenim bu oldugu icin büyük harflerle yazdim.Yoksa kabarcık algoritmasıyla kolayca çözülebiliyor.)
C/C++ kategorisinde 102 puan

1 cevap

0 oy
Probleminin çözümünü direk kod olarak yazmayacağım ama bir yöntem söyleyebilirim :)

- İki tane fonksiyon yazıyorsun. Birincisi dizideki en küçük sayıyı bulacak.
- İkincisi de bu sayıyı parametre olarak alıp dizideki bu sayıdan büyük en küçük sayıyı bulacak. İkinci parametresi de bu işlemi kaç kez yapacağı. Bu fonksiyon özyinelemeli (recursive) olarak ikinci parametre miktarınca çağrılacak. O zaman bulmuş oluyorsun.

Yazmaya çalış. Sorun yaşarsan buradan yorumlar üzerinden konuşuruz.
6.2k puan

Teşekkürler, kafamda bir şeyler oluştu. 

Lakin ikinci fonksiyonda birinci fonksiyondan almış olduğumuz parametrenin yani kucuk sayinin burada " dizideki bu sayıdan büyük en küçük sayıyı bulacak"  koşul ifadesini nasıl tasarlayamadım.

Şöyle;

En başında dizinin hangi elemanının en küçük eleman olduğunu bulmak zorundasın ki o elemandan başlayarak işlemine devam edebilesin.

Mesela örnek verdiğin dizide önce 3 sayısını bulacaksın. Sonra ikinci fonksiyonuna 3 den büyük olan en küçük sayıyı bulması için bir kod yazacaksın. O zaman sana 5 dönmeli sonra da 5 den büyük olup geriye kalanların en küçüğünü bulmalısın. İstediğin sayıda adımı gerçekleştirene kadar yazabilirsin. Recursive de yazabilirsin, iterative de fark etmez. Bence ödev için recursive yazman daha güzel olabilir.
Hocam çok teşekkürler tekrardan.

Açıkçası sizin söylediğiniz yoldan gitmeye çalıştım ama fonksiyonlarda çok eksiğim var malesef. Bu nedenle fonksiyon yazmadan yazdım;

#include <stdio.h>

int main(int argc,const char argv[]){

    int sayilar[10]={25,22,17,19,47,3,98,5,124,10};

    int sayi,tkucuk,kucuk,kontrol=0;

    printf("1 ila 10 arasinda bir sayi giriniz:\n");

    scanf("%d",&sayi);

    for(int i=0;i<sayi;i++){

        if(kontrol==0){

            tkucuk=9999;

            kontrol=1;

            for(int j=0;j<10;j++){

                if(sayilar[j]<tkucuk)

                {

                    tkucuk=sayilar[j];

                }

            }

        }

        kucuk=tkucuk;

        tkucuk=9999;

        for(int k=0;k<10;k++){

            if(sayilar[k]>kucuk){

                if(sayilar[k]<tkucuk){

                    tkucuk=sayilar[k];

                }

            }

        }

    }

    printf("%d",kucuk);

    return 0;

}
Vay be! 2 yıl önce yazdığım üniversite 2 sınıftayken yazdığım koda bak Allah'ım deliricem hahahhahah :D. O zaman şunu bir update edelim.  

#include <stdio.h>

const char dizi[10]={25,22,17,19,47,3,98,5,124,10};

int EnKucukBul(const char[]);

int EnKucukNEleman(const char[],int);

 

int main(){

    int dongu;

    printf("\nDizinin kacinci kucuk elemanini bulmak istiyorsunuz\n");

    scanf("%d",&dongu);

    printf("\nDizinin en kucuk n'inci elemani = %d",EnKucukNEleman(dizi,dongu));

    return 0;

}

int EnKucukBul(const char dizi[]){

    int enKucuk=dizi[0];

    for(int i=1;i<10;i++){

        if(enKucuk>dizi[i]){

            enKucuk=dizi[i];

        }

    }

    return enKucuk;

}

int EnKucukNEleman(const char dizi[],int n){

    int enKucuk=EnKucukBul(dizi);

    int temp=999;

    for(int i=1;i<n;i++){

        for(int j=0;j<10;j++){

            if(dizi[j]<temp && enKucuk<dizi[j]){

                temp=dizi[j];

            }

        }

        enKucuk=temp;

        temp=999;

    }

    return enKucuk;

}
Kendindeki gelişimi görmene sevindim :)

İlgili sorular

0 oy
1 cevap 290 gösterim
290 gösterim
Yapmak istediğim x^(n-1)/(n-1)! şeklinde girilen sayıya göre dizi oluşturmak, örneğin: N=5,x=4 ise 4^0/0!+4^1/1!+4^2/2!+4^3/3! şeklinde olacak. #include<stdio.h> int belirle(int,int); int fak(int); int main() { ... doğru buluyor. Ancak 4 e gelince cevabı yanlış buluyor. 2-Bu fonksiyonlarda float ekleme nasıl yapılıyor? 3- Fonksiyonu voidle oluştururken voidin özelliği ne? Şimdiden teşekkürler.
20 Mart 2017 C/C++ kategorisinde Joseph 102 puan sordu
0 oy
1 cevap 556 gösterim
556 gösterim
#include<stdio.h> #include<conio.h> int main() { char *sehir="osmaniye"; int i=0; while(sehir[i]!='\0') {printf("%c-%p\n",*(sehir+i),(sehir+i)); i++;} getch(); } Arkadaşlar neden *sehir[] şeklinde tanımlamadık sonuçta osmaniye bir dizi ? anlatabilecek var mı?
21 Ocak 2016 C/C++ kategorisinde hasscript 139 puan sordu
0 oy
1 cevap 523 gösterim
523 gösterim
Spring boot ve spring security kullandığım bir projeye bazı testleri yapabilmek için database olarak H2 ekledim. Ama konfigürasyon sayfası boş geliyor. Test connection başarılı dönüyor ama connect deyince boş bir sayfaya gidiyor.
16 Eylül 2019 Java kategorisinde sinan 291 puan sordu
0 oy
0 cevap 147 gösterim
147 gösterim
Merhaba arkadaşlar, Visual Studio yu kullanarak SQL server a bağlanmak istiyorum. Ancak connection Manager kısmında connection sekmesinde server name bilgisini getiremiyorum. Böyle olunca Database i de seçemiyorum. Destek olur musunuz ?)
20 Aralık 2017 Veri Tabanı kategorisinde Burak A. 103 puan sordu
0 oy
1 cevap 161 gösterim
161 gösterim
Selamlar ; Bugün mvn projesi olan projeyi ayağa kaldırmama rağmen Command Prompt ekranında mvn komutlarını çalıştıramadıgımı gördüm.Projede de web deployment assembly de maven dependiceleri tanımlıdır .Fakat uygulamanın bulundugu lokasyona gidip dos ekranında mvn komutlarını çalıştıramamaktayım.Yardımcı olursanız sevinirim .
3 Ocak 2017 Java kategorisinde rusty 104 puan sordu