C Programlama dilinde çarpma işlemi ‘*’ kullanmadan toplama ile çarpma işlemi yapmayı örneklerden bulabilirsiniz. Birinci örnek algoritmayı anlamak için, ikinci örnek ise eksi ‘-‘ değer girildiğinde sorun çıkmaması için bir kaç kod eklenmiş hali. Kolaydan zora inceleyebilirsiniz.
C programlama dili toplama ile çarpma işlemi yapma
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
#include <stdio.h>
#include <conio.h>
//Çarpma işlemi kullanmadan Çarpma yapma (Fonksiyonsuz)
//Cemalettin Serit ckaynak.com | teknooneri.com | cemserit.com
int main(){
int sayi1, sayi2, i, sonuc=0;
printf("Birinci Sayi: ");
scanf("%d", &sayi1);
printf("Ikinci Sayi: ");
scanf("%d", &sayi2);
for( i=0; i<sayi2; i++)
sonuc += sayi1;
printf("%d*%d= %d", sayi1, sayi2, sonuc);
getch(); // Programın kapanmaması için (Klavyeden bir değer bekler)
return 0; // Programı sonlandırır
}
|
Yukarıdaki kodda girilen ikinci sayi negatif bir değer olduğunda sonuç yanlış hesaplanıyor. Bunun çözümü için ise tüm değerleri önce pozitif değere dönüştürüp daha sonra işlem yapmak. Bu kodu ise fazladan 2 değişken ve if ile kontrol ederek yapabilirsiniz.
C’de negatif değerde sorun vermeyen, toplama işlemi ile çarpma yapma kodu
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
#include <stdio.h>
#include <conio.h>
//Çarpma işlemi kullanmadan Çarpma yapma (Fonksiyonsuz)
//Cemalettin Serit ckaynak.com | teknooneri.com | cemserit.com
int main(){
int sayi1, sayi2, i, sonuc=0, gecici1, gecici2;
printf("Birinci Sayi: ");
scanf("%d", &sayi1);
printf("Ikinci Sayi: ");
scanf("%d", &sayi2);
gecici1 = sayi1; //Negatif bir değer girildiğinde sayıları kaybetmemek için geciciye atıyoruz
gecici2 = sayi2;
if(gecici1 < 0) // Negatif bir deger girildiğinde sayıları pozitif yapıyoruz
gecici1 = 0 - gecici1;
if(gecici2 < 0)
gecici2 = 0 - gecici2;
for(i=0;i<gecici2;i++) //Çarpma işlemini yaptığımız algoritma!!!
sonuc += gecici1;
if(sayi1 < 0 && sayi2 < 0) // Her iki sayıda negatif ise sonuc değişmesin ve pozitif kalsın
sonuc = sonuc;
else if(sayi1 < 0 || sayi2 < 0 ) //Girilen herhangi bir değer negatif ise sonucu negatif yapıyoruz
sonuc = 0 - sonuc;
printf("%d*%d= %d", sayi1, sayi2, sonuc);
getch(); // Programın kapanmaması için (Klavyeden bir değer bekler)
return 0; // Programı sonlandırır
}
|