Змінюй хід війни! Допомагай ЗСУ!

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

🔴 05:39 Повітряна тривога в Харків.обл.
Статус: Offline
Реєстрація: 10.04.2011
Повідом.: 867
  • 🔴 05:39 Повітряна тривога в Харків.обл.
  • #1
Вопросы по 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);


        }
    }
}
 
Останнє редагування:
  • 🔴 05:39 Повітряна тривога в Харків.обл.
  • #2
если ничего не путаю гетч это что-то типа паузы до нажатия клавиши, вместо него можешь использовать Console.ReadKey() а дальше тебя эмоции захлестнули я не понимаю что ты хочешь, похоже что просто в цикл нужно переместить выбор пунта и получится то что хочешь
 
  • 🔴 05:39 Повітряна тривога в Харків.обл.
  • #3
если ничего не путаю гетч это что-то типа паузы до нажатия клавиши, вместо него можешь использовать Console.ReadKey() а дальше тебя эмоции захлестнули я не понимаю что ты хочешь, похоже что просто в цикл нужно переместить выбор пунта и получится то что хочешь

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

многократно повторять процесс ввода исходных данных и получения результата вычисления до ввода пользователем определенной строки символов, после чего завершить работу.
 
  • 🔴 05:39 Повітряна тривога в Харків.обл.
  • #4
ну перенеси 'do' перед 'Console.WriteLine("Калькулятор");' и будет то что ты хочешь, в с++ тоже самое должно было быть

и вместо 'break;' напиши 'continue;', 'break;' только в 's == 6' добавь
 
  • 🔴 05:39 Повітряна тривога в Харків.обл.
  • #5
ну перенеси 'do' перед 'Console.WriteLine("Калькулятор");' и будет то что ты хочешь, в с++ тоже самое должно было быть

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

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



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

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

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

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


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

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

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

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

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

На сколько это неправильно? =)
 
  • 🔴 05:39 Повітряна тривога в Харків.обл.
  • #14
Дабы не плодить темы пишу тут. Дилемма.

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

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

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

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

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

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

Можно я отвечу вопrосом на вопrос? Шо надо шоб получилось?
Если ты хочешь выебать однокурсницу - то такой подход очевидно неправильный. Если что-то другое - то надо знать что именно.
 
  • 🔴 05:39 Повітряна тривога в Харків.обл.
  • #15
Можно я отвечу вопrосом на вопrос?

Дерзай.

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

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

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

Угу. Но тут главное о жене не говорить и в институт поступить.
 
  • 🔴 05:39 Повітряна тривога в Харків.обл.
  • #16
Нужно с минимальными усилиями работать с "большим" количеством элементов и хотелось бы сократить количество строк кода.

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

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

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