C# подскажите пожалуйста

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Sandro88, 8 Oct 2011.

  1. Sandro88

    Sandro88 New Member

    Joined:
    19 Sep 2011
    Messages:
    7
    Likes Received:
    1
    Reputations:
    0
    Дано четырёх значное число. Нужно написать программу, которая сможет посчитать сумму цифр, из которых оно сотоит(например, сумма цифр числа 2012 равна 2+0+1+2=4).
    Я понимаю, что это легкое задание. Но подскажите пожалуйста как его сделать? какую функцию использовать чтобы разбить число 2012 на 2,0,1,2?
     
  2. Chrome~

    Chrome~ Elder - Старейшина

    Joined:
    13 Dec 2008
    Messages:
    936
    Likes Received:
    162
    Reputations:
    27
    В C это делается так:
    Code:
    /*
    Пусть в переменной n у нас находится 4-ех значное число (лучше всего подойдет тип unsigned short int).
    В переменных a, b, c, d мы будем заисывать цифры этого числа; эти переменные должны занимать в памяти всего по 1 байту, поэтому используем тип char.
    */
    unsigned short int n;
    // Считываем n и выполняем любой другой код.
    char a, b, c, d;
    a = n / 1000;
    b = n % 1000 / 100;
    c = n % 100 / 10;
    d = n %10;
    char sum = a + b + c + d;
    В C# должно быть приблизительно также.
     
  3. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    А если число произвольного размера?
    Тогда уж типа:
    Code:
    int digit = 2012;
    int summ = 0;
    
    do
    {
        summ += digit % 10;
        digit /= 10;
        
    } while (digit > 0);
    
    Console.WriteLine(summ);
    
     
    _________________________
  4. Sandro88

    Sandro88 New Member

    Joined:
    19 Sep 2011
    Messages:
    7
    Likes Received:
    1
    Reputations:
    0
    А как это сделать в windows forms? чтобы при вводе числа в текстбокс он выполнял такие же действия? и выводил в другой текстбокс?
     
  5. Sandro88

    Sandro88 New Member

    Joined:
    19 Sep 2011
    Messages:
    7
    Likes Received:
    1
    Reputations:
    0
    Ура! я сделал))) вот как получилось:
    Code:
    Int32 n, a, b, c, d, summ;
                n = Convert.ToInt32(textBox1.Text);
                a = n / 1000;
                b = n % 1000 / 100;
                c = n % 100 / 10;
                d = n % 10;
                summ = a + b + c + d;
                textBox2.Text = summ.ToString();
    Всем огромное спасибо!!!
     
  6. Sandro88

    Sandro88 New Member

    Joined:
    19 Sep 2011
    Messages:
    7
    Likes Received:
    1
    Reputations:
    0
    Всем привет. Опять не получается написать программу( Нужно написать программу с помощью ветвлений, которая будет печатать на экране 3 числаю введённых с клавиатуры, в порядке возрастания
    -введите 3 числа
    ->859
    -результат сортировки 589
     
  7. seosimf

    seosimf Member

    Joined:
    3 Mar 2011
    Messages:
    271
    Likes Received:
    44
    Reputations:
    6
    http://www.cyberforum.ru/csharp-net/thread42336.html
    http://msdn.microsoft.com/ru-ru/library/bb330922%28vs.80%29.aspx
     
  8. inCode

    inCode Member

    Joined:
    20 Jun 2011
    Messages:
    141
    Likes Received:
    22
    Reputations:
    5
    ветвление с помощью if и else
    Code:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    
    namespace test
    {
        class Program
        {
            static void Main(string[] args)
            {
                int number = 0;
                while (true)
                {
                    Console.WriteLine("Enter number:");
                    try
                    {
                        Console.Clear();
                        number = Convert.ToInt32(Console.ReadLine());
                        if (number.ToString().Length == 3) { break; }
                        else{Console.WriteLine("Invalid number length!");}
                        
                    }
                    catch{  Console.WriteLine("Invalid number, please try again!");}
    
                }
                int value = 0;
                int[] intarray = { 0, 0, 0 };
                for (int i = 0; i < 3; i++) 
                {
                    value= number % 10;
                    intarray[i] = value;
                    number /= 10;
                    
                }
                int[] newintarray = {0,0,0};
                
                if (intarray[0] >= intarray[1] && intarray[0] >= intarray[2]) 
                {
                    newintarray[2] = intarray[0];
                    if(intarray[1] >= intarray[2])
                    {
                        newintarray[1] = intarray[1];
                        newintarray[0] = intarray[2];
                    }
                    else{
                    newintarray[1] = intarray[2];
                    newintarray[0] = intarray[1];  
                    }
                
                }
                if (intarray[0] <= intarray[1] && intarray[0] <= intarray[2]) 
                {
                    newintarray[0] = intarray[0];
                    if (intarray[1] >= intarray[2])
                    {
                        newintarray[2] = intarray[1];
                        newintarray[1] = intarray[2];
    
                    }
                    else {
    
                        newintarray[2] = intarray[2];
                        newintarray[1] = intarray[1];
                    }
                
                
                }
                if (intarray[0] >= intarray[1] && intarray[0] <= intarray[2]) 
                {
    
                    newintarray[0] = intarray[1];
                    newintarray[1] = intarray[0];
                    newintarray[2] = intarray[2];
                }
                if (intarray[0] <= intarray[1] && intarray[0] >= intarray[2]) 
                {
                    newintarray[0] = intarray[2];
                    newintarray[1] = intarray[0];
                    newintarray[2] = intarray[1];
                
                }
    
                Console.WriteLine(newintarray[0].ToString() + newintarray[1].ToString() + newintarray[2].ToString());
                Console.Read();
                
    
                
    
            }
        }
    }
    
    
     
  9. $asha

    $asha New Member

    Joined:
    6 Jul 2011
    Messages:
    14
    Likes Received:
    4
    Reputations:
    0
    Делаешь по аналогии с первым кодом, все цифры запоминаешь в массиве, а затем их сортируешь.
    Раз ветвления, то сортируешь простым сравнением 3-х чисел друг с другом.
     
  10. Sandro88

    Sandro88 New Member

    Joined:
    19 Sep 2011
    Messages:
    7
    Likes Received:
    1
    Reputations:
    0
    дело в том, что я еще не знаю, что такое массивы)
     
  11. xBot

    xBot New Member

    Joined:
    13 Aug 2010
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    ну, тогда сначала садись за книги, а потом уже людей спрашивай что не получается.
    За тебя никто делать не будет просто так.
     
  12. Sandro88

    Sandro88 New Member

    Joined:
    19 Sep 2011
    Messages:
    7
    Likes Received:
    1
    Reputations:
    0
    Всем спасибо. Всё я сделал))
    Code:
    private void button1_Click(object sender, EventArgs e)
            {
                Int32 num, a, b, c, num1, num2, num3;
                num = Convert.ToInt32(textBox1.Text);
                a = num / 100;
                b = num % 100 / 10;
                c = num % 100 % 10;
                num1 = 0;
                num2 = 0;
                num3 = 0;
                if (a >= b)
                    if (a >= c)
                        num1 = a;
                if (b >= c)
                    if (b >= a)
                    num1 = b;
                if (c >= a)
                    if (c >= b)
                        num1 = c;
                if (num1 == a)
                    if (c >= b)
                        num2 = c;
                    else
                        num2 = b;
                if (num1 == b)
                    if (c >= a)
                        num2 = c;
                    else
                        num2 = a;
                if (num1 == c)
                    if (a >= b)
                        num2 = a;
                    else
                        num2 = b;
                if (num2 == a)
                    if (b >= c)
                        num3 = c;
                    else
                        num3 = b;
                if (num2 == b)
                    if (a >= c)
                        num3 = c;
                    else
                        num3 = a;
                if (num2 == c)
                    if (b >= a)
                        num3 = a;
                    else
                        num3 = b;
    
                textBox2.Text = num3.ToString();
                textBox3.Text = num2.ToString();
                textBox4.Text = num1.ToString();
            }
    только как сделать чтобы число выводилось в одном текст боксе? :)
     
  13. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    Code:
     textBox2.Text = num3.ToString()+' '+num2.ToString()+' '+num1.ToString();
     
  14. Sandro88

    Sandro88 New Member

    Joined:
    19 Sep 2011
    Messages:
    7
    Likes Received:
    1
    Reputations:
    0
    Всем привет! подскажите пожалуйста. как переделать этот код в framework 2.0. Пробовал по разному что-то не получается(
    Code:
    string imia, to, log;
                log = Convert.ToString(textBox4.Text);
                imia = Convert.ToString(textBox6.Text);
                to = Convert.ToString(textBox1.Text);
                string str = @log;
                string result1 = str.Substring(str.IndexOf("@", 0));
                using (MailMessage mm = new MailMessage(imia + "<" + log + ">", to))
                {
                    string pass, tema, soob;
                    soob = Convert.ToString(textBox3.Text);
                    tema = Convert.ToString(textBox2.Text);
    
                    pass = Convert.ToString(textBox5.Text);
                    mm.Subject = tema;
                    mm.Body = soob;
                    mm.IsBodyHtml = false;
                    if (result1 == "@mail.ru")
                        result1 = "smtp.mail.ru";
                    if (result1 == "@gmail.com")
                        result1 = "smtp.gmail.com";
                    if (result1 == "@yandex.ru")
                        result1 = "smtp.yandex.ru";
                    using (SmtpClient sc = new SmtpClient(result1, 25))
                    {
                        sc.EnableSsl = true;
                        sc.DeliveryMethod = SmtpDeliveryMethod.Network;
                        sc.UseDefaultCredentials = false;
                        sc.Credentials = new NetworkCredential(log, pass);
                        sc.Send(mm);
                        try
                        {
                            const string message = "Сообщение отправленно";
                            const string caption = "Сообщение отправленно";
                            var result = MessageBox.Show(message, caption, MessageBoxButtons.OK);
                        }
                        catch
                        {
                            MessageBox.Show("Сообщение не отправленно");
                        }
    
    
                    }
                }
     
  15. zoke

    zoke Member

    Joined:
    5 Sep 2010
    Messages:
    90
    Likes Received:
    9
    Reputations:
    5
    Проект -> Свойства -> требуемая версия .NET FRAMEWORK (там меняй)
     
  16. Sandro88

    Sandro88 New Member

    Joined:
    19 Sep 2011
    Messages:
    7
    Likes Received:
    1
    Reputations:
    0
    он не преводит код в framework 2.0. если из 4.0 вставляю в 2.0 там ошибки появляются