Saturday, July 21, 2012

Sınırsız boyuttaki sayıları toplayan program (C#)

1. Örnek: Sınırız boyuttaki  sayıları toplayan program;


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace sinirsiz
{
    class Program
    {
        static void Main(string[] args)
        {
            string sayi1, sayi2, sonuc = "";   /* string türünde içi boş olan sonuc tanımladık */

            int uzunluk, i, arasonuc;
            int elde = 0;

            Console.Write("1. sayiyi giriniz: ");
            sayi1 = Console.ReadLine();

            Console.Write("2. sayiyi giriniz: ");
            sayi2 = Console.ReadLine();

            uzunluk = sayi1.Length;  /* birinci sayının uzunlugunu aldık */

            for (i = uzunluk - 1; i >=0;  i--)   /* uzunluk 0 dan başlamadığı için -1 yaptık */
            {

               arasonuc = (Convert.ToInt32(sayi1[i].ToString())) + (Convert.ToInt32(sayi2[i].ToString())) +
                                   elde; /* sayi birin tek tek elemanlarını sayi ikinin elemanları ile toplattık. eldeyi de 
                                  toplama ekledik. */

                sonuc = arasonuc % 10 + sonuc;  /* sonucta tek tek toplama yaptığımız değerin tek elemanın 
                                                                    alcağımız için aratoplamın 10a göre modunu aldık. */

                if (arasonuc >= 10)  /* aratoplam 10dan büyük ise elde mizi 1 yaptık . */
                {
                    elde = 1;
                }
            }

            if (elde == 1)   /* sonunda elde değerimiz bir ise sonuc değerinin önüne yazdırdık. */
            {
                sonuc = elde + sonuc;
            }

            Console.WriteLine(sonuc);
            Console.ReadLine();
        }
    }
}


2 comments:

  1. farkı basamak sayısına sahipse nasıl yapacağız örnegin 123 ile 12

    ReplyDelete
  2. Kodda biraz değişiklikler yapıp çözmeye çalıştım bir bak istersen

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace sinirsiz
    {
    class Program
    {
    static void Main(string[] args)
    {
    string sayi1, sayi2, sonuc = ""; /* string türünde içi boş olan sonuc tanımladık */

    int uzun=0, i, arasonuc;
    int elde = 0;
    int fark=0;

    Console.Write("1. sayiyi giriniz: ");
    sayi1 = Console.ReadLine();

    Console.Write("2. sayiyi giriniz: ");
    sayi2 = Console.ReadLine();


    int ccc = sayi1.Length - sayi2.Length;
    int bbb = sayi2.Length - sayi1.Length;
    int cc,bb;
    cc= Math.Abs(ccc) ;//mutlak deger
    bb= Math.Abs(bbb) ;

    if(cc>=bb){
    fark=cc;
    }
    else {
    fark=bb;
    }
    string sifir = "";
    if (fark != 0)
    {
    for (int g = 0; g < fark; g++)
    {
    sifir = sifir + "0";
    }
    }

    if (sayi1.Length > sayi2.Length)
    {
    sayi2 = sifir + sayi2;
    uzun = sayi1.Length;
    }

    if (sayi2.Length > sayi1.Length)
    {
    sayi1 = sifir + sayi1;
    uzun = sayi2.Length;
    }



    /* birinci sayının uzunlugunu aldık */
    for (i = uzun - 1; i >= 0; i--) /* uzunluk 0 dan başlamadığı için -1 yaptık */
    {

    arasonuc = (Convert.ToInt32(sayi1[i].ToString())) + (Convert.ToInt32(sayi2[i].ToString())) +
    elde; /* sayi birin tek tek elemanlarını sayi ikinin elemanları ile toplattık. eldeyi de
    toplama ekledik. */

    sonuc = arasonuc % 10 + sonuc; /* sonucta tek tek toplama yaptığımız değerin tek elemanın
    alcağımız için aratoplamın 10a göre modunu aldık. */

    if (arasonuc >= 10) /* aratoplam 10dan büyük ise elde mizi 1 yaptık . */
    {
    elde = 1;
    }
    }

    if (elde == 1) /* sonunda elde değerimiz bir ise sonuc değerinin önüne yazdırdık. */
    {
    sonuc = elde + sonuc;
    }

    Console.WriteLine(sonuc);

    Console.WriteLine(fark +" " + sifir +" "+ uzun + " " + bb + " "+ cc );
    Console.ReadLine();
    }
    }
    }

    ReplyDelete