faktöriyel hesaplayan c programı / C/C++ Faktöriyel Hesaplama - Yusuf SEZER

Faktöriyel Hesaplayan C Programı

faktöriyel hesaplayan c programı

Benzer belgeler

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR PROGRAMLAMAYA GİRİŞ FONKSİYONLAR Fonksiyonlar C programlama dili fonksiyon olarak adlandırılan alt programların birleştirilmesi kavramına dayanır. Bir C programı bir ya da daha çok fonksiyonun bir araya

Detaylı

ELN BİLGİSAYAR PROGRAMLAMA I

ELN BİLGİSAYAR PROGRAMLAMA I ELN BİLGİSAYAR PROGRAMLAMA I DEPOLAMA SINIFLARI DEĞİŞKEN MENZİLLERİ YİNELEMELİ FONKSİYONLAR Depolama Sınıfları Tanıtıcılar için şu ana kadar görülmüş olan özellikler: Ad Tip Boyut Değer Bunlara ilave

Detaylı

ALGORİTMA VE PROGRAMLAMA I

ALGORİTMA VE PROGRAMLAMA I ALGORİTMA VE PROGRAMLAMA I YZM Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 Giriş Fonksiyonlara Genel Bakış C ve Fonksiyonlar Fonksiyon Tanımı 8. BÖLÜM 3 Fonksiyonlar

Detaylı

ALGORİTMA VE PROGRAMLAMA I

ALGORİTMA VE PROGRAMLAMA I ALGORİTMA VE PROGRAMLAMA I Yrd. Doç. Dr. Deniz KILINÇ [email protected] YZM Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 Giriş Fonksiyonlara Genel Bakış C

Detaylı

C Programlama Dilininin Basit Yapıları

C Programlama Dilininin Basit Yapıları Bölüm 2 C Programlama Dilininin Basit Yapıları İçindekiler Sabitler ve Değişkenler 13 Açıklamalar (Expresions) 14 İfadeler (Statements) ve İfade

Detaylı

Sunum İçeriği. Programlamaya Giriş

Sunum İçeriği. Programlamaya Giriş Programlamaya Giriş Nesne Tabanlı Programlamaya Giriş ve FONKSİYONLAR Sunum İçeriği Nesne Tabanlı Programlama Kavramı Fonksiyon tanımlama ve kullanma Formal Parametre nedir? Gerçel Parametre nedir? Fonksiyon

Detaylı

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Uzaktan Eğitim Uygulama ve Araştırma Merkezi JAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY İÇERİK 2 Java da Fonksiyon Tanımlamak Java da Döngüler Java da Şart İfadeleri Uygulamalar Java da Fonksiyon Tanımlamak JAVA DA FONKSİYON TANIMLAMAK 4 Fonksiyonlar;

Detaylı

C#(Sharp) Programlama Dili

C#(Sharp) Programlama Dili Değişkenler C#(Sharp) Programlama Dili Program yazarken her zaman sabit verilerle çalışmayız, çoğu zaman programımızda bir verinin kullanıcının davranışına göre değişmesi gerekir. Kullanıcıdan bir metin

Detaylı

Özyineleme (Recursion)

Özyineleme (Recursion) C PROGRAMLAMA Özyineleme (Recursion) Bir fonksiyonun kendisini çağırarak çözüme gitmesine özyineleme (recursion), böyle çalışan fonksiyonlara da özyinelemeli (recursive) fonksiyonlar denilir. Özyineleme,

Detaylı

WebInstaller. 1. Kurulum Đçin Gereksinimler

WebInstaller. 1. Kurulum Đçin Gereksinimler WebInstaller Ürün Grubu [X] Fusion@6 [X] Fusion@6 Standard Kategori [X] Yeni Fonksiyon Versiyon Önkoşulu @6 Uygulama monash.pw uygulamasının kurulumu Netsis\monash.pw\Kurulum dizininde bulunan monash.pw

Detaylı

Sınav tarihi : Süre : 60 dak.

Sınav tarihi : Süre : 60 dak. Selçuk Üniversitesi, Mühendislik Fakültesi, Harita Mühendisliği Bölümü Final Sınavı Test Soruları Adı soyadı : Öğrenci no : Sınav tarihi : Süre : 60 dak. 1. Ekranda ne görüntülenir? int i =

Detaylı

Ders 8: Metotlar. monash.pw

Ders 8: Metotlar. monash.pw Ders 8: Metotlar Hazırlayan : Öğr. Grv.. Barış GÖKÇE Đletişim im : monash.pwokce monash.pw Metotlar C# içerisinde bir veya birden fazla kod bulunduran kod bloklarıdır. Bir nesnenin veya sınıfın programı

Detaylı

C PROGRAMLAMA DİLİNE GİRİŞ

C PROGRAMLAMA DİLİNE GİRİŞ C PROGRAMLAMA DİLİNE GİRİŞ C Dilinin Tarihçesi de Dennis Ritchie tarafından AT&T Bell Laboratuarlarında B dilinden geliştirildi. C dili konusundaki ilk kitap de Dennis Ritchie ve Brain Kernighan

Detaylı

Internet Programming II

Internet Programming II Internet Programming II Elbistan Meslek Yüksek Okulu Bahar Yarıyılı Öğr. Gör. Murat KEÇECĠOĞLU 1 PHP Program Yapısı Php çoğunlukla HTML etiketleri arasına gömülerek kullanılır. Form işlemleri

Detaylı

Programlama Dili Prensipleri. Lab Notları 4

Programlama Dili Prensipleri. Lab Notları 4 Programlama Dili Prensipleri Lab Notları 4 1. Karar Yapıları IF Yapıları Karar yapıları olarak C/C++ ile Java programlama dilleri birbirine yakın ifadeler içerir. Bir programın akışı yukarıdan aşağı doğru

Detaylı

Yrd. Doç. Dr. Caner ÖZCAN

Yrd. Doç. Dr. Caner ÖZCAN Yrd. Doç. Dr. Caner ÖZCAN Fonksiyonu Referans ile Çağırma (Call by Reference) Bir fonksiyona gönderilen parametrenin normalde değeri değişmez. Fonksiyon içinde yapılan işlemlerin hiçbiri argüman değişkeni

Detaylı

PROGRAMLAMAYA GİRİŞ DERS 2

PROGRAMLAMAYA GİRİŞ DERS 2 PROGRAMLAMAYA GİRİŞ DERS 2 Program editörde oluşturulur ve diske kaydedilir Tipik Bir C Programı Geliştirme Ortamının Temelleri 1. Edit 2. Preprocess 3. Compile 4. Link 5. Load 6. Execute Önişlemci programı

Detaylı

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Uzaktan Eğitim Uygulama ve Araştırma Merkezi JAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY İÇERİK 2 Java da Kapsülleme (Erişim Denetleyiciler) Java da Sınıf Oluşturmak Java da Nesne Oluşturmak Java da Constructor Kavramı Java da This Kavramı Java da Constructor

Detaylı

Fonksiyonlar (Altprogram)

Fonksiyonlar (Altprogram) Fonksiyonlar (Altprogram) C Programlama Dili fonksiyon olarak adlandırılan alt programların birleştirilmesi kavramına dayanır. Bir C programı bir ya da daha çok fonksiyonun bir araya gelmesi ile oluşur.

Detaylı

8. İŞARETCİLER (POINTERS)

8. İŞARETCİLER (POINTERS) 8. İŞARETCİLER (POINTERS) Verilerin bilgisayar hafızasında tutulduğu fiziki alan adres olarak tanımlanabilir. Adres, hem donanımla hem de yazılımla ilişkilidir. Donanımsal açıdan adres bellekte yer gösteren

Detaylı

Bigisayar Programlama

Bigisayar Programlama Bigisayar Programlama (GÜZ ) DERS C de Programlamaya Giriş Yrd. Doç Dr. Yakup EMÜL Cumhuriyet Üniv., Teknoloji Fakültesi Yazılım Mühendisliği Bölümü [email protected] Ofis Saatleri :

Detaylı

BİLGİSAYAR TEMELLERİ VE PROGRAMLAMAYA GİRİŞ

BİLGİSAYAR TEMELLERİ VE PROGRAMLAMAYA GİRİŞ BİLGİSAYAR TEMELLERİ VE PROGRAMLAMAYA GİRİŞ monash.pwç.Dr. Emel ARSLAN [email protected] C DİLİNDE FONKSİYONLAR C DİLİNDE FONKSİYONLAR C programlama dili fonksiyon olarak adlandırılan alt programların

Detaylı

Yrd. Doç. Dr. Caner ÖZCAN

Yrd. Doç. Dr. Caner ÖZCAN Yrd. Doç. Dr. Caner ÖZCAN Diziler ile Pointer Arası İlişki Bir dizi adı sabit bir pointer gibi düşünülebilir. Diziler ile pointer lar yakından ilişkilidir. Pointer lar değişkenleri gösterdikleri gibi,

Detaylı

Diziler (Arrays) Çok Boyutlu Diziler

Diziler (Arrays) Çok Boyutlu Diziler Diziler (Arrays) Çok Boyutlu Diziler ÇOK BOYUTLU DİZİLER Birden fazla indis numarası ile elemanlarına ulaşılan dizilere çok boyutlu diziler denir. Bunlardan en sık kullanılanı çift boyutlu dizilerdir.

Detaylı

Dr. Fatih AY Tel:

Dr. Fatih AY Tel: Bilgisayar Programlama Ders 5 Dr. Fatih AY Tel: 0 22 55 [email protected] monash.pw Fonksiyonlar Fonksiyonlar Büyük programlar geliştirmenin en iyi yolu, onu orijinal programdan daha kolay

Detaylı

NESNEYE YÖNELİK PROGRAMLAMA

NESNEYE YÖNELİK PROGRAMLAMA NESNEYE YÖNELİK PROGRAMLAMA Metotlar Şu ana kadar yaptığımız örneklerde hep önceden hazırlanmış ReadLine(), WriteLine() vb. gibi metotları kullandık. Artık kendi metotlarımızı yapmanın zamanı geldi. Bilmem

Detaylı

BTEP Ders 3. class Yazım Kuralı:

BTEP Ders 3. class Yazım Kuralı: BTEP Ders 3 Sınıflar ve Nesneler Nesne tabanlı programlamada, programlamanın temeli sınıflardır (class). Nesnelerin yaratılmasında taslak (blueprint) görevi görür. Sınıflar; o Nesnelerin özelliklerinin

Detaylı

Pointer Kavramı. Veri Yapıları

Pointer Kavramı. Veri Yapıları Pointer Kavramı Veri Yapıları Pointer Kavramı- Pointer Nedir? Göstericiler, işaretçiler ya da pointer adı da verilmektedir. Gösterici (pointer); içerisinde bellek adresi tutan değişkenlerdir. Şu ana kadar

Detaylı

BİLG Dr. Mustafa T. Babagil 1

BİLG Dr. Mustafa T. Babagil 1 BİLG Dr. Mustafa T. Babagil 1 Yapısal bilgi türlerinin tanımlanması. (C++ daki struct yapısı. ) Daha önce öğrenmiş olduğumuz bilgi tipleri char, int ve float v.b. değişkenler ile dizi (array)

Detaylı

Giris {\} /\ Suhap SAHIN Onur GÖK

Giris {\} /\ Suhap SAHIN Onur GÖK Giris 0 \ /\ Suhap SAHIN Onur GÖK Fonksiyon C: Ana Fonksiyon(main) main() main() C: Ana Fonksiyon(main) main() main() C: Ana Fonksiyon(main) Giris? main() Çıkıs main() C: Ana Fonksiyon(main) void main()

Detaylı

Bilgisayar Programlama MATLAB

Bilgisayar Programlama MATLAB What is a computer??? Bilgisayar Programlama MATLAB Prof. Dr. İrfan KAYMAZ What Konular is a computer??? MATLAB ortamının tanıtımı Matlab sistemi (ara yüzey tanıtımı) a) Geliştirme ortamı b) Komut penceresi

Detaylı

Lambda İfadeleri (Lambda Expressions)

Lambda İfadeleri (Lambda Expressions) Lambda İfadeleri (Lambda Expressions) Lambda İfadeleri, değişkenlere değer atamak için kullanılan sadeleştirilmiş anonim (isimsiz) fonksiyonlardır. Bu fonksiyonlar matematikteki ve bilgisayar bilimlerindeki

Detaylı

C PROGRAMLAMA D İ L İ

C PROGRAMLAMA D İ L İ C PROGRAMLAMA DİLİ C Programlama Dilinin Temelleri C Programlama Dili'ni popüler kılan önemli nedenler aşağıda listelenmiştir: C, güçlü ve esnek bir dildir. C ile işletim sistemi veya derleyici yazabilir,

Detaylı

Akış Kontrol Mekanizmaları

Akış Kontrol Mekanizmaları Akış Kontrol Mekanizmaları 1 Akış Kontrol Mekanizmaları if else switch for döngüsü for döngüsünün çalışma prensibi for döngüsüyle ilgili örnekler for döngüsüyle ilgili kurallar while döngüsü while döngüsünün

Detaylı

Genel Programlama II

Genel Programlama II Genel Programlama II 1 Yapılar ( Structures ) Yapılar ( structures ); tam sayı, karakter vb. veri tiplerini gruplayıp, tek bir çatı altında toplar. Bu gruplandırma içinde aynı ya da farklı veri

Detaylı

FONKSİYONLAR (FUNCTIONS)

 FONKSİYONLAR (FUNCTIONS) 1 Fonksiyon : Belirli bir işi yapan programın bir isim altına tanımlanarak, o isimle çağrılarak kullanılması. Fonksiyonun faydaları : Programın modülerliğini arttırır. Aynı işi yapan program parçası tekrar

Detaylı

Algoritmalar ve Programlama. Algoritma

Algoritmalar ve Programlama. Algoritma Algoritmalar ve Programlama Algoritma Algoritma Bir sorunu / problemi çözmek veya belirli bir amaca ulaşmak için gerekli olan sıralı mantıksal adımların tümüne algoritma denir. Algoritma bir sorunun çözümü

Detaylı

ALGORİTMA VE PROGRAMLAMA II

ALGORİTMA VE PROGRAMLAMA II ALGORİTMA VE PROGRAMLAMA II Yrd. Doç. Dr. Deniz KILINÇ [email protected] YZM Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 İşaretçiler ve Diziler Fonksiyon

Detaylı

Bilgisayarda Programlama. Temel Kavramlar

Bilgisayarda Programlama. Temel Kavramlar Bilgisayarda Programlama Temel Kavramlar KAVRAMLAR Programlama, yaşadığımız gerçek dünyadaki problemlere ilişkin çözümlerin bilgisayarın anlayabileceği bir biçime dönüştürülmesi / ifade edilmesidir. Bunu

Detaylı

C PROGRAMLAMA D İ L İ

C PROGRAMLAMA D İ L İ C PROGRAMLAMA DİLİ Fonksiyonlar (Alt programlar) Fonksiyon Kavramı Fonksiyon, belirli sayıda verileri kullanarak bunları işleyen ve bir sonuç üreten komut grubudur. Her fonksiyonun bir adı ve fonksiyona

Detaylı

VERİ TABANI ve YÖNETİMİ

VERİ TABANI ve YÖNETİMİ VERİ TABANI ve YÖNETİMİ Maltepe Üniversitesi Bilgisayar Mühendisliği Bölümü 2 BÖLÜM FONKSİYONLAR 3 Giriş Geçen haftaki derslerimizde Görünümleri (View) ve Stored Procedure (SP) leri öğrendik. Bu hafta

Detaylı

C Programlama Dilinde Değişkenler

C Programlama Dilinde Değişkenler C Programlama Dilinde Değişkenler Değişkenler bir programlama dilinin en önemli bileşenlerindendir. En basit bir aritmetik işlemin bile kullanıcının girdiği değerleri saklamak için çeşitlik bellek alanlarına

Detaylı

Print Komutu ile Değişkenleri Yazdırmak

Print Komutu ile Değişkenleri Yazdırmak PYTHON DERS-4 Bu derste eksiklerimizi gidereceğiz. Şimdiye kadar bazı komutları kullandık ancak kullandığımız bu komutların özellikleri hakkında hiçbir şey öğrenmedik. İşte bu derste biraz onlardan bahsedeceğiz.

Detaylı

BİL Bilgisayar Programlama II

BİL Bilgisayar Programlama II BİL Bilgisayar Programlama II (C/C++) Hazırlayan: monash.pw Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Konular Giriş Sınıflar, Nesneler, Fonksiyon ve Veri Üyeleri Sınıf ve Fonksiyon Üyeleri

Detaylı

Bölüm 2 - C ile Programlamaya Giriş

Bölüm 2 - C ile Programlamaya Giriş 1 Bölüm 2 - C ile Programlamaya Giriş Başlıklar Giriş Basit C Programları: Bir Metni Yazdırmak Basit C Programları: İki Tam Sayıyı Toplamak Hafıza Konuları C de Aritmetik Karar

Detaylı

Temel Giriş/Çıkış Fonksiyonları

Temel Giriş/Çıkış Fonksiyonları Temel Giriş/Çıkış Fonksiyonları Temel giriş/çıkış fonksiyonları, bütün programla dillerinde mevcuttur. Bu tür fonksiyonlar, kullanıcıya ekrana veya yazıcıya bilgi yazdırmasına, ve bilgisayara klavyeden

Detaylı

LABORATUVAR ÇALIŞMASI 1 - Python a Giriş

LABORATUVAR ÇALIŞMASI 1 - Python a Giriş LABORATUVAR ÇALIŞMASI 1 - Python a Giriş Bu Çalışmanın Amacı Bu çalışmadaki amacımız, kullandığımız sistem ve kullanım hedefimiz için en uygun olan Python sürümünü bilgisayarımıza yükleyerek bilgisayarımızı

Detaylı

Bölüm 9. Altprogramlar ISBN

Bölüm 9. Altprogramlar ISBN Bölüm 9 Altprogramlar ISBN Giriş Bu bölümde, programlarda sıkça kullanılan işlemlerin bir araya gruplanması ile oluşturulan altprogramlar incelenecektir. Altprogramlar sayesinde bir programda

Detaylı

C++ Dersi: Nesne Tabanlı Programlama

C++ Dersi: Nesne Tabanlı Programlama C++ Dersi: Nesne Tabanlı Programlama Bölüm Bileşim, Arkadaş ve Diğer Araçlar İçerik Bileşim Arkadaş Fonksiyonlar ve Sınıflar Arkadaş Fonksiyonlar Arkadaş Sınıflar Sabit Nesneler Sabit Üye Fonksiyonlar

Detaylı

C dilinde faktöriyel hesaplama

#include <stdio.h> #include <stdlib.h> //                PROGRAMIN ACIKLAMASI                // /*! faktoriyel yaklasik basamakli bir tamsayidan olusur  ve bunu hicbir degiskene sigdiramayiz. Bu yuzden sayimizi bir diziye atayacagiz. Program su sekilde calisacak: fact[] adli diziye her seferinde hesaplanan sayi yazdirilacak, yani dizide  saklanan ilk deger fact[0] = 1 iken ikinci islemde fact[0] = 2 olacak, üçüncü  islemde de fact[0] = 6 seklinde degerler burada saklanacak ama sayilari tersten yazdiracagiz, yani sayinin son basamagi dizinin 0. (fact[0]) elemaninda sakli olacak. Bunu neden yaptigimi asagidaki fonksiyonda anlatacagim. Bu sekilde asagida j degiskeni ile yaptigim dongude 1'den 'e kadar carpma fonksiyonuna gidip j degiskeni ile fact[]  icindeki sayiyi carparak faktoriyelini alacak. En sonunda j = oldugunda fact[] icindeki  sayiyla 'u carpacak ve sayiyi ekrana yazdirip programi sonlandiracak. Eger sorun olursa  yazabilirsin. Hadi programa gecelim :) */ int fact[]; // Faktöriyelin saklandigi dizi int numberOfDigit = 1; //faktoriyelin anlik karakter sayisini sakladigimiz degisken int mult(int multiplier); // carpma islemi yapan fonksiyon  int main() { int i; //sayacimiz int multiplier = 1; //multiplier yani carpan fact[0] = 1; // ilk degeri 1 yaptik for(multiplier = 1; multiplier<=; multiplier++) { mult(multiplier); // mult() fonksiyonuna gidelim }     printf("factoriel of (!): \n");     for(i=numberOfDigit-1; i>=0; i--) // tersten yazdiriyoruz     {         printf("%d",fact[i]);     }     return 0; } int mult(int multiplier){ int carry = 0; // tipki kucukken yaptigimiz gibi carpma isleminde kullandigimiz 'elde' int i = 0; for(i=0; i<numberOfDigit; i++)     {         int x = fact[i]*multiplier; //product         fact[i] = (x+carry)%10;         carry = (x+carry)/10; // elde var 'carry'             if (i == numberOfDigit-1 && carry>0)             numberOfDigit++;     } }

Herkese iyi çalismalar, ben Fatih Dag. Bu forumda yazdigim (genellikle internette örnegini bulamadigim) kodlari paylasacagim. Programlamada Türkçe kaynaklara bir katkim olsun diye böyle bir seye karar verdim.

Bu programda faktöriyeli hesaplayan bir program yazdım. Bu programı neden bu kadar uzattığıma gelirsek faktöriyeli hesaplayıp bir değişkene atayamayız, nedeni ise sudur: Bütün programlama dillerinde veri tiplerinin bir siniri vardır. C dilinde ise en büyük veriyi tutabilen veri tipi unsigned long long int ve tutabildiği maksimum değer 18,,,,,, idir.

 Simdi birde ! sayisina bakalim:

! =

Evet görüldüğü üzere basamaktan oluşan sayı unsigned long long int veri tipinin bile çok üstünde bir sayı, simdi gelelim akıllardaki soruya, biz bu sayıyı nasıl depolayacağız?

Bunun için gereken çözüm dizilerde. Sayıyı diziye depolayacağız ve diziyi ekrana yazdıracağız. Gelelim işi nasıl yapacağımıza:

Aslında iş çok basit, ilkokulda öğrendiğimiz çarpma işlemini yapacağız ama kağıt üzerinde çarpıyormuş gibi, örneğin ile 5'i çarpalım:

    3*5 = 15

x   3    alt kısma 5 yazılır ve elde 1 kalır. Yani 15'in 5'ini alıyoruz, 1'i kalıyor

   elde var 1

    5

   

    3*4 = 12 + 1(elde var 1)

x   3    alt kisma 3 yazilir ve elde 1 kalir. 13'ün 3'ü yazilir, 1'i kalir

   elde var 1

   35

    3*3 = 9 + 1(elde var 1)

x   3    alt kisma 0 yazilir ve elde 1 kalir. 10'un 0'i yazilir 1'i elde kalir

   elde var 1

 

    3*2 = 6 + 1(elde var 1)

x   3    alt kisma 7 yazilir ve elde bir sey kalmaz ve islem biter.

    

Simdi bu işlemleri programa dökecegiz, öncelikle sayiyi tutacagimiz bir diziye ihtiyacimiz var, bu diziye sayımızı atayacağız ama sayıyı ters bir şekilde atamamız gerek, yani sayılarımızı hep [5,4,3,2] şeklinde saklayacağız. Bunun nedenini daha sonra açıklayacağım:

#include <stdio.h> #include <stdlib.h> #define MAX_DIGIT   int main(){ int fakt[MAX_DIGIT] = {5, 4, 3, 2}; // yukarida MAX_DIGIT'i olarak tanimladik return 0; } 

Şimdi işlem yaparken elde kalanları taşıyacağımız ve dizinin sonunu bilmemizi sağlayacak iki değişkene ihtiyacımız var. Birde sayaç oluşturacağız.

#include <stdio.h> #include <stdlib.h> #define MAX_DIGIT   int main(){ int fakt[MAX_DIGIT] = {5, 4, 3, 2}; int basamakSayisi = 4; // Basamak sayısını tutan değişkenimiz int elde = 0; // elde int i = 0; // sayacımız return 0; } 

şimdi gelelim programın asıl kısmına:

#include <stdio.h> #include <stdlib.h> #define MAX_DIGIT   int main(){ int fakt[MAX_DIGIT] = {5, 4, 3, 2}; int basamakSayisi = 4; // Basamak sayısını tutan değişkenimiz int elde = 0; // elde int i = 0; // sayacımız for(i=0; i<basamakSayisi; i++) {     int sayi = fakt[i]*3; //3 burada çarpanımnız olur     fakt[i] = (sayi+elde)%10;     elde= (sayi+elde)/10; // elde var 'carry'         if (i == basamakSayisi-1 && elde>0)         basamakSayisi++; } return 0; } 

Bu kod, ile 3'ü çarpmaktadır. Çıktı olarak verir. Şimdi satır satır kodu inceleyelim:

for(i=0; i<basamakSayisi; i++)

Döngü içinde i değişkeni basamakSayisi'na varana kadar bir bir artarak gidiyor.

int sayi = fakt[i]*3;

Burada sayımızın birler basmağı ile çarpanımızı çarpımonash.pw şu işlemi 3x5 =15

x 3

5

yapıyoruz.

fakt[i] = (sayi+elde)%10;

Burası önemli, burada sonucumuzun() birler basamağını buluyoruz. (sayi+elde)%10 işleminde sayi'yi ilk işlemde yaptığımız gibi 15 farz edelim, (15+0)%10 işleminin sonucu 5'tir yani sayımızın birler basamağıdır. bu sayıyı dizinin ilk indeksine, daha sonra ise 2. 3. ve 4. indekslerine atayacağız.

elde = (sayi+elde)/10;

Burada elde kalan sayı hesaplanıyor, yani 15'in 1'i alınıyor ve elde'ye atanıyor. birkaç örnek sayıyı kendiniz deneyerek anlattıklarımı daha iyi anlayabilirsiniz.

if(i == basamakSayisi-1 && elde>0)

basamakSayisi++;

Bu kod bloğunda sayacımız basamakSayisi-1'e eşit olduğunda yani son döngüye girdğinde elde'de sayı kalmışsa döngüyü 1 erteliyor.

çarpma işlemini öğrendiğimize göre şimdi sonucu ekrana yazdıralım:

#include <stdio.h> #include <stdlib.h> #define MAX_DIGIT   int main(){ int fakt[MAX_DIGIT] = {5, 4, 3, 2}; int basamakSayisi = 4; // Basamak sayısını tutan değişkenimiz int elde = 0; // elde int i = 0, j = 0; // sayaclarımız for(i=0; i<basamakSayisi; i++) {     int sayi = fakt[i]*3; //3 burada çarpanımnız olur     fakt[i] = (sayi+elde)%10;     elde= (sayi+elde)/10; // elde var 'carry'         if (i == basamakSayisi-1 && elde>0)         basamakSayisi++; } for(j = basamakSayisi-1; j>=0; j--) { printf("%d", fakt[j]); } return 0; } 

Sayıyı ters yazdığımız için diziyi sondan yazıyoruz.

Şimdi geldik ! hesaplamaya, program her çarpma işleminde dizinin içindeki sayı ile bizim 3 diye belirttiğimiz çarpanı çarpıyor ve tekrar diziye atıyor. Şimdi bizim yapmamız gerek şu: Önce diziye başlangıç değeri olarak 1 atayacağız ve bir döngü açıp döngünün 1'den 'e kadar artmasını sağlayacağız. Program her seferinde döngüdeki değişkeni(i) alıp dizinin içindeki sayı ile çarpacak ve tekrar diziye atayacak.

Başlayalım:

#include <stdlib.h> #include <stdio.h> #define MAX_DIGIT   int main(){  int fakt[MAX_DIGIT] = {1};  int basamakSayisi = 4; // Basamak sayısını tutan değişkenimiz  int elde = 0; // elde   int i = 0, j = 0; // sayaclarımız  int carpan = 1;    for(carpan = 1; carpan <=; carpan++)  {   for(i=0; i<basamakSayisi; i++)   {    int sayi = fakt[i]*carpan; //carpan her asamada bir artiyor    fakt[i] = (sayi+elde)%10;    elde= (sayi+elde)/10; // elde var 'carry'    if (i == basamakSayisi-1 && elde>0)      basamakSayisi++;   }  }    for(j = basamakSayisi-1; j>=0; j--)  {    printf("%d", fakt[j]);  } return 0; }

Evet bir döngü oluşturduk ve döngüde carpan adlı değişkeni bir bir artırdık ve her aşamada dizideki sayı ile çarptık, yani işlem aslında şu şekilde:

fakt = 1x1 = 1

fakt = 1x2 = 2

fakt = 2x3 = 6

fakt = 6x4 = 24

fakt = !

Evet program burada sona eriyor. Benim yazdığım en üstteki program daha farklı,çünkü benim kod yazma tarzımla yazdım ve fonksiyon kullandım. Bu konuda size mantığını anlattım, sizde istediğiniz gibi yazabilirsiniz. Eğer bir eksiğim veya bir sorunuz olursa çekinmeyin, teşekkürler :D

Bu programı yabancı bir kaynaktan da alıntı yaparak yazdım, buradan yabancı kaynağa ulaşabilirsiniz.

Merhabalar, bu yazımda sizlerle basit bir algoritmaylanasıl faktöriyel hesaplayacağımızı göstereceğim.

Bu dersimiz daha çok programlamaya yeni başlayanlar için olacak.

Önce faktöriyelin ne olduğunu öğrenelim :
Faktöriyel, birden başlayarak bir sayıya kadar olan sayıların çarpımıdır. Faktöriyel ünlem işareti (!) ile gösterilir.
Mesela n sayısının faktöriyeli, n! şeklinde gösterilir.
Bir örnek verelim :
4 sayısının faktöriyeli şu şekilde bulunur :
4! = = 24

Faktöriyel hakkında daha fazla bilgi almak için Faktöriyel - Vikipedi Sayfası sayfasını ziyaret etmeyi unutmayınız.

Şimdi bir algoritma hazırlayalım ve bu algoritmayı 5 farklı yazılım dilindeyazalım.
Mantığı :

Sonuç değişkeni, 1 değerine atanır.
Sayı değişkeni girilir.

1'den girilen sayı değişkenine kadar sayılar çarpılır.
- Bizim yaptığımız algoritmada sayı değişkenini,1'e kadar kendisinden bir önceki sayıyla çarpıyoruz.

Çarpma işlemleri genellikle büyük sonuçlar çıkardığı için sayi ve sonuç değişkenlerini long veri tipinde tanımlıyoruz.
! Önemli Not : Longveri tipinin alabileceği en büyük değer olduğu için ve biz faktörial alacağımız için sayı değerine en büyük 25 yazabileceğimizi unutmayalım.

En küçükyazabileceğimiz değer faktöriyel alırken 0'dır eğer negatif sayılarda işlem yapmak istiyorsanız sayıyı önce pozitifyapıp faktöriyelini alıp daha sonra eksi (-) ile çarpabilirsiniz.
Algoritma :

Program çalıştırılır.
Long tipinde "sayı" ve "sonuç" değişkenleri oluşturulur.
Sayı değişkeni 0'dan büyük olduğu sürece tekrarlanır :

   - Sonuç değişkeni ile sayı değişkeni çarpılır ve sonuç değerine atanır.

Sonuç değeri ekrana yazdırılır.
Program bitirilir.
Hadi gelin şimdi yazdığımız bu algoritmayı 5 farklı yazılım diliile yazıp satır satır açıklayalım:

Java : 
&#; &#;&#; // Arda Mavi - monash.pw public class Main { public static void main(String[] args){ long sayi = 4; // Biz bu örnekte 4'ün faktöriyelini bulacağız. // Long veri tipinde, 4 değerine eşit "sayi" isimli bir değişken oluşturuyoruz. long sonuc = 1; // Long veri tipinde, 1 değerine eşit "sonuc" isimli bir değişken oluşturuyoruz. while (sayi>0){ // Sayi değişkeni 0'dan büyük olduğu sürece döngü tekrarlanacak. sonuc = sonuc*sayi; // Sonuc değişkeni ile sayi değişkeni çarpılıp sonuc değişkenine atıyoruz. sayi--; // Sayi değişkeninin değeri bir azaltılıyor. } monash.pwn(sonuc); // Sonuc değişkeni konsola yazdırılıyor. // Konsol Çıktısı : 24 } }
C# : 
&#; &#;&#; // Arda Mavi - monash.pw using System; namespace Main { class MainClass { public static void Main (string[] args) { long sayi = 4; // Biz bu örnekte 4'ün faktöriyelini bulacağız. // Long veri tipinde, 4 değerine eşit "sayi" isimli bir değişken oluşturuyoruz. long sonuc = 1; // Long veri tipinde, 1 değerine eşit "sonuc" isimli bir değişken oluşturuyoruz. while (sayi>0){ // Sayi değişkeni 0'dan büyük olduğu sürece döngü tekrarlanacak. sonuc = sonuc*sayi; // Sonuc değişkeni ile sayi değişkeni çarpılıp sonuc değişkenine atıyoruz. sayi--; // Sayi değişkeninin değeri bir azaltılıyor. } monash.pwine(sonuc); // Sonuc değişkeni konsola yazdırılıyor. // Konsol Çıktısı : 24 } } }
Swift : 
&#; &#;&#; // Arda Mavi - monash.pw var sayi = 4 // Biz bu örnekte 4'ün faktöriyelini bulacağız. // Long veri tipinde, 4 değerine eşit "sayi" isimli bir değişken oluşturuyoruz. var sonuc = 1 // Long veri tipinde, 1 değerine eşit "sonuc" isimli bir değişken oluşturuyoruz. while (sayi>0){ // Sayi değişkeni 0'dan büyük olduğu sürece döngü tekrarlanacak. sonuc = sonuc*sayi // Sonuc değişkeni ile sayi değişkeni çarpılıp sonuc değişkenine atıyoruz. sayi-- // Sayi değişkeninin değeri bir azaltılıyor. } print(sonuc) // Sonuc değişkeni konsola yazdırılıyor. // Konsol Çıktısı : 24
C : 
&#; &#;&#; // Arda Mavi - monash.pw // stdio.h kütüphanesini dahil etmeyi unutmayınız. int main(int argc, const char * argv[]) { long sayi = 4; // Biz bu örnekte 4'ün faktöriyelini bulacağız. // Long veri tipinde, 4 değerine eşit "sayi" isimli bir değişken oluşturuyoruz. long sonuc = 1; // Long veri tipinde, 1 değerine eşit "sonuc" isimli bir değişken oluşturuyoruz. while (sayi>0){ // Sayi değişkeni 0'dan büyük olduğu sürece döngü tekrarlanacak. sonuc = sonuc*sayi; // Sonuc değişkeni ile sayi değişkeni çarpılıp sonuc değişkenine atıyoruz. sayi--; // Sayi değişkeninin değeri bir azaltılıyor. } printf("%ld",sonuc); // Sonuc değişkeni konsola yazdırılıyor. // Konsol Çıktısı : 24 return 0; }
C++ : 
&#; &#;&#; // Arda Mavi - monash.pw #include Umarım yararlı olmuştur.
Görüşleriniz ve önerileriniz benim için çok değerli.
Sorularınızı bekliyorum.
İyi çalışmalar.

Share this

C ve C++ programlama dili ile faktöriyel hesaplama için kullanılan tekrarlamalı (iterative) ve özyinelemeli (recursive) yöntemlerle ilgili bilgiler yer alıyor.

Faktöriyel hesaplama

Faktöriyel hesaplama işlemi belirli bir sayıdan 1 sayısına kadar olan sayıların çarpımıdır.

Örneğin; 5 sayısı için 5*4*3*2*1 =

C ve C++ programlama dilinde faktöriyel hesaplamak için tekrarlamalı ve özyinelemeli yöntemler kullanılır.

Tekrarlamalı yöntem

Tekrarlamalı yöntem veya iteratif yöntem programlama dili içerisinde yer alan döngüler kullanılarak yapılan işlemdir.

C ile;

Tekrarlamalı yöntemin while döngüsü ile yapılmış hali aşağıdaki gibidir.

Özyinelemeli yöntem

Özyinelemeli yöntem veya rekürsif yöntem yazılan fonksiyonunun sürekli kendini çağırmasıdır.

C ile;

NOT: Faktöriyel hesaplama işleminde büyük sayılar işletim sistemi mimarisine göre farklı sonuçlar verebilir.

Programlama örneklerine buradan ulaşabilirsiniz&#;

Hayırlı günler dilerim.

nest...

oksabron ne için kullanılır patates yardımı başvurusu adana yüzme ihtisas spor kulübü izmit doğantepe satılık arsa bir örümceğin kaç bacağı vardır