C çıktı programı yazma

AuEnx

Kilopat
Katılım
25 Aralık 2018
Mesajlar
498
Çözümler
1
Daha fazla  
Cinsiyet
Erkek
Merhaba, günaydın arkadaşlar. Ufak takıldığım bir yer var, aşağıdaki resimdeki çıktının programın yazdırabilirim? Bakmadığım site kalmadı baktıklarımın hepsi C# dilinde yazmış ama ben C# değil C dilinde yazmak istiyorum. Her yardımınızı bekliyorum teşekkürler.
 

Dosya Ekleri

  • Ekran Alıntısı.JPG
    Ekran Alıntısı.JPG
    33,3 KB · Görüntüleme: 90
Pointer & Adres değişkenleri olarak araştırdığınızda erişebilmelisiniz.
* ile tanımlanıyordu pointer değişkenleri sanırım. & ile de adres erişimi vs yapılıyordu yanlış hatırlamıyorsam.
 
Pointer & Adres değişkenleri olarak araştırdığınızda erişebilmelisiniz.
* ile tanımlanıyordu pointer değişkenleri sanırım. & ile de adres erişimi vs yapılıyordu yanlış hatırlamıyorsam.
Bu şekilde de arattım fakat düzgün bir şey bulamadım.
 
Değerler rastgele gelecek dememişsin, o yüzden oradaki gibi değer verdim.
Adres almak için referans operatörü (&) kullanılır. Burada pointer ile iş yok aslında. Adres alınırken %p kullanılır genelde. 1-2 gösterim daha var ama onlar ondalığa falan çeviriyor, tercih edilen bu.
%x aynı işi yapıyor sadece başındaki sıfırları almıyor. %X ise büyük yazdırıyor harf olanları. %u ise onluk tabanda yazdırıyor.
C:
#include <stdio.h>

int main(){
    int dizi[5] = {2, 3, 4, 5, 9};
   
    for (int i = 0; i< sizeof(dizi)/sizeof(int); ++i){
        printf("Dizi[%d]-->Degeri: %d Adresi: %p\n", i, dizi[i], &dizi[i]);
    }
   
    return 0;
}
 
Son düzenleme:
Değerler rastgele gelecek dememişsin, o yüzden oradaki gibi değer verdim.
Adres almak için referans operatörü (&) kullanılır. Burada pointer ile iş yok aslında. Adres alınırken %p kullanılır genelde. 1-2 gösterim daha var ama onlar ondalığa falan çeviriyor, tercih edilen bu.
%x aynı işi yapıyor sadece başındaki sıfırları almıyor. %X ise büyük yazdırıyor harf olanları. %u ise onluk tabanda yazdırıyor.
C:
#include <stdio.h>

int main(){
    int dizi[5] = {2, 3, 4, 5, 9};
 
    for (int i = 0; i< sizeof(dizi)/sizeof(int); ++i){
        printf("Dizi[%d]-->Degeri: %d Adresi: %p\n", i, dizi[i], &dizi[i]);
    }
 
    return 0;
}

Göstergeli şekilde benim göstermem lazım hocam, yani en azından benim dersini aldığım hoca bu şekilde istiyor zaten belirtmiş. Gösterge de İnt'de " * " şeklinde gösteriliyor diye az çok biliyorum. Benim galiba anladığım kadarıyla bunları printf'de de gösterge " * " şeklinde göstermem falan mı gerekiyor hocamın gösterge kullanın demesinden dolayı ?
Bu yaptığınız çıktıda gösterge'yi tam olarak nerede kullanacağız hocam
 
Merhaba, günaydın arkadaşlar. Ufak takıldığım bir yer var, aşağıdaki resimdeki çıktının programın yazdırabilirim? Bakmadığım site kalmadı baktıklarımın hepsi C# dilinde yazmış ama ben C# değil C dilinde yazmak istiyorum. Her yardımınızı bekliyorum teşekkürler.

C:
#include <stdio.h>

int main() {
    int a[] = {2, 3, 4, 5, 9}, b;
    for(b=0; b<5; b++) {
        int *p = &a[b];
        printf("Dizi[%i] --> Değeri: %i Adresi: %p\n", b, a[b], p);
    }
    return 0;
}

Kod:
Dizi[0] --> Değeri: 2 Adresi: 0x7ffed6728420
Dizi[1] --> Değeri: 3 Adresi: 0x7ffed6728424
Dizi[2] --> Değeri: 4 Adresi: 0x7ffed6728428
Dizi[3] --> Değeri: 5 Adresi: 0x7ffed672842c
Dizi[4] --> Değeri: 9 Adresi: 0x7ffed6728430
 
Dereferans operatörü (*) değerini gösterir. Adresini değil.
Göstergeden kastınız nedir? Yazdığım programı çalıştırdınız mı?

Evet programı çalıştırdım ve teşekkür ederim. Çok özür dilerim, gösterge " * " olarak aklımda kalmış ve " %p " ile karıştırmışım. Gösterge aslında %p ile gösteriliyormuş. Peki bir şey sormak istiyorum, merakımdan. Bu konuları yeni yeni öğreniyorum ve programcı öğrencisiyim. for döngüsü kısmındaki size for ne işe yaramaktadır hocam ? yani onun orada olması veya olmaması bir şeyi değiştirir mi ?
C:
#include <stdio.h>

int main() {
    int a[] = {2, 3, 4, 5, 9}, b;
    for(b=0; b<5; b++) {
        int *p = &a[b];
        printf("Dizi[%i] --> Değeri: %i Adresi: %p\n", b, a[b], p);
    }
    return 0;
}

Kod:
Dizi[0] --> Değeri: 2 Adresi: 0x7ffed6728420
Dizi[1] --> Değeri: 3 Adresi: 0x7ffed6728424
Dizi[2] --> Değeri: 4 Adresi: 0x7ffed6728428
Dizi[3] --> Değeri: 5 Adresi: 0x7ffed672842c
Dizi[4] --> Değeri: 9 Adresi: 0x7ffed6728430

Size de teşekkür ederim hocam, bundan bir süre önce de bu konuda yardımınız olmuştu. Teşekkür ederim yeniden.
 
Dizinin boyutunu öyle aldım. İstersen 5 elemanlı olduğunu bildiğin için direkt oraya 5 yazabilirsin. Ama dizinin içinde tam olarak ne olduğunu bilmiyorsan, dizinin integer ya da başka bir tür olduğunu biliyorsan bu şekilde boyutunu tanımlı oluğu blokta öğrenebilirsin.
Sen oraya elinle i < 5 yazarsan ileride o diziyi değiştirdiğinde o 5'i değiştirmen gerekecek ama benim yazdığım kodda gerekmeyecek. Kodun bakım maliyetini azaltmayı da sağlıyor.
 
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ı