Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
1 / 1 / 1
Регистрация: 19.11.2011
Сообщений: 35
1

Три цикла в одной программе, дать возможность в меню выбрать тот или иной

18.03.2012, 12:28. Показов 2903. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ребят подскажите пожалуйста. Имеется вот такое задание:
Дана функция x=a*sin(k*t+2)*cos(k*t). Составить алгоритм для расчета этой функции, если а изменяется от 5 до 7 с шагом 0.12, t изменяется от 4.2 до 6.2 с шагом 0.17, а k=1,2,3,...,12.
Составить три варианта программы с циклами for; while и do-while. Я делаю вот так:
Цикл For:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication5
{
    class Program
    {
        static void Main(string[] args)
        {
 
            double a, t, x; int k;
 
            for (a = 5; a <= 7; a += 0.12)
                for (t = 4.2; t <= 6.2; t += 0.17)
                    for (k = 1; k <= 12; k += 1)
                    {
                        x = a * Math.Sin(k * t + 2) * Math.Cos(k * t);
                        Console.WriteLine("x= " + x);
                        Console.ReadLine();
 
                    }
        }
    }
}
Цикл While
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication5
{
    class Program
    {
        static void Main(string[] args)
        {
 
            double a, t, x; int k;
            a = 5; k = 1; t = 4.2;
            while ((a <= 7) && (t <= 6.2) && (k <= 12))
            {
                x = a * Math.Sin(k * t + 2) * Math.Cos(k * t);
                Console.WriteLine("x= " + x);
                a += 0.12;
                t += 0.17;
                k += 1;
                Console.ReadLine();
 
 
 
 
                    }
        }
    }
}
Цикл do-while:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            double a, t, x; int k;
            a = 5; k = 1; t = 4.2;
            do
            {
                x = a * Math.Sin(k * t + 2) * Math.Cos(k * t);
                Console.WriteLine("x= " + x);
               Console.ReadLine();
 
                a += 0.12;
                t += 0.17;
                k += 1;
            }
            while ((a <= 7) && (t <= 6.2) && (k <= 12));
        }
    }
}
Но это получились три разные программы. А можно ли это дело сделать в одну программу с меню, в котором бы предлагалось пользователю самому выбирать, с помощью какого цикла считать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.03.2012, 12:28
Ответы с готовыми решениями:

Реализовать меню, которое позволит запускать тот или иной код
Нужно слепить две простейших программы в одну и сделать простую менюшку выбора, той программы,...

Дать программе возможность самостоятельно выбрать число из нескольких введенных пользователем
Есть поля для ввода текста и есть кнопка рядом. Я допустим пишу в поле ввода текст допустим ну то...

Три цикла в одной программе
Найти сумму ((x*x)+1)/i используя три вида цикла в одной программе Вот только в трех случаях...

При вводе того или иного пароля открывать тот или иной txt-файл
Добрый вечер. Нужно написать программу, которая будет при вводе того или иного пароля открывать тот...

6
Эксперт .NET
17790 / 12941 / 3381
Регистрация: 17.09.2011
Сообщений: 21,215
18.03.2012, 12:35 2
Конечно можно, просто вынесите разные способы в разные методы, в методе Main выводите меню, запрашивайте ввод и запускайте соответствующий метод.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
static void Main()
{
   Console.WriteLine("1. Using for");
   Console.WriteLine("2. Using while");
   Console.WriteLine("3. Using do");
 
   string input = Console.ReadLine();
   switch (input)
   {
      case "1": RunWithFor(); break;
      case "2": RunWithWhile(); break;
      case "3": RunWithDo(); break;
      default: Console.WriteLine("Invalid selection"); break;
   }
   Console.ReadKey(true);
}
Кстати, а вы уверены, что второе и третье решения - правильны? Там ведь циклы будут идти до тех пор, пока все три условия истинны, то есть расчет прекратится как только k достигнет значения 12, задолго до того, как a и t достигнут своих предельных значений.
Не нужно ли там тоже вложенные циклы делать?
0
1 / 1 / 1
Регистрация: 19.11.2011
Сообщений: 35
18.03.2012, 12:52  [ТС] 3
Цитата Сообщение от kolorotur Посмотреть сообщение
Не нужно ли там тоже вложенные циклы делать?
А вот я не знаю, подскажите пожалуйста, как правильно?
0
Эксперт .NET
17790 / 12941 / 3381
Регистрация: 17.09.2011
Сообщений: 21,215
18.03.2012, 12:55 4
Если то, что вы выложили в первом сообщении, является полным текстом задания, то я бы сделал вложенные циклы, как в вашем варианте с for.
0
1 / 1 / 1
Регистрация: 19.11.2011
Сообщений: 35
18.03.2012, 13:14  [ТС] 5
Цитата Сообщение от kolorotur Посмотреть сообщение
Если то, что вы выложили в первом сообщении, является полным текстом задания
Да, это полный текст задания. Вы имеете в виду вот так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication5
{
    class Program
    {
        static void Main(string[] args)
        {
 
            double a, t, x; int k;
            a = 5; k = 1; t = 4.2;
            while (a <= 7) 
                 while (t <= 6.2) 
                     while(k <= 12)
            {
                x = a * Math.Sin(k * t + 2) * Math.Cos(k * t);
                Console.WriteLine("x= " + x);
                a += 0.12;
                t += 0.17;
                k += 1;
                Console.ReadLine();
 
 
 
 
                    }
        }
    }
}
Добавлено через 13 минут
Т.е, например, мне надо вместо RunWithFor() , вставить код цикла for? или как?
0
Эксперт .NET
17790 / 12941 / 3381
Регистрация: 17.09.2011
Сообщений: 21,215
18.03.2012, 14:58 6
Да, только инкремент значений должен происходить в соответствующих циклах.

Цитата Сообщение от NeoX_2011 Посмотреть сообщение
Т.е, например, мне надо вместо RunWithFor() , вставить код цикла for? или как?
Можно и так, а можно вынести код с циклами в отдельный метод:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
static void RunWithFor()
{
               double a, t, x; int k;
 
            for (a = 5; a <= 7; a += 0.12)
                for (t = 4.2; t <= 6.2; t += 0.17)
                    for (k = 1; k <= 12; k += 1)
                    {
                        x = a * Math.Sin(k * t + 2) * Math.Cos(k * t);
                        Console.WriteLine("x= " + x);
                        Console.ReadLine();
 
                    }
}
1
1 / 1 / 1
Регистрация: 19.11.2011
Сообщений: 35
18.03.2012, 16:12  [ТС] 7
Поверьте пожалуйста правильность:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
using System;
 
namespace ConsoleApplication1
{
    internal static class Program
    {
        private static void Main()
        {    // запрашиваем выбор оператора
            Console.WriteLine("1. Считать с использованием оператора For");
            Console.WriteLine("2. Считать с использованием оператора While");
            Console.WriteLine("3. Считать с использованием оператора Do-While");
            Console.WriteLine("4. Вернуться к коду программы");
            string input = Console.ReadLine();
            switch (input)
            {   // ссылаемся на новые методы
                case "1": RunWithFor(); break;
                case "2": RunWithWhile(); break;
                case "3": RunWithDo(); break;
                case "4": return;
                    // при вводе отличной от 1,2,3,4 цифры, выводим следующие:
                default: Console.WriteLine("Некорректный ввод"); break;
            }
            Console.ReadKey(true);}
        //создаем методы, на которые ссылались, поместив в их тело операторы цикла
        //метод с оператором for
        static void RunWithFor()
        {double a, t, x; int k;
         for (a = 5; a <= 7; a += 0.12)
                for (t = 4.2; t <= 6.2; t += 0.17)
                    for (k = 1; k <= 12; k += 1)
           { x = a * Math.Sin(k * t + 2) * Math.Cos(k * t);
            Console.WriteLine("x= " + x);
            Console.ReadLine();}}
        //метод с оператором while
        static void RunWithWhile()
        {
            double a, t, x; int k;
            a = 5; k = 1; t = 4.2;
            while (a <= 7)
                while (t <= 6.2)
                    while (k <= 12)
           {x = a * Math.Sin(k * t + 2) * Math.Cos(k * t);
            Console.WriteLine("x= " + x);
            a += 0.12;
            t += 0.17;
            k += 1;
            Console.ReadLine();}}
        //метод с оператором do-while
        static void RunWithDo()
        {
            double a, t, x; int k;
            a = 5; k = 1; t = 4.2;
            do
            {
                x = a * Math.Sin(k * t + 2) * Math.Cos(k * t);
                Console.WriteLine("x= " + x);
                Console.ReadLine();
                a += 0.12;
                t += 0.17;
                k += 1;}
            while (a <= 7);
            while (t <= 6.2) ;
            while (k <= 12) ;}}}
0
18.03.2012, 16:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.03.2012, 16:12
Помогаю со студенческими работами здесь

Где используется тот ли иной язык программирования? Какой из них выбрать для решения задачи?
спросил в этой теме из-за того что не нашел где можно почитать где используется тот ли иной язык...

По запросу пользователя вывести тот или иной абзац
Добрый вечер:) Помогите пожалуйста чуток исправить прогу. Суть ее вот в чем: Дан текстовый файл,...

Как узнать, запущен ли тот или иной процесс?
Всем доброго времени суток! Возникла следующая проблема: как можно программно узнать запущен тот...

Показывать тот или иной GroupBox в зависимости от условия
На форме есть 10 групбоксив и 2 клавиши (назад и вперед), нужен цикл переключения. То есть сначала...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru