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

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

🟠 23:02 Загроза ударних БпЛАЗагроза БпЛА типу «Шахед»#м_Харків_та_Харківська_територіальна_громада
Статус: Offline
Реєстрація: 10.04.2011
Повідом.: 867
  • 🟠 23:02 Загроза ударних БпЛАЗагроза БпЛА типу «Шахед»#м_Харків_та_Харківська_територіальна_громада
  • #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);


        }
    }
}
 
Останнє редагування:
  • 🟠 23:02 Загроза ударних БпЛАЗагроза БпЛА типу «Шахед»#м_Харків_та_Харківська_територіальна_громада
  • #2
если ничего не путаю гетч это что-то типа паузы до нажатия клавиши, вместо него можешь использовать Console.ReadKey() а дальше тебя эмоции захлестнули я не понимаю что ты хочешь, похоже что просто в цикл нужно переместить выбор пунта и получится то что хочешь
 
  • 🟠 23:02 Загроза ударних БпЛАЗагроза БпЛА типу «Шахед»#м_Харків_та_Харківська_територіальна_громада
  • #3
если ничего не путаю гетч это что-то типа паузы до нажатия клавиши, вместо него можешь использовать Console.ReadKey() а дальше тебя эмоции захлестнули я не понимаю что ты хочешь, похоже что просто в цикл нужно переместить выбор пунта и получится то что хочешь

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

многократно повторять процесс ввода исходных данных и получения результата вычисления до ввода пользователем определенной строки символов, после чего завершить работу.
 
  • 🟠 23:02 Загроза ударних БпЛАЗагроза БпЛА типу «Шахед»#м_Харків_та_Харківська_територіальна_громада
  • #4
ну перенеси 'do' перед 'Console.WriteLine("Калькулятор");' и будет то что ты хочешь, в с++ тоже самое должно было быть

и вместо 'break;' напиши 'continue;', 'break;' только в 's == 6' добавь
 
  • 🟠 23:02 Загроза ударних БпЛАЗагроза БпЛА типу «Шахед»#м_Харків_та_Харківська_територіальна_громада
  • #5
ну перенеси 'do' перед 'Console.WriteLine("Калькулятор");' и будет то что ты хочешь, в с++ тоже самое должно было быть

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

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



Еще вопрос как сделать что очищать только прошлую операцию, а меню оставалось? А то я дописал Console.Clear(); Перед "Введите А".
 
Останнє редагування:
  • 🟠 23:02 Загроза ударних БпЛАЗагроза БпЛА типу «Шахед»#м_Харків_та_Харківська_територіальна_громада
  • #6
разница между циклами for while и do_while с точки зрения синтаксиса только в том когда проверяется условие нужна ли следующая итерация: понимаешь как работает любой из циклов - понимаешь как работают все

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

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

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


И у тебя половина кода одни и те же 4 строки.
 
  • 🟠 23:02 Загроза ударних БпЛАЗагроза БпЛА типу «Шахед»#м_Харків_та_Харківська_територіальна_громада
  • #10
А если мне после запятой нужно заполнить нулями, как это сделать?
Я использовал Math.Round(c, f); f-кол-во знаков после запятой. с - результат операции.
При умножении например 2*3=ответ 6, а мне нужно писать 6,000 например.
 
  • 🟠 23:02 Загроза ударних БпЛАЗагроза БпЛА типу «Шахед»#м_Харків_та_Харківська_територіальна_громада
  • #11
  • 🟠 23:02 Загроза ударних БпЛАЗагроза БпЛА типу «Шахед»#м_Харків_та_Харківська_територіальна_громада
  • #12
  • 🟠 23:02 Загроза ударних БпЛАЗагроза БпЛА типу «Шахед»#м_Харків_та_Харківська_територіальна_громада
  • #13
Дабы не плодить темы пишу тут. Дилемма.

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

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

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

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

На сколько это неправильно? =)
 
  • 🟠 23:02 Загроза ударних БпЛАЗагроза БпЛА типу «Шахед»#м_Харків_та_Харківська_територіальна_громада
  • #14
Дабы не плодить темы пишу тут. Дилемма.

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

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

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

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

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

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

Можно я отвечу вопrосом на вопrос? Шо надо шоб получилось?
Если ты хочешь выебать однокурсницу - то такой подход очевидно неправильный. Если что-то другое - то надо знать что именно.
 
  • 🟠 23:02 Загроза ударних БпЛАЗагроза БпЛА типу «Шахед»#м_Харків_та_Харківська_територіальна_громада
  • #15
Можно я отвечу вопrосом на вопrос?

Дерзай.

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

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

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

Угу. Но тут главное о жене не говорить и в институт поступить.
 
  • 🟠 23:02 Загроза ударних БпЛАЗагроза БпЛА типу «Шахед»#м_Харків_та_Харківська_територіальна_громада
  • #16
Нужно с минимальными усилиями работать с "большим" количеством элементов и хотелось бы сократить количество строк кода.

И вот какой ответ ты хочешь получить?
Хочется - сокращай.
 
  • 🟠 23:02 Загроза ударних БпЛАЗагроза БпЛА типу «Шахед»#м_Харків_та_Харківська_територіальна_громада
  • #17
  • 🟠 23:02 Загроза ударних БпЛАЗагроза БпЛА типу «Шахед»#м_Харків_та_Харківська_територіальна_громада
  • #18
Попробую перефразировать? Единственно ли верный это способ работы с объектами на форме в коде? :(

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

P>S. Понимаешь почему тебе постоянно задают вопрос "что ті хочешь сделать"?
Тут же нет гадалок, за гадалками в єзотерику.
Любіе контролы можно хранить в коллекциях, и я слышал мнение, что єто правильно.
 
  • 🟠 23:02 Загроза ударних БпЛАЗагроза БпЛА типу «Шахед»#м_Харків_та_Харківська_територіальна_громада
  • #19
  • 🟠 23:02 Загроза ударних БпЛАЗагроза БпЛА типу «Шахед»#м_Харків_та_Харківська_територіальна_громада
  • #20
Назад
Зверху Знизу