• 27-02-2015, 00:52:02
    #1
    Merhaba arkadaşlar,

    Sorunu matematiksel anlatayım.Elimizde 1234 diye bir sayı var 1+2+3+4=10
    1234/10 a tam bölünmediğinden bölünmez bu yüzden programdan a çıktısı bölünürse de atıyorum b diyecek bir program lazım.

    Benim sıkıntı çektiğim kısım şu ;

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        int x,y,t=0;
        printf("Bir Sayi Giriniz: ");
        scanf("%d",&x);
        while(x)
        {
            y=x%10;
            x=x/10;
            t+=y;
        }
    burda basamak sayılarını toplayabilirim tamam fakat değişkenin adı t burdan sonra bir if yazarsam yukarıda t yi 0 tanımladığımdan t yi öyle alıyor döngüdeki gibi son değeri yazmıyor.

    Bu arada soruyu cevaplayan arkadaşın bir websitesi varsa 5-10 yorum yapabilirim.Şuan bir şey farkettim while in parantezi if i kapsamadan yapmaya çalışıyormuşum.
  • 27-02-2015, 01:04:58
    #2
    Soruyu tam yazarsanız yardımcı olabilirim. Tam anlayamadım soruyu?
  • 27-02-2015, 01:16:47
    #3
    PM attım.

    Kodu düzenledim biraz fakat bu seferde output kısmı tek bir karakterden oluşmuyor.

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        int x,y,t=0;
        printf("Bir Sayi Giriniz: ");
        scanf("%d",&x);
        while(x)
        {
            y=x%10;
            x=x/10;
            t+=y;
    
    
    if (x%y==0)
    { printf("B");
    
    }
    
    else
    {
        printf("A");
    }
        }
    }
  • 27-02-2015, 01:25:45
    #4
    aslında soruyu çözmeye çok yaklaşmışsın

    C derleyicisi yok ben de java ile yaptım. Sadece sayı okuma ve yazdırmak kısımları farklı, onları değiştirip çalıştırabilirsin bu şekilde

     public static void main(String[] args) {
    
    		Scanner in = new Scanner(System.in);
    		System.out.print("Bir Sayi Giriniz: ");
    		int sayi = in.nextInt();
    		
    		int tmp1,tmp2;
    		int basamakToplami =0;
    		tmp2=sayi;
    		while(true)
    		{
    			tmp1= tmp2%10;
    		
    			basamakToplami += tmp1;
    			tmp2 = tmp2/10;
    			if(tmp2<10) 
    			{
    				basamakToplami+=tmp2;
    				break;
    			}
    		}
    		
    		System.out.println("Basamak Toplamı: " + basamakToplami);
    		if(sayi%basamakToplami==0)
    			System.out.println("Tam bölünüyor");
    		else 
      		System.out.println("Tam bölünmüyor !!!");
    
            }
  • 27-02-2015, 01:37:19
    #5
    ertan2002 adlı üyeden alıntı: mesajı görüntüle
    aslında soruyu çözmeye çok yaklaşmışsın

    C derleyicisi yok ben de java ile yaptım. Sadece sayı okuma ve yazdırmak kısımları farklı, onları değiştirip çalıştırabilirsin bu şekilde

     public static void main(String[] args) {
    
    		Scanner in = new Scanner(System.in);
    		System.out.print("Bir Sayi Giriniz: ");
    		int sayi = in.nextInt();
    		
    		int tmp1,tmp2;
    		int basamakToplami =0;
    		tmp2=sayi;
    		while(true)
    		{
    			tmp1= tmp2%10;
    		
    			basamakToplami += tmp1;
    			tmp2 = tmp2/10;
    			if(tmp2<10) 
    			{
    				basamakToplami+=tmp2;
    				break;
    			}
    		}
    		
    		System.out.println("Basamak Toplamı: " + basamakToplami);
    		if(sayi%basamakToplami==0)
    			System.out.println("Tam bölünüyor");
    		else 
      		System.out.println("Tam bölünmüyor !!!");
    
            }
    C ye dönüştürülmüş halide benden gelsin hocam o zaman

    #include<stdio.h>
    
    int main(void){
    	int sayi,tmp1,tmp2,basamakToplami=0;
    	printf("Bir Sayi Giriniz\n");
    	scanf("%d",&sayi);
    	tmp2=sayi;
    	while(1){
    		tmp1=tmp2%10;
    		basamakToplami+=tmp1;
    		tmp2=tmp2/10;
    		if(tmp2<10){
    			basamakToplami+=tmp2;
    			break;
    		}
    	}
    	printf("Basamak Toplami : %d\n",basamakToplami);
    	if(sayi%basamakToplami==0){
    		printf("Tam Bolunuyor \n");
    	}else{
    		printf("Tam Bolunmuyor \n");
    	}
    	return 0;
    }
  • 27-02-2015, 02:30:13
    #6
    teşekkür ederim yardımlarınız için abi biraz fazla yazdırmışın basamak değer toplamını yazmasına gerek yoktu bölse yeterdi ben kırpayım biraz bunu tekrar teşekkür ederim.

    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 02:14:09 -->-> Daha önceki mesaj 01:41:38 --

    ertan2002 adlı üyeden alıntı: mesajı görüntüle
    aslında soruyu çözmeye çok yaklaşmışsın

    C derleyicisi yok ben de java ile yaptım. Sadece sayı okuma ve yazdırmak kısımları farklı, onları değiştirip çalıştırabilirsin bu şekilde

     public static void main(String[] args) {
    
    		Scanner in = new Scanner(System.in);
    		System.out.print("Bir Sayi Giriniz: ");
    		int sayi = in.nextInt();
    		
    		int tmp1,tmp2;
    		int basamakToplami =0;
    		tmp2=sayi;
    		while(true)
    		{
    			tmp1= tmp2%10;
    		
    			basamakToplami += tmp1;
    			tmp2 = tmp2/10;
    			if(tmp2<10) 
    			{
    				basamakToplami+=tmp2;
    				break;
    			}
    		}
    		
    		System.out.println("Basamak Toplamı: " + basamakToplami);
    		if(sayi%basamakToplami==0)
    			System.out.println("Tam bölünüyor");
    		else 
      		System.out.println("Tam bölünmüyor !!!");
    
            }
    kadir58 adlı üyeden alıntı: mesajı görüntüle
    C ye dönüştürülmüş halide benden gelsin hocam o zaman

    #include<stdio.h>
    
    int main(void){
    	int sayi,tmp1,tmp2,basamakToplami=0;
    	printf("Bir Sayi Giriniz\n");
    	scanf("%d",&sayi);
    	tmp2=sayi;
    	while(1){
    		tmp1=tmp2%10;
    		basamakToplami+=tmp1;
    		tmp2=tmp2/10;
    		if(tmp2<10){
    			basamakToplami+=tmp2;
    			break;
    		}
    	}
    	printf("Basamak Toplami : %d\n",basamakToplami);
    	if(sayi%basamakToplami==0){
    		printf("Tam Bolunuyor \n");
    	}else{
    		printf("Tam Bolunmuyor \n");
    	}
    	return 0;
    }


    Biraz yüzsüzlük karışımıyla bir soru daha sorababilir miyim Umarım selam verdik borçlu çıktık durumunu yaşatmıyorumdur

    soruyu ben çok yanlış anlamışım basamak toplamını sayının son hanesine bölüp yazdıracakmışız 1234 = (1+2+3+4) = 10 10 4 e bolunmedıgı ıcın a bolunse b gibi.

    if(sayi%basamakToplami==0)
    kısmını
    üstte tmp1=tmp2%10 şeklinde tanımladığımız için tmp1 i aldım.

    if(basamakToplami%tmp1==0)
    şeklinde değiştirdim fakat ne yazarsam yazayım else durumunu görmüyor.

    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 02:30:13 -->-> Daha önceki mesaj 02:14:09 --

    bu sorunuda çözdüm fakat gene wrong answer veriyor sistem programlamayı bırakıp ingilizce okuyayım ben en iyisi böyle olacak gibi değil.Üstteki sorduğumun cevabıda şu şekildeymiş, belki birine lazım olur.

    #include<stdio.h>
    
    int main(void){
    	int sayi,tmp1,tmp2,basamakToplami=0;
    	printf("Bir Sayi Giriniz: ");
    	scanf("%d",&sayi);
    	tmp2=sayi;
    	while(1){
    		tmp1=tmp2%10;
    		basamakToplami+=tmp1;
    		tmp2=tmp2/10;
    		if(tmp2<10){
    			basamakToplami+=tmp2;
    			break;
    		}
    	}
    
    
    int a=sayi%10;
    
    	if(basamakToplami%a==0){
    		printf("po\n");
    	}
    	else{
    		printf("jo \n");
    	}
    	return 0;
    }