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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.11.2011, 14:10   #1
PROkaZZZniK
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 121
По умолчанию C# создание цикла

Здравствуйте!
Не как не могу создать цикл для Мишени.

код для мишени без цикла:

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

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            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("мимо");
        }
    }
}

Задача такая - я ввожу радиус, а программа сама генерирует наборы точек, для которых проверяется попадание. Количество этих точек задается с клавиатуры.
PROkaZZZniK вне форума Ответить с цитированием
Старый 17.11.2011, 15:21   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Задача такая - я ввожу радиус, а программа сама генерирует наборы точек, для которых проверяется попадание. Количество этих точек задается с клавиатуры.
в смысле - "генерирует" ? Случайным образом?
дык, если не нужно проверять на то, что такая точка была ранее,
можно так:
Код:
            Double x, y, R;//x=y=R=0
            Console.WriteLine("Введите R = ");
            R = Convert.ToDouble(Console.ReadLine());

            Console.WriteLine("Введите количество точек внутри мишени = ");
            int KPoint = Convert.ToInt32(Console.ReadLine());

            // начало генерации точек
            Random rnd = new Random(DateTime.Now.Millisecond);              

            for (int i=0;i<KPoint;i++)
            {
                
                x = ((rnd.Next(2) == 0) ? -1.0 : 1.0) * rnd.NextDouble() * R;
                y = ((rnd.Next(2) == 0) ? -1.0 : 1.0) * rnd.NextDouble() * R ;
                while ((x*x + y*y)>R*R)
                {
                    y = ((rnd.Next(1) == 0) ? -1.0 : 1.0) * rnd.NextDouble() * R;
                } 
                // y = ((rnd.Next(1) == 0) ? -1.0 : 1.0) * rnd.Next( Convert.ToInt32(Math.Sqrt(R * R - x * x)) );
                Console.WriteLine("Точка X={0} Y={1}", x,y);
            }

            Console.WriteLine("жми эни кей для выхода...");
            Console.ReadKey();
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.11.2011, 20:25   #3
PROkaZZZniK
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 121
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
в смысле - "генерирует" ? Случайным образом?
дык, если не нужно проверять на то, что такая точка была ранее,
можно так:
да так тоже можно, спасибо.

А не могли бы вы мне помочь с еще 1 циклом
Код:
static void Main()
        {
            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();
        }

    }
}
его тоже надо переделать в цикл для набора точек. С клавиатуры вводиться только радиус, на основе него определяется ширина графика, шаг изменения x. И затем для этого набора x производится расчет значений функции. Вывод идет в виде таблицы.
PROkaZZZniK вне форума Ответить с цитированием
Старый 17.11.2011, 22:47   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
его тоже надо переделать в цикл для набора точек. С клавиатуры вводиться только радиус, на основе него определяется ширина графика, шаг изменения x. И затем для этого набора x производится расчет значений функции. Вывод идет в виде таблицы.
извините, но я не понял, какая помощь требуется (ну что Вам нужно изменить...)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 18.11.2011, 07:26   #5
PROkaZZZniK
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 121
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
извините, но я не понял, какая помощь требуется (ну что Вам нужно изменить...)
а так...
Вычислить и вывести на экран в виде таблицы значения ф-и, заданной графически,на интервале от Хнач до Хкон с шагом Dx. Интервал и шаг задать таким образом чтобы проверить все ветви программы.

Последний раз редактировалось PROkaZZZniK; 18.11.2011 в 17:05.
PROkaZZZniK вне форума Ответить с цитированием
Старый 18.11.2011, 18:40   #6
PROkaZZZniK
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 121
По умолчанию

Переделать в цикл

Код:
static void Main()
        {
            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();
        }

    }
}
Задание - Вычислить и вывести на экран в виде таблицы значения ф-и, заданной графически,на интервале от Хнач до Хкон с шагом Dx. Интервал и шаг задать таким образом чтобы проверить все ветви программы.
PROkaZZZniK вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание цикла переноса столбцов Keshunya Microsoft Office Excel 4 07.12.2010 13:00
Создание цикла переноса данных из одного диапозона в другой Freerider1972 Microsoft Office Excel 7 30.10.2010 22:15
Создание цикла в Access NickiBell Помощь студентам 1 17.09.2010 12:10
Создание цикла LENA_M Microsoft Office Excel 2 23.06.2009 11:19
Создание цикла. lexusus Общие вопросы C/C++ 6 27.05.2008 17:38