Вывести таблицу зависимости силы взаимодействия двух точечных зарядов от их величин q1 и q2 - C#
Формулировка задачи:
Реализовать программу, которая выводит на дисплей таблицу зависимости силы взаимодействия двух точечных зарядов от их величин q1 и q2. Интервалы и шаги изменения значений зарядов, диэлектрическая проницаемость среды и расстояние между зарядами задаются пользователем. Применить цветное выделение тех значений силы, превышающие некоторое критическое значение, заданное пользователем. Предусмотреть возможность выбора пользователем единицы измерения зарядов (мкКл, мКл, Кл), а также точности исходных значений (количества знаков после запятой).
Можете помочь очень нужно сдать лабу а в физике ни бе ни ме и получаеться что сделать не могу(
Решение задачи: «Вывести таблицу зависимости силы взаимодействия двух точечных зарядов от их величин q1 и q2»
textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Console_CSharp
{
class Program
{
static void Main(string[] args)
{
Console.Title = "lol";
double MaxCurrent;
double k, r, E1;
double q2start, q2stop, q2step;
double q1start, q1stop, q1step;
double E = 8.85 * Math.Pow(10, -12);
int Precision;
string TimeUnit;
Console.WriteLine("Введите единицу времени ('мкКл', 'мКл' або 'Кл'):");
TimeUnit = Console.ReadLine();
switch (TimeUnit)
{
case "мкКл" : k = 1 * Math.Pow(10, -6); break;
case "мКл" : k = 1 * Math.Pow(10, -3); break;
case "Кл" : k = 1; break;
default:
k = 1;
TimeUnit = "Кл";
Console.WriteLine("Будет использовано единицу '" + TimeUnit + "'!");
break;
}
Console.WriteLine("Введите максимальное критическое значение, (" + TimeUnit + ")");
MaxCurrent = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("Введите начальное, конечное и шаговое значение сопротивления нагревателя, К:");
q2start = Convert.ToDouble(Console.ReadLine());
q2stop = Convert.ToDouble(Console.ReadLine());
q2step = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("Введите начальное, конечное и шаговое значение напряжения питания, К:");
q1start = Convert.ToDouble(Console.ReadLine());
q1stop = Convert.ToDouble(Console.ReadLine());
q1step = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("Введите растояния, м:");
r = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("Введите относительную, Е:");
E1 = Convert.ToDouble(Console.ReadLine()) * E;
Console.WriteLine("Введите точность исчисления (количество знаков после комы):");
Precision = Convert.ToInt32(Console.ReadLine());
Console.Clear();
Console.ForegroundColor = ConsoleColor.Green;
Console.Write("\t");
for (double q1 = q1start; q1 <= q1stop; q1 += q1step)
{
Console.Write("{0, " + (5 + Precision) + ":F0} Кл ", q1);
}
Console.WriteLine();
for (double q2 = q2start; q2 <= q2stop; q2 += q2step)
{
Console.ForegroundColor = ConsoleColor.Blue;
Console.Write("{0:F0} Кл\t", q2);
for (double q1 = q1start; q1 <= q1stop; q1 += q1step)
{
double Z = Math.Abs(q1) * Math.Abs(q2);
double F = k * (Z / E * Math.Pow(r, 2));
Console.ForegroundColor = Z > MaxCurrent ? ConsoleColor.Red :
ConsoleColor.White;
Console.Write("{0, 6:E" + Precision + "} ", F);
}
Console.WriteLine();
}
Console.WriteLine("\nНажмите кнопку для завершения...");
Console.ReadKey(true);
}
}
}