Вопросы по C шарп

Статус: Offline
Реєстрація: 10.04.2011
Повідом.: 869
Вопросы по C шарп

Возникло несколько проблем. Правильно ли я использую do While.
И есть ли в C# что-то похожее от функции в getch(); в С++. Я в С++ ставил бесконечный цикл перед выбором варианта меню и getch(); после всего меню и можно было многократно повторять процесс ввода. Например выбрал "пенкт 2" посчитал и дальше могу выбрать другой пункт.
Как это сделать на Шарпе?

Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


namespace Lab1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Калькулятор");
           

            Console.WriteLine("1.Опервция <->");
            Console.WriteLine("2.Операция <+>");
            Console.WriteLine("3.Операция </>");
            Console.WriteLine("4.Операция <*>");
            Console.WriteLine("5.Exp");
            Console.WriteLine("6.Выход");

            Console.WriteLine("Выберите операцию");
          int s = Convert.ToInt32(Console.ReadLine());

            do
            {
                if(s==1)
                    {
                        Console.WriteLine("Введите A=");
                        int a = Convert.ToInt32(Console.ReadLine());
                        Console.WriteLine("Введите B=");
                        int b = Convert.ToInt32(Console.ReadLine());
                        double c = a - b;
                        Console.WriteLine(a+"-"+b+"="+c);
                        break;

                    }
                if(s==2)
                    {
                        Console.WriteLine("Введите A=");
                        int a = Convert.ToInt32(Console.ReadLine());
                        Console.WriteLine("Введите B=");
                        int b = Convert.ToInt32(Console.ReadLine());
                        double c = a + b;
                        Console.WriteLine(a+"+"+b+"="+c);
                        break;
                    }
                if(s==3)
                    {
                        Console.WriteLine("Введите A=");
                        double a = Convert.ToDouble(Console.ReadLine());
                        Console.WriteLine("Введите B=");
                        int b = Convert.ToInt32(Console.ReadLine());         
                        double c = a / b;
                        Console.WriteLine(a+"/"+b+"="+c);
                        break;
                    }
                if(s==4)
                    {
                        Console.WriteLine("Введите A=");
                        int a = Convert.ToInt32(Console.ReadLine());
                        Console.WriteLine("Введите B=");
                       int b = Convert.ToInt32(Console.ReadLine());
                       double c = a * b;
                        Console.WriteLine(a+"*"+b+"="+c);
                        break;
                    }
               if(s==5)
                    {
                        Console.WriteLine("Операция Exp(x)");
                        Console.WriteLine("Введите X=");
                        double x = Convert.ToDouble(Console.ReadLine());
                        Console.WriteLine("Ответ=" + Math.Exp(x));
                        break;
                    }
               if (s == 6)
               {
                   
               }
            }while(s<7);


        }
    }
}
 
Останнє редагування:
если ничего не путаю гетч это что-то типа паузы до нажатия клавиши, вместо него можешь использовать Console.ReadKey() а дальше тебя эмоции захлестнули я не понимаю что ты хочешь, похоже что просто в цикл нужно переместить выбор пунта и получится то что хочешь
 
если ничего не путаю гетч это что-то типа паузы до нажатия клавиши, вместо него можешь использовать Console.ReadKey() а дальше тебя эмоции захлестнули я не понимаю что ты хочешь, похоже что просто в цикл нужно переместить выбор пунта и получится то что хочешь

Сейчас у меня так: выбрал например операцию "2", все там выполнил и с программы выходит. А мне нужно после выполнения какой-то операции, оно не выходило, а я мог выбрать например операцию "3" или еще что-то, и так выбирать пока не захочу выйти.
Может я не понятно объясняю, вот скопировал с задания:

многократно повторять процесс ввода исходных данных и получения результата вычисления до ввода пользователем определенной строки символов, после чего завершить работу.
 
ну перенеси 'do' перед 'Console.WriteLine("Калькулятор");' и будет то что ты хочешь, в с++ тоже самое должно было быть

и вместо 'break;' напиши 'continue;', 'break;' только в 's == 6' добавь
 
ну перенеси 'do' перед 'Console.WriteLine("Калькулятор");' и будет то что ты хочешь, в с++ тоже самое должно было быть

и вместо 'break;' напиши 'continue;', 'break;' только в 's == 6' добавь

Спасибо. Просто я раньше Ду Вайл не использовал. И на первом курсе не сильно учил С++, теперь стал стараться, приходится что не знал доучивать.



Еще вопрос как сделать что очищать только прошлую операцию, а меню оставалось? А то я дописал Console.Clear(); Перед "Введите А".
 
Останнє редагування:
разница между циклами for while и do_while с точки зрения синтаксиса только в том когда проверяется условие нужна ли следующая итерация: понимаешь как работает любой из циклов - понимаешь как работают все

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

Еще вопрос как сделать что очищать только прошлую операцию, а меню оставалось? А то я дописал Console.Clear(); Перед "Введите А".
думаю никак, напиши все заново
 
думаю ты перепутал "if" со "switch/case" тогда break'и были бы к месту
 
Еще вопрос как сделать что очищать только прошлую операцию, а меню оставалось? А то я дописал Console.Clear(); Перед "Введите А".
Позицией курсора можно произвольно управлять.
Но для лаб это может быть слишком. Наверно, не стоит смущать препода.

Вообще идешь в гугл. Оттуда на мсдн, например. И там всё есть
Тільки зареєстровані користувачі бачать весь контент у цьому розділі


И у тебя половина кода одни и те же 4 строки.
 
А если мне после запятой нужно заполнить нулями, как это сделать?
Я использовал Math.Round(c, f); f-кол-во знаков после запятой. с - результат операции.
При умножении например 2*3=ответ 6, а мне нужно писать 6,000 например.
 
Дабы не плодить темы пишу тут. Дилемма.

1. Есть кнопки (штук 10) на форме (WinForms).

2. В классе формы объявляю массив кнопок.

3. Каждому элементу массива присваиваю кнопку формы (получается ссылка на объект кнопки)

4. При помощи циклов задаю свойства элементам массива, соответственно, на форме тоже воспроизводятся внесенные изменения свойств.

На сколько это неправильно? =)
 
Дабы не плодить темы пишу тут. Дилемма.

1. Есть кнопки (штук 10) на форме (WinForms).

2. В классе формы объявляю массив кнопок.

3. Каждому элементу массива присваиваю кнопку формы (получается ссылка на объект кнопки)

4. При помощи циклов задаю свойства элементам массива, соответственно, на форме тоже воспроизводятся внесенные изменения свойств.

На сколько это неправильно? =)

Задаем правильные вопросы - получаем правильные ответы.

Можно я отвечу вопrосом на вопrос? Шо надо шоб получилось?
Если ты хочешь выебать однокурсницу - то такой подход очевидно неправильный. Если что-то другое - то надо знать что именно.
 
Можно я отвечу вопrосом на вопrос?

Дерзай.

Шо надо шоб получилось?

Нужно с минимальными усилиями работать с "большим" количеством элементов и хотелось бы сократить количество строк кода.

Если ты хочешь выебать однокурсницу - то такой подход очевидно неправильный.

Угу. Но тут главное о жене не говорить и в институт поступить.
 
Нужно с минимальными усилиями работать с "большим" количеством элементов и хотелось бы сократить количество строк кода.

И вот какой ответ ты хочешь получить?
Хочется - сокращай.
 
Попробую перефразировать? Единственно ли верный это способ работы с объектами на форме в коде? :(

А с какой целью кнопки формы создаются в массиве?
Если планируется потом их искать, удалять, добавлять новые - это верный ход.
Но если они статичны - может просто накидать их в дизайнере рукой на форму и пусть валяются? Строк кода не уменьшится, но их будешь генерировать не ты.

P>S. Понимаешь почему тебе постоянно задают вопрос "что ті хочешь сделать"?
Тут же нет гадалок, за гадалками в єзотерику.
Любіе контролы можно хранить в коллекциях, и я слышал мнение, что єто правильно.
 
Назад
Зверху Знизу