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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.11.2011, 15:05   #1
PROkaZZZniK
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 121
По умолчанию Исправление ошибок С#

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

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

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string buf;
            while (true)
            {
                Console.WriteLine(" 1 - график , 2 - мишень , 3 - ряд Тейлора, 4 - выход ");
                buf = Console.ReadLine();
                switch (buf)
                {
                    case "1": double X, r, Y;

                        Console.WriteLine("ВВедите X=");
                        X = Convert.ToDouble(Console.ReadLine());
                        Console.WriteLine("Введите r=");
                        r = Convert.ToDouble(Console.ReadLine());
                        if (X < (-5.0D - r * 2.0D)) Y = double.NaN;//1
                        else if (X < -5.0D)
                        {
                            Y = r - Math.Sqrt(r * r - (X - (-5.0D - r)) * (X - (-5.0D - r)));
                        }
                        else if (X < -4.0D)//2
                        {
                            Y = r;
                        }
                        else if (X < 0.0D)//3
                        {
                            Y = -X * r / 4.0D;
                        }

                        else if (X < Math.PI)//4
                        {
                            Y = Math.Sin(X);
                        }
                        else Y = X - Math.PI;
                        }
            }
                        Console.WriteLine("Y = " + Y.ToString());
                        Console.ReadLine();
                        Console.WriteLine(" повторить - пункт_1 ");
                        break;
        

                    case "2": Double x, y, R;//x=y=R=0
                        Console.WriteLine("Введите R = ");
                        R = Convert.ToDouble(Console.ReadLine());
                        Console.WriteLine("Введите X и y ");
                        x = Convert.ToDouble(Console.ReadLine());
                        y = Convert.ToDouble(Console.ReadLine());

                        if (x >= 0 && y >= 0 && ((x - R) * (x - R) + y * y) <= R * R)//1-я Четверть
                        {
                            Console.WriteLine("ПОПАЛ!!!");
                            return;
                        }
                        {
                            if (x <= 0 && y <= 0 && x >= -R && Math.Pow(x + R, 2) + Math.Pow(y + R, 2) >= R * R)//3-я Четверть
                            {
                                Console.WriteLine("ПОПАЛ!!!");
                                return;
                            }
                        }
                        Console.WriteLine("мимо");
                        Console.WriteLine(" повторить - пункт_2 ");
                        break;

                    case "3":
                        {
            double Xstart = 0.1; // X начальное
            double Xend = 0.8; // X конечное
            double dx = 0.1;  // шаг
            int E = 10; 
            Console.WriteLine(" BBедите Xn и Xk ");
            Xstart = double.Parse(Console.ReadLine());
            Xend = Double.Parse(Console.ReadLine());
                            Console.WriteLine("________________________________________________________________________________");

            for (double х = Xstart; х <= Xend; х += dx)
            {
                double row = GetTailorsRow(х, E);
                Console.WriteLine("x= {0:0.00000}  f= {1:0.00000} E={2}", х, row, E);
            }

            Console.ReadKey();
        }

        
        private static double GetTailorsRow(double х, int e)
        {
            double result = 0;
            for (int n = 0; n <= e; n++)
            {
                result += GetTailorsElement(х, n);
            }
            return result;
        }

       
        private static double GetTailorsElement(double х, int N)
        {
           
            if (Math.Abs(х) >= 1 || N < 0)
            {
                return 0;
            }
            if (N == 0)
            {
                return х;
            }

            double a = 1; // числитель
            double b = 1; // знаменатель

            for (int n = 1; n <= N; n++)
            {
                a *= 2 * n - 1;
                b *= 2 * n;
            }
            a *= Math.Pow(х, (2 * N + 1));
            b *= 2 * N + 1;

            return a / b;

            case "4" : return;
            default : Console.WriteLine( " Введите нужную клавишу ");
            break;
        }
    }
}
}
PROkaZZZniK вне форума Ответить с цитированием
Старый 15.11.2011, 16:28   #2
mMAg
Форумчанин
 
Аватар для mMAg
 
Регистрация: 11.08.2009
Сообщений: 433
По умолчанию

Потому тот язык, на котором ты писал, компиллятор не понимает. Вывод: учи язык, который он понимает.

По факту: неправильное использование switch-case конструкций.
mMAg вне форума Ответить с цитированием
Старый 15.11.2011, 16:33   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

потому что смешаны в кучу разные блоки программы.
1) Вы знаете, для чего нужны открывающие и закрывающие фигурные скобочки?
Если Вы думаете, что их нужно расставлять исключительно с точки зрения красоты, то Вы заблуждаетесь

2) напишите, для начала, чтобы при вводе цифры 1 программа просто напросто выдавала текст: "Вы выбрали отображение графика", при вводе цифры 2 - "Вы выбрали игру Мишень" и т.д., вплоть до ввода цифры 4.

А уже потом, вместо данного текста пишите вызов нужного метода. и для каждого задания сделайте свой отдельный статистический метод. в нём и пишите реализацию.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 15.11.2011, 16:40   #4
PROkaZZZniK
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 121
По умолчанию

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

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string buf;
            while (true)
            {
                Console.WriteLine(" 1 - мишень ,2 - график, 3 - выход ");
                buf = Console.ReadLine();
                switch (buf)
                {
                    case "1": Double x, y, R;//x=y=R=0
                        Console.WriteLine("Введите R = ");
                        R = Convert.ToDouble(Console.ReadLine());
                        Console.WriteLine("Введите X и y ");
                        x = Convert.ToDouble(Console.ReadLine());
                        y = Convert.ToDouble(Console.ReadLine());

                        if (x >= 0 && y >= 0 && ((x - R) * (x - R) + y * y) <= R * R)//1-я Четверть
                        {
                            Console.WriteLine("ПОПАЛ!!!");
                            return;
                        }
                        {
                            if (x <= 0 && y <= 0 && x >= -R && Math.Pow(x + R, 2) + Math.Pow(y + R, 2) >= R * R)//3-я Четверть
                            {
                                Console.WriteLine("ПОПАЛ!!!");
                                return;
                            }
                        }
                        Console.WriteLine("мимо");
                        Console.WriteLine(" повторить - пункт_1 ");
                        break;
                    case "2": double X, r, Y;

                        Console.WriteLine("ВВедите X=");
                        X = Convert.ToDouble(Console.ReadLine());
                        Console.WriteLine("Введите r=");
                        r = Convert.ToDouble(Console.ReadLine());
                        if (X < (-5.0D - r * 2.0D)) Y = double.NaN;//1
                        else if (X < -5.0D)
                        {
                            Y = r - Math.Sqrt(r * r - (X - (-5.0D - r)) * (X - (-5.0D - r)));
                        }
                        else if (X < -4.0D)//2
                        {
                            Y = r;
                        }
                        else if (X < 0.0D)//3
                        {
                            Y = -X * r / 4.0D;
                        }

                        else if (X < Math.PI)//4
                        {
                            Y = Math.Sin(X);
                        }
                        else Y = X - Math.PI;

                        Console.WriteLine("Y = " + Y.ToString());
                        Console.ReadLine();
                        Console.WriteLine(" повторить - пункт_2 ");
                        break;
                    case "3": return;
                    default: Console.WriteLine(" Введите нужную клавишу! ");
                        break;
                }
            }
        }
    }
}

но без ряда Тейлора она работает без ошибок, а как добавлю код - case 3 так все перестает работать
PROkaZZZniK вне форума Ответить с цитированием
Старый 15.11.2011, 17:00   #5
mMAg
Форумчанин
 
Аватар для mMAg
 
Регистрация: 11.08.2009
Сообщений: 433
По умолчанию

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

namespace ConsoleApplication1
{
    class Program
    {

        private static double GetTailorsRow(double х, int e)
        {
            double result = 0;
            for (int n = 0; n <= e; n++)
            {
                result += GetTailorsElement(х, n);
            }
            return result;
        }

        private static double GetTailorsElement(double х, int N)
        {
           
            if (Math.Abs(х) >= 1 || N < 0)
            {
                return 0;
            }
            if (N == 0)
            {
                return х;
            }

            double a = 1; // числитель
            double b = 1; // знаменатель

            for (int n = 1; n <= N; n++)
            {
                a *= 2 * n - 1;
                b *= 2 * n;
            }
            a *= Math.Pow(х, (2 * N + 1));
            b *= 2 * N + 1;

            return a / b;
        }

        static void Main(string[] args)
        {
            string buf;
            while (true)
            {
                Console.WriteLine(" 1 - мишень ,2 - график, 3 - выход ");
                buf = Console.ReadLine();
                switch (buf)
                {
                    case "1": Double x, y, R;//x=y=R=0
                        Console.WriteLine("Введите R = ");
                        R = Convert.ToDouble(Console.ReadLine());
                        Console.WriteLine("Введите X и y ");
                        x = Convert.ToDouble(Console.ReadLine());
                        y = Convert.ToDouble(Console.ReadLine());

                        if (x >= 0 && y >= 0 && ((x - R) * (x - R) + y * y) <= R * R)//1-я Четверть
                        {
                            Console.WriteLine("ПОПАЛ!!!");
                            return;
                        }
                        {
                            if (x <= 0 && y <= 0 && x >= -R && Math.Pow(x + R, 2) + Math.Pow(y + R, 2) >= R * R)//3-я Четверть
                            {
                                Console.WriteLine("ПОПАЛ!!!");
                                return;
                            }
                        }
                        Console.WriteLine("мимо");
                        Console.WriteLine(" повторить - пункт_1 ");
                        break;
                    case "2": double X, r, Y;

                        Console.WriteLine("ВВедите X=");
                        X = Convert.ToDouble(Console.ReadLine());
                        Console.WriteLine("Введите r=");
                        r = Convert.ToDouble(Console.ReadLine());
                        if (X < (-5.0D - r * 2.0D)) Y = double.NaN;//1
                        else if (X < -5.0D)
                        {
                            Y = r - Math.Sqrt(r * r - (X - (-5.0D - r)) * (X - (-5.0D - r)));
                        }
                        else if (X < -4.0D)//2
                        {
                            Y = r;
                        }
                        else if (X < 0.0D)//3
                        {
                            Y = -X * r / 4.0D;
                        }

                        else if (X < Math.PI)//4
                        {
                            Y = Math.Sin(X);
                        }
                        else Y = X - Math.PI;

                        Console.WriteLine("Y = " + Y.ToString());
                        Console.ReadLine();
                        Console.WriteLine(" повторить - пункт_2 ");
                        break;
                    case "3":
                        {
                            double Xstart = 0.1; // X начальное
                            double Xend = 0.8; // X конечное
                            double dx = 0.1;  // шаг
                            int E = 10;
                            Console.WriteLine(" BBедите Xn и Xk ");
                            Xstart = double.Parse(Console.ReadLine());
                            Xend = Double.Parse(Console.ReadLine());
                            Console.WriteLine("________________________________________________________________________________");

                            for (double х = Xstart; х <= Xend; х += dx)
                            {
                                double row = GetTailorsRow(х, E);
                                Console.WriteLine("x= {0:0.00000}  f= {1:0.00000} E={2}", х, row, E);
                            }

                            Console.ReadKey();
                        }
                        break;
                    case "4":
                        return;
                    default: Console.WriteLine(" Введите нужную клавишу! ");
                        break;
                }
            }
        }
    }
}
mMAg вне форума Ответить с цитированием
Старый 15.11.2011, 17:16   #6
PROkaZZZniK
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 121
По умолчанию

Спасибо, но все равно разберусь что у меня было не так.
PROkaZZZniK вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
исправление ошибок toldo Microsoft Office Word 2 09.01.2011 15:22
таблицы с файлами...-исправление ошибок Andrianka Паскаль, Turbo Pascal, PascalABC.NET 3 01.07.2010 12:59
исправление ошибок в коде Viola2208 Помощь студентам 0 12.05.2010 00:01
Исправление небольших ошибок - СПИСКИ Lexeres Помощь студентам 2 07.04.2010 14:40
Исправление ошибок в проге Juhn Паскаль, Turbo Pascal, PascalABC.NET 11 16.01.2008 18:17