C çıktı programı yazma

AuEnx

Hectopat
Katılım
25 Aralık 2018
Mesajlar
469
Çö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: 62
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.
 

Yeni konular

Geri
Yukarı