Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.03.2013, 15:58   #1
Наталья Баева
Форумчанин
 
Регистрация: 25.04.2012
Сообщений: 128
По умолчанию обмен переменных

помогите с программой
нужно ввести 5 переменных с клавиатуры
расположить в порядке убывания
при этом а самая большая и е самая маленькая
и если а меньше то нужно заменить из других переменных на большую и так с каждой переменной

сама программа
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void swap(int a, int b, int c, int d, int e)
        {
            if (b > a)
            {
                int x = a;
                a = b;
                b = a;
            }
            else
                a = a;

            if (c > a)
            {
                int x = a;
                a = c;
                c = a;
            }
            else
                a = a;


            if (d > a)
            {
                int x = a;
                a = d;
                d = a;
            }
            else
                a = a;

            if (e > a)
            {
                int x = a;
                a = e;
                e = a;
            }
            else
                a = a;



            if (c > b)
            {
                int x = b;
                b = c;
                c = b;
            }
            else
                b = b;

            if (d > b)
            {
                int x = b;
                b = d;
                d = b;
            }
            else
                b = b;

            if (e > b)
            {
                int x = b;
                b = e;
                e = b;
            }
            else
                b = b;



            if (d > c)
            {
                int x = c;
                c = d;
                d = c;
            }
            else
                c = c;

            if (e > c)
            {
                int x = c;
                c = e;
                e = c;
            }
            else
                c = c;



            if (e > d)
            {
                int x = d;
                e = d;
                d = e;
            }
            else
                d = d;

        }



        static void Main(string[] arg)
        {
            Console.Write("vvedi a=");
            string st = Console.ReadLine(); ;
            int a = Convert.ToInt32(st);

            Console.Write("vvedi b=");
            string st2 = Console.ReadLine();
            int b = Convert.ToInt32(st2);

            Console.Write("vvedi c=");
            string st3 = Console.ReadLine();
            int c = Convert.ToInt32(st3);

            Console.Write("vvedi d=");
            string st4 = Console.ReadLine();
            int d = Convert.ToInt32(st4);

            Console.Write("vvedi e=");
            string st5 = Console.ReadLine();
            int e = Convert.ToInt32(st5);


            Console.WriteLine("{0} {1} {2} {3} {4}", a, b, c, d, e);

            Console.ReadLine();
        }
    }
}


___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 26.03.2013 в 16:48.
Наталья Баева вне форума Ответить с цитированием
Старый 26.03.2013, 16:44   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Используйте тег форума CODE для оформления программного кода.

Вы не вызываете swap. Не то чтобы в её нынешнем виде от неё был толк, впрочем: аргументы передаются в функцию по значению, то есть, изменения переменной-аргумента a в swap никак не повлияют на то, что ей передали (иначе подумайте, что случилось бы при вызове swap(1, 4, 3, 2, 5) ?).
Посмотрите, что означает и как работает ключевое слово ref.
Код:
a = b;
b = a;
Вторая строка бессмысленна: в a и b уже одно и то же значение. b=x, вероятно?..
Abstraction вне форума Ответить с цитированием
Старый 26.03.2013, 16:56   #3
Наталья Баева
Форумчанин
 
Регистрация: 25.04.2012
Сообщений: 128
По умолчанию

а как написать чтобы использовать swap
я не знаю как сделать вывод верный
Наталья Баева вне форума Ответить с цитированием
Старый 26.03.2013, 17:02   #4
stalsoft
Форумчанин
 
Регистрация: 09.06.2011
Сообщений: 147
По умолчанию

Предлагаю не изобретать велосипед, и сделать проще:

//допустим это список всех переменных, которые ты получаешь через консольный ввод
int a = 11, b = 2, c = 5, d = 1, e = 10;

//создаем массив
int[] arr = new int[] { a, b, c, d, e };

//стандартными средствами сортируем его
Array.Sort(arr);

// (!) Если надо все таки обратно запихнуть отсортированные данные в переменные, ТО:
a = arr[0];
b = arr[1];
c = arr[2];
d = arr[3];
e = arr[4];

все.
У женщин чары образуются из стрингов;
А у программистов наоборот - стринги образуются из чаров;
stalsoft вне форума Ответить с цитированием
Старый 26.03.2013, 17:14   #5
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
а как написать чтобы использовать swap
Цитата:
Посмотрите, что означает и как работает ключевое слово ref.
Вы уже посмотрели? И пример в MSDN прочитали?
Abstraction вне форума Ответить с цитированием
Старый 26.03.2013, 17:25   #6
Наталья Баева
Форумчанин
 
Регистрация: 25.04.2012
Сообщений: 128
По умолчанию

данный способ нам не показывали поэтому я не могу им пользоваться надо именно через обмен
вот что мы делали на занятии


static void swap(int a, int b)
{
int x = a;
a=b;
b= a;
}

static void Main()
{
Console.Write("ВВЕДИТЕ А");
string st = Console.ReadLine();
int a = Convert.ToInt32(st);
Console.Write("ВВЕДИТЕ B");
string st1 = Console.ReadLine();
int b = Convert.ToInt32(st1);

//Console.ReadLine();//a,b
Console.WriteLine("a={0}, b= {1}", a, b);
swap(a, b);//меняем
Console.WriteLine("a={0}, b= {1}", b ,a);


Console.ReadLine();

по этому методу должна сделать и я
Наталья Баева вне форума Ответить с цитированием
Старый 26.03.2013, 17:34   #7
stalsoft
Форумчанин
 
Регистрация: 09.06.2011
Сообщений: 147
По умолчанию

Используйте тогда "Пузырьковую сортировку".

//МЕТОД, который сортирует, и возвращает массив (отсортированный)
Код:
int[] Swap(int a, int b, int c, int d, int e)
        {
            int[] arr = new int[] { a, b, c, d, e };

            for (int i0 = 0; i0 < arr.Length; i0++)
            {
                for (int i1 = i0 + 1; i1 < arr.Length; i1++)
                {
                    if (arr[i1] < arr[i0])
                    {
                        int tmp = arr[i0];
                        arr[i0] = arr[i1];
                        arr[i1] = tmp;
                    }
                }
            }

            return arr;
}
У женщин чары образуются из стрингов;
А у программистов наоборот - стринги образуются из чаров;
stalsoft вне форума Ответить с цитированием
Старый 26.03.2013, 17:49   #8
Наталья Баева
Форумчанин
 
Регистрация: 25.04.2012
Сообщений: 128
По умолчанию

Цитата:
Сообщение от stalsoft Посмотреть сообщение
//МЕТОД, который сортирует, и возвращает массив (отсортированный)
и он пишет в том порядке в каком ввела, а не от большего к меньшему
Наталья Баева вне форума Ответить с цитированием
Старый 26.03.2013, 17:52   #9
stalsoft
Форумчанин
 
Регистрация: 09.06.2011
Сообщений: 147
По умолчанию

Цитата:
Сообщение от Наталья Баева Посмотреть сообщение
и он пишет в том порядке в каком ввела, а не от большего к меньшему
Стоп. Он ничего не пишет. Он просто возвращает ОТСОРТИРОВАННЫЙ массив (по возрастанию).
У женщин чары образуются из стрингов;
А у программистов наоборот - стринги образуются из чаров;
stalsoft вне форума Ответить с цитированием
Старый 26.03.2013, 17:56   #10
Наталья Баева
Форумчанин
 
Регистрация: 25.04.2012
Сообщений: 128
По умолчанию

Цитата:
Сообщение от stalsoft Посмотреть сообщение
Стоп. Он ничего не пишет. Он просто возвращает ОТСОРТИРОВАННЫЙ массив (по возрастанию).
а зачем мне это нужно, что дописать чтобы все верно выполнялось
Наталья Баева вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обмен данными! Romowski Visual C++ 6 12.12.2012 07:50
Обмен местами) Sota Общие вопросы C/C++ 7 22.02.2008 18:32
Обмен скриптами tanos JavaScript, Ajax 1 28.01.2008 22:18