Копипаст
Учим C# зная basic
Цель данной темы: разместить в интернет программы
по каким возможно быстро выучить C# зная basic
Никому никогда ничего не рекомендую и всегда пишу только про себя
Программы созданы мной на основе моей главной программы
где запрограммирован мой алгоритм в нескольких вариантах
и теперь программирую на C# сразу без перевода из basic
? Почему C# & basic?
Потому что компилируемые и есть онлайн компиляторы
и компилятор C# включен в Windows 7 Framework
Программы проверены: работают и каждый может проверить
и лично я компилирую и стартую через простейший bat
Квадратное уравнение qb64
' quadratic equation QB64 DAV INPUT "INPUT A"; A INPUT "INPUT B"; B INPUT "INPUT C"; C D = B ^ 2 - 4 * A * C IF D < 0 THEN PRINT "D<0 ": END PRINT "OTBET: " PRINT "D ="; D X1 = (-B + SQR(D)) / (2 * A) X2 = (-B - SQR(D)) / (2 * A) PRINT "X1 ="; X1 PRINT "X2 ="; X2 ENDКвадратное уравнение C#
// quadratic equation C# DAV using System; using System.Text; using System.IO; namespace DAV { class Program { static void Main(string[] args) { Console.Write("INPUT A: "); long a = Convert.ToInt32(Console.ReadLine()); Console.Write("INPUT B: "); long b = Convert.ToInt32(Console.ReadLine()); Console.Write("INPUT C: "); long c = Convert.ToInt32(Console.ReadLine()); long d = (b * b - 4 * a * c); Console.WriteLine("OTBET: "); Console.Write("D = "); Console.WriteLine(d); var x1 = (-b + Math.Sqrt(d)) / (2 * a); var x2 = (-b - Math.Sqrt(d)) / (2 * a); Console.Write("X1 = "); Console.WriteLine(x1); Console.Write("X2 = "); Console.WriteLine(x2); Console.ReadKey(); } } }
'Угадай число RANDOMIZE TIMER s = INT(RND * 100) t = 0 10 PRINT: t = t + 1: INPUT "your variant"; a IF a < s THEN PRINT "need MORE": GOTO 10 IF a > s THEN PRINT "need less": GOTO 10 PRINT "win by"; t; "steps" END
//Угадай число using System; using System.Text; namespace DAV { class Program { static void Main(string[] args) { Random rand = new Random(); int s = rand.Next(100); int t = 0; dav: Console.WriteLine(); t++; Console.Write("your variant "); string d = Console.ReadLine(); int a = Convert.ToInt32(d); if(a > s) { Console.WriteLine("need less"); goto dav; } else if(a < s) { Console.WriteLine("need MORE"); goto dav; } Console.Write("win by "); Console.Write(t); Console.Write(" steps"); Console.ReadKey(); } } }
'Угадывает 1 из 1000000 RANDOMIZE TIMER t=0:h1=0:h2=10^6 c=INT(RND*h2) 'comp h=INT(RND*h2) 'human 10 t=t+1: PRINT t; c; h; IF h<c THEN PRINT "MORE": a=h: h=INT((h+h2)/2): h1=a: GOTO 10 IF h>c THEN PRINT "less": a=h: h=INT((h1+h)/2): h2=a: GOTO 10 PRINT "win by "; t; " steps" END
//Угадывает 1 из 1000000000 за =log(10^9;2) за 30 ходов <br />// <a href="http://rextester.com/JRGX29275">rextester.com/JRGX29275</a> // онлайн проверка using System; using System.Text; namespace DAV { class Program { static void Main(string[] args) { int h2 = 1000000000;//or 500 int h1 = 0; Random rand = new Random(); int c = rand.Next(h2); //computer int h = rand.Next(h2); //human or h2/2; int t = 0; dav: t++; Console.WriteLine(); Console.Write(t); Console.Write(" "); Console.Write©; Console.Write(" "); Console.Write(h); Console.Write(" "); if(h < c) { Console.Write("MORE"); int a = h; h = (h + h2) / 2; h1 = a; goto dav; } else if(h > c) { Console.Write("less"); int a = h; h = (h1 + h) / 2; h2 = a; goto dav; } Console.Write("win by "); Console.Write(t); Console.Write(" steps"); Console.ReadKey(); } } }
' псевдо 3д рельеф под 45 ' с разными высотами и массив SCREEN 12 RANDOMIZE TIMER DIM a(12, 12) FOR t = 1 TO 12 FOR x = 1 TO 12 FOR y = 1 TO 12 a(x, y) = INT(RND * 20) NEXT: NEXT CLS FOR y = 1 TO 12 FOR x = 1 TO 11 LINE (50 + 20 * x + 20 * y, 400 - 20 * y - a(x, y))-(50 + 20 * (x + 1) + 20 * y, 400 - 20 * y - a(x + 1, y)), y FOR z = 1 TO 2 * 10 ^ 5: NEXT ' SLEEP 1 NEXT: NEXT FOR x = 1 TO 12 FOR y = 1 TO 11 LINE (50 + 20 * x + 20 * y, 400 - 20 * y - a(x, y))-(50 + 20 * (x + 1) + 20 * y, 400 - 20 * (y + 1) - a(x, y + 1)), x FOR z = 1 TO 2 * 10 ^ 5: NEXT ' SLEEP 1 NEXT: NEXT SLEEP 1 NEXT END
//daRELIEF.cs using System; using System.Drawing; using System.Windows.Forms; class daRELIEF: Form { public static void Main() { Application.Run(new daRELIEF()); } public daRELIEF() { Text = "daRELIEF"; BackColor = System.Drawing.Color.Blue; ForeColor = System.Drawing.Color.Red; ResizeRedraw = true; Width = 600; Height = 360; } protected override void OnPaint(PaintEventArgs dan) { int[,] a = new int[22, 22]; Random rand = new Random(); Graphics da = dan.Graphics; SolidBrush BlueBrush = new SolidBrush(Color.Blue); for (int k = 1; k < 22; k++) //da: { // массив высот for (int x = 1; x <=12; x++) for (int y = 1; y <=12; y++) a[x,y]=rand.Next(20); da.FillRectangle(BlueBrush, 20, 20, 550, 300); // паралл Х красный for (int y = 1; y <=12; y++) for (int x = 1; x <=11; x++) da.DrawLine(new Pen(Color.Red, x/2), new Point(50+20*x+20*y, 300-20*y-a[x,y]), new Point(50+20*(x+1)+20*y, 300-20*y-a[x+1,y])); // паралл У красный for (int x = 1; x <=12; x++) for (int y = 1; y <=11; y++) da.DrawLine(new Pen(Color.Red, y/2), new Point(50+20*x+20*y, 300-20*y-a[x, y]), new Point(50+20*(x+1)+20*y, 300-20*(y+1)-a[x, y+1])); System.Threading.Thread.Sleep(1000); Array.Clear(a, 0, 22); }//k goto da; } }
//DAV.cs using System; using System.Drawing; using System.Windows.Forms; class DAV: Form { public static void Main() { Application.Run(new DAV()); } public DAV() { Text = "DAV"; BackColor = SystemColors.WindowText; ForeColor = SystemColors.Window; ResizeRedraw = true; Width = 600; Height = 360; } protected override void OnPaint(PaintEventArgs dan) { int[] x = new int[10]; int[] y = new int[10]; Random rand = new Random(); for (int i = 1; i <=8; i++) { x[i]=50+rand.Next(400); y[i]=50+rand.Next(200); } Graphics da = dan.Graphics; Pen pen = new Pen(ForeColor); for (int i = 1; i <=8; i++) da.DrawEllipse(new Pen(Color.Magenta, i), x[i]-10, y[i]-5, 20, 10); for (int i = 1; i <= 7; i++) { for (int j = i+1; j <= 8; j++) { Graphics dav = dan.Graphics; dav.DrawLine(new Pen(Color.Red, i), new Point(x[i], y[i]), new Point(x[j], y[j])); System.Threading.Thread.Sleep(200); } // j }//i System.Threading.Thread.Sleep(5000); Array.Clear(x, 0, 10); Array.Clear(y, 0, 10); } }параметрическая анимация
//cat.cs using System; using System.Drawing; using System.Windows.Forms; class cat: Form { public static void Main() { Application.Run(new cat()); } public cat() { Text = "cat"; BackColor = System.Drawing.Color.Blue; ForeColor = System.Drawing.Color.Red; ResizeRedraw = true; Width = 600; Height = 360; } protected override void OnPaint(PaintEventArgs dan) { Pen pen = new Pen(ForeColor); SolidBrush BlueBrush = new SolidBrush(Color.Blue); Graphics dav = dan.Graphics; for (int k = 1; k <=5; k++) for (int x = -50; x <=50; x++) { int y=0; if (x< 50) y=-x/5; if (x< 25) y= x/5; if (x<-25) y=-x/5; if (x<-50) y= x/5; dav.FillRectangle(BlueBrush, 0, 120, 600, 200); dav.DrawEllipse(new Pen(Color.Magenta, 3), x*k+195, 225, 10, -80); dav.DrawEllipse(new Pen(Color.Magenta, 3), x*k+200, 200, 100, 50); dav.DrawEllipse(new Pen(Color.Magenta, 3), x*k+280, y+170, 50, 50); dav.DrawEllipse(new Pen(Color.Magenta, 3), x*k+290, y+190, 10, 10);//x/5, x/5 dav.DrawEllipse(new Pen(Color.Magenta, 3), x*k+294, y+194, 2, 2); dav.DrawEllipse(new Pen(Color.Magenta, 3), x*k+310, y+190, 10, 10);//x/5, x/5 dav.DrawEllipse(new Pen(Color.Magenta, 3), x*k+314, y+194, 2, 2); dav.DrawEllipse(new Pen(Color.Magenta, 3), x*k+280, y+205, 25, 10); dav.DrawEllipse(new Pen(Color.Magenta, 3), x*k+310, y+205, 25, 10); dav.DrawLine(new Pen(Color.Magenta, 3), new Point(x*k+280, y+190), new Point(x*k+280, y+160)); dav.DrawLine(new Pen(Color.Magenta, 3), new Point(x*k+290, y+175), new Point(x*k+280, y+160)); dav.DrawLine(new Pen(Color.Magenta, 3), new Point(x*k+330, y+190), new Point(x*k+330, y+160)); dav.DrawLine(new Pen(Color.Magenta, 3), new Point(x*k+320, y+175), new Point(x*k+330, y+160)); dav.DrawLine(new Pen(Color.Magenta, 3), new Point(x*k+210, 240), new Point(x*k+210, 280)); dav.DrawLine(new Pen(Color.Magenta, 3), new Point(x*k+220, 230), new Point(x*k+220, 290)); dav.DrawLine(new Pen(Color.Magenta, 3), new Point(x*k+280, 230), new Point(x*k+280, 290)); dav.DrawLine(new Pen(Color.Magenta, 3), new Point(x*k+290, 240), new Point(x*k+290, 280)); dav.DrawEllipse(new Pen(Color.Magenta, 3), x*k+205, 275, 10, 10); dav.DrawEllipse(new Pen(Color.Magenta, 3), x*k+215, 285, 10, 10); dav.DrawEllipse(new Pen(Color.Magenta, 3), x*k+275, 285, 10, 10); dav.DrawEllipse(new Pen(Color.Magenta, 3), x*k+285, 275, 10, 10); System.Threading.Thread.Sleep(10); } } }
// name.cs // for copypaste filename cs bat exe // https://rextester.com/BXWC6536 // adress online using System; using System.Text; namespace name { class name { static void Main(string[] args) { int[,] a = new int[22,22]; Random rand = new Random(); for (int x = 1; x <=12; x++) for (int y = 12; y >=1; y--) a[x,y]=rand.Next(10); for (int x = 1; x <=12; x++) { for (int y = 12; y >=1; y--) { Console.Write(a[x,y]); Console.Write(" "); } Console.WriteLine(); } Console.ReadKey(); } } }Со временем понял про оформление циклов короче
http://rosettacode.org/wiki/Category:C_sharp
http://rosettacode.org/wiki/Category:QB64
Никому никогда ничего не рекомендую и всегда пишу только про себя
Надо объявлять переменные в C# жеж?
разве не
включились из программ аж 2: маятник и диагонали
данный фрагмент лучшего найденного образца
поэтому использую не думая
C#_за_час.mp4 55 МБ: просмотр пол-часа
_https://cloud.mail.ru/public/p495/7eiY8sbwB
ссылка без счётчика про начало C# видео
переведено в тёмный фон методом инверсии и искажения
basic не воспринимают всерьёз
//c# строковые функции и операции со строками
//c# из цифры строка и из строки цифра и код символа
//c# составление строк и разделение строк и сравнение строк
// rextester.com/RGTBXB16905
using System;
using System.Text;
namespace DAV
{
class Program
{
static void Main(string[] args)
{
string s = "";
Random rand = new Random();
for (int i = 1; i <= 64; i++)
{
int a = rand.Next(9);
string dop = (a.ToString());
s=s+dop;
Console.WriteLine(s);
}
int b = 2+rand.Next(8);
Console.WriteLine();
Console.WriteLine(«Место „);
Console.WriteLine(b);
if (s[b-1] == s[b])
Console.WriteLine(“Знаки Равны „);
else Console.WriteLine(“Знаки НЕ равны „);
Console.WriteLine(s[b-1]);
Console.WriteLine(s[b]);
string d1 =(s[b-1].ToString());
string d2 =(s[b].ToString());
string d = d1+d2;
Console.WriteLine(“Вместе „);
Console.WriteLine(d);
Console.WriteLine();
System.Threading.Thread.Sleep(5000);
string q = “»;
int sum = 0;
int k=3;
for (int i = 0; i <= s.Length-k; i++)
{
string e=(s.Substring(i,k));
Console.WriteLine(e);
string f=(s.Substring(i, 1));
q = q+f;
sum = sum + int.Parse(f);
Console.WriteLine(f);
Console.WriteLine(s);
Console.WriteLine(q);
Console.Write(«Сумма цифр „);
Console.WriteLine(sum);
Console.WriteLine();
System.Threading.Thread.Sleep(500);
}
for (int i = 121; i >= 32; i--)
Console.Write(Convert.ToChar(i));
Console.ReadKey();
System.Threading.Thread.Sleep(5000);
}
}
}
онлайн проверка
https://rextester.com/RGTBXB16905
и все могут в своих темах показать свои программы
особенно пригодные для онлайн компилятора
rextester.com
и соблюдающие принцип 1cs=1exe
чтоб компилировались без сред
а вместо goto всё больше использую циклы
или флаг для совпадения 2-х условий
но слишком сложные конструкции не заинтересовали
зато программы угадывающие квадриллион без goto:
C# Миллиард угадывает 1 из 1'000'OOO'ooo
за =log(10^9;2) за 30 ходов
using System; using System.Text; //Milliard.cs
namespace DANILIN
{ class Program
{ static void Main(string[] args)
{ Random rand = new Random();int t=0;
int h2=100000000; int h1=0; int f=0;
int comp = rand.Next(h2);
int human = rand.Next(h2);
while (f<1)
{ Console.WriteLine();Console.Write(t);
Console.Write(" ");Console.Write(comp);
Console.Write(" ");Console.Write(human);
if(comp < human)
{ Console.Write(" MORE");
int a=comp; comp=(comp+h2)/2; h1=a; }
else if(comp > human)
{ Console.Write(" less");
int a=comp; comp=(h1+comp)/2; h2=a;}
else {Console.Write(" win by ");
Console.Write(t); Console.Write(" steps");f=1;}
t++; }}}}
rextester.com/DYVZM84267
import random #quadrillion.py
rextester.com/JUNBW90242h1=0; h2=10**16;t=0; f=0
c = random.randrange(0,h2) #comp
h = random.randrange(0,h2) #human
while f<1:
print(t,c,h)
if h<c:
print('MORE')
a=h
h=int((h+h2)/2)
h1=a
elif h>c:
print('less')
a=h
h=int((h1+h)/2)
h2=a
else:
print('win by', t, 'steps')
f=1
t+=1
qbasic qb64 milliard
h1=0: h2=10^3: t=1: f=0: Randomize Timer 'daMilliard.bas
human = Int(Rnd*h2) 'human
comp = Int(Rnd*h2) 'comp
While f < 1
Print t; «human =»; human; " comp ="; comp;
If comp < human Then
Print " MORE": a=comp: comp=Int((comp+h2)/2): h1=a
Else If human < comp Then
Print " less": a=comp: comp=Int((h1+comp)/2): h2=a
Else If human=comp Then
Print " win by "; t; " steps": f=1
End If: End If: End If: t = t + 1
Wend: End
Результаты для диапазона от 1 до 100
1 40 11 MORE
2 40 55 less
3 40 33 MORE
4 40 44 less
5 40 38 MORE
6 40 41 less
7 40 39 MORE
8 40 40 win by 8 steps
и от возможности нескольких команд в 1-й строке
но программы на basic короче в разы
а другие языки вытянутые вертикально
в каталоге FrameWork где csc.exe
и другие сообщают у них стартует
csc.exe /nologo name.cs
pause
но неизвестно стартуют ли оконные с кнопками
и с элементами без среды программирования
и возможно нарисовать в qb & C#
и параметрически анимировать
другие программы C# & basic есть в теме
Русская сортировка половинами: человеческая сортировка быстрее в 4 раза и МЫ
smart-lab.ru/blog/copypaste/489819.php
и накануне распечатал мини книжку из данных программ
чтоб проверить: могут ли другие изучить
сначала подписывая комментарии в строки вручную
гистограмма
// rand file write read cursor pause time
// случайные файл запись чтение курсор пауза время
using System;
using System.Text;
using System.IO;
namespace DAV
{ class Program
{ static void Main(string[] args)
{ var start = DateTime.Now;
Random rand = new Random();
var outFile = new StreamWriter(«dav.txt»);
for (int i = 1; i <= 64; i++)
{ int a = 3+rand.Next(7);
outFile.WriteLine(a);
}
outFile.Close();
var inpFile = new StreamReader(«dav.txt»);
Console.Clear();
for (int i = 1; i <= 64; i++)
{ int b = Convert.ToInt32(inpFile.ReadLine());
Console.SetCursorPosition(i+5,5);
Console.Write(b);
for (int j = 1; j <= b; j++)
{ Console.SetCursorPosition(i+5,16-j);
Console.Write("*");
System.Threading.Thread.Sleep(100);
} }
inpFile.Close();
var finish = DateTime.Now;
Console.SetCursorPosition(30,17);
Console.Write(finish-start);
Console.ReadKey();
}}}
с расчётами при каждом изменении A B C
и с записью результатов на диск
//winquall.cs
using System;
using System.Windows.Forms;
using System.IO;
class winQUAll: Form
{
winQUAll()
{
Text= «winQUAll Например A=6 B=7 C=2»;
BackColor = System.Drawing.Color.Green;
ForeColor = System.Drawing.Color.Yellow;
ResizeRedraw = true;
Width = 400;
Height = 250;
{
var buttons = new Button();
buttons.Text= «SAVE»;
buttons.Dock = DockStyle.Bottom;
var zc = -7;
var labelc = new Label();
var buttonc = new Button();
buttonc.Text= «C+3»;
buttonc.Dock = DockStyle.Bottom;
var zb = 12;
var labelb = new Label();
var buttonb = new Button();
buttonb.Text= «B-1»;
buttonb.Dock = DockStyle.Bottom;
var za = 2;
var labela = new Label();
var buttona = new Button();
buttona.Text= «A+1»;
buttona.Dock = DockStyle.Bottom;
var labelx = new Label();
var d = (zb * zb — 4 * za * zc);
double x1 = (-zb + Math.Sqrt(d)) / (2 * za);
double x2 = (-zb — Math.Sqrt(d)) / (2 * za);
var labeld = new Label();
labeld.Text= «d= » + d +" X1= " + x1 + " X2= " + x2 + " ";
labeld.Dock = DockStyle.Top;
x1 = (Math.Truncate(x1 * 100))/100;
x2 = (Math.Truncate(x2 * 100))/100;
//labeld.Location = new System.Drawing.Point(80, 15);
labelx.Text= «X1=» + x1 + " X2=" + x2 + " ";
labelx.Location = new System.Drawing.Point(80, 37);
Controls.Add(labeld);
Controls.Add(labelx);
labelc.Text= «C=» + zc + ".....";
labelc.Location = new System.Drawing.Point(20, 100);
Controls.Add(labelc);
buttonc.Click += delegate
{
zc = zc+3;
d = (zb * zb — 4 * za * zc);
x1 = (-zb + Math.Sqrt(d)) / (2 * za);
x2 = (-zb — Math.Sqrt(d)) / (2 * za);
labeld.Text= «d= » + d +" X1= " + x1 + " X2= " + x2 + " ";
labeld.Dock = DockStyle.Top;
x1 = (Math.Truncate(x1 * 100))/100;
x2 = (Math.Truncate(x2 * 100))/100;
//labeld.Location = new System.Drawing.Point(80, 15);
labelx.Text= «X1=» + x1 + " X2=" + x2 + " ";
labelx.Location = new System.Drawing.Point(80, 37);
labelc.Text= «C=» + zc + " ...";
labelc.Location = new System.Drawing.Point(20, 100);
};
Controls.Add(buttonc);
Controls.Add(labeld);
Controls.Add(labelx);
labelb.Text= «B=» + zb + ".....";
labelb.Location = new System.Drawing.Point(20, 80);
Controls.Add(labelb);
buttonb.Click += delegate
{
zb--;
d = (zb * zb — 4 * za * zc);
x1 = (-zb + Math.Sqrt(d)) / (2 * za);
x2 = (-zb — Math.Sqrt(d)) / (2 * za);
labeld.Text= «d= » + d +" X1= " + x1 + " X2= " + x2 + " ";
labeld.Dock = DockStyle.Top;
x1 = (Math.Truncate(x1 * 100))/100;
x2 = (Math.Truncate(x2 * 100))/100;
//labeld.Location = new System.Drawing.Point(80, 15);
labelx.Text= «X1=» + x1 + " X2=" + x2 + " ";
labelx.Location = new System.Drawing.Point(80, 37);
labelb.Text= «B=» + zb + " ...";
labelb.Location = new System.Drawing.Point(20, 80);
};
Controls.Add(buttonb);
Controls.Add(labeld);
Controls.Add(labelx);
labela.Text= «A=» + za + ".....";
labela.Location = new System.Drawing.Point(20, 60);
Controls.Add(labela);
buttona.Click += delegate
{
za++;
d = (zb * zb — 4 * za * zc);
x1 = (-zb + Math.Sqrt(d)) / (2 * za);
x2 = (-zb — Math.Sqrt(d)) / (2 * za);
labeld.Text= «d= » + d +" X1= " + x1 + " X2= " + x2 + " ";
labeld.Dock = DockStyle.Top;
x1 = (Math.Truncate(x1 * 100))/100;
x2 = (Math.Truncate(x2 * 100))/100;
//labeld.Location = new System.Drawing.Point(80, 15);
labelx.Text= «X1=» + x1 + " X2=" + x2 + " ";
labelx.Location = new System.Drawing.Point(80, 37);
labela.Text= «A=» + za + " ...";
labela.Location = new System.Drawing.Point(20, 60);
};
Controls.Add(buttons);
buttons.Click += delegate
{
var outFile = new StreamWriter(«dan.txt»);
outFile.WriteLine(za);
outFile.WriteLine(zb);
outFile.WriteLine(zc);
outFile.WriteLine(d);
outFile.WriteLine(x1);
outFile.WriteLine(x2);
outFile.Close();
};
Controls.Add(buttona);
Controls.Add(labeld);
Controls.Add(labelx);
};
}
static void Main()
{
Application.Run(new winQUAll());
}
}
и формы: окна и кнопки
//poleQUA.cs
using System;
using System.Windows.Forms;
namespace poleQUA
{
public class Program
{
static void Main()
{
Application.Run(new poleQUA());
}
}
class poleQUA: Form
{
TextBox textBoxA, textBoxB, textBoxC;
Button buttonD;
public poleQUA()
{
textBoxA=new TextBox();
textBoxB=new TextBox();
textBoxC=new TextBox();
textBoxA.Location = new System.Drawing.Point(150, 50);
textBoxB.Location = new System.Drawing.Point(100, 100);
textBoxC.Location = new System.Drawing.Point(50, 150);
this.Controls.Add(textBoxA);
this.Controls.Add(textBoxB);
this.Controls.Add(textBoxC);
var labelq = new Label();
labelq.Text = «Input A= 6 & B= 7 & C= 2»;
labelq.Dock = DockStyle.Top;
Controls.Add(labelq);
var labelA = new Label();
labelA.Text = «A= »;
labelA.Location = new System.Drawing.Point(130, 52);
Controls.Add(labelA);
var labelB = new Label();
labelB.Text = «B= »;
labelB.Location = new System.Drawing.Point(80, 102);
Controls.Add(labelB);
var labelC = new Label();
labelC.Text = «C= »;
labelC.Location = new System.Drawing.Point(30, 152);
Controls.Add(labelC);
buttonD = new Button();
buttonD.Location = new System.Drawing.Point(100, 200);
buttonD.Text = «D= x1= x2=»;
buttonD.Click+=buttonD_Click;
this.Controls.Add(buttonD);
}
private void buttonD_Click(object sender, EventArgs e)
{
int za = Convert.ToInt32(textBoxA.Text);
int zb = Convert.ToInt32(textBoxB.Text);
int zc = Convert.ToInt32(textBoxC.Text);
double d = (zb * zb — 4 * za * zc);
double x1 = (-zb + Math.Sqrt(d)) / (2 * za);
double x2 = (-zb — Math.Sqrt(d)) / (2 * za);
string dd = (d.ToString());
string xx1 = (x1.ToString());
string xx2 = (x2.ToString());
string m = «D= » + dd + " x1= " + xx1 + " x2= " + xx2;
{
MessageBox.Show(m);
}
}
}
}
rextester.com/HOR30031
результаты: 26 31 2 23 15
5 -24 -3 -11 -29 -8 -16 21 13 -8
rextester.com/YTEV67279
результаты:
9 19 12 6 24
6 9 12 19 24
3 3 7 5
особенность программ:
легко переделать ряд строк в 1 строку вида:
{var temp = b; b = a; a = temp;}
и применяется комбинаторика
1 IF Russia = 0 THEN Russia = 2222: RANDOMIZE TIMER: num = INT(RND * 100) + 1: GOTO 1 ELSE IF Russia <> 0 THEN INPUT n: IF n < num THEN PRINT «MORE»: GOTO 1 ELSE IF n > num THEN PRINT «less»: GOTO 1 ELSE IF n = num THEN PRINT «da»: END ELSE GOTO 1 'DANILIN Russia 9-9-2019 guessnum.bas
qbasic version of «guess my number game» 1 line
c# игра угадай число: 1 строка
using System; using System.Text; namespace DANILIN { class Program { static void Main(string[] args) { Random rand = new Random(); int Russia = 0; int n = 0; int num = 0; dav: if(Russia == 0) {Russia = 2222; num = rand.Next(10)+1; goto dav; } else if (Russia != 0) {Console.Write("? "); n = rand.Next(10)+1; Console.Write(" {0} {1} ", num, n); } if (n < num) { Console.WriteLine(«MORE»); goto dav; } else if (n > num) { Console.WriteLine(«less»); goto dav; } else if (n == num) {Console.Write(«da»); } else goto dav; } } } // n = Convert.ToInt32(Console.ReadLine()); Console.ReadKey(); DANILIN Russia 9-9-2019 rextester.com/XZGC82928 guessnum.cs
c# version of «guess my number game» 1 line
// strundos.cs
// строка бегущая с востока на запад и слева направо
// вводятся тексты и ширина экрана влияет на скорость
// rextester.com/TQFHVE3360
// ideone.com/MoC86R
using System; using System.Text; namespace DAV
{ class Program { static void Main(string[] args)
{ int ekran = 44; string space = " ";
string ost = «Экспорт Ориентированное Импорто Замещение»;
string west = «Export Oriented Replace of Import»;
for (int i = 1; i <= ekran+20; i++) {space = space + " ";}
ost = space + ost + space;
west = space + west + space;
for (int i = 1; i <= west.Length-ekran -1; i++)
{ Console.SetCursorPosition(0,2);
Console.Write(ost.Substring(i, ekran ));
Console.SetCursorPosition(0,5);
Console.Write(west.Substring(west.Length-ekran +1-i, ekran ));
System.Threading.Thread.Sleep(100-ekran);}
Console.ReadKey(); System.Threading.Thread.Sleep(100); }}}
' strunqb64.bas
' running strings from ost to west and from left to right
' plus width of screen include in velocity
ost$ = «Russian Export Orientirovannoe Importo Zameschenie»
west$ = «Russian Export Oriented Replace of Import»
ekran = 66: s$ = " ": FOR i = 1 TO ekran + 10: s$ = s$ + " ": NEXT
ost$ = s$ + ost$ + s$: west$ = s$ + west$ + s$
ost = LEN(ost$): west = LEN(west$)
FOR i = 1 TO west — ekran
LOCATE 2, 1: PRINT MID$(ost$, i, ekran)
LOCATE 5, 1: PRINT MID$(west$, west — ekran + 1 — i, ekran)
_DELAY (.1 — ekran / 1000)
' FOR j = 1 TO 10 ^ 7 — ekran ^ (1.5) * 1 * 10 ^ 4: NEXT
NEXT
' running strings from ost to west and from left to right
' multi-string plus width of screen include in velocity
DIM q$(5): ekran = 55: s$ = " "
FOR i = 1 TO ekran + 10: s$ = s$ + " ": NEXT
q$(1) = «RRR U U SSS SSS I A N N III QQ „
q$(2) = “R R U U S S I AAA NN N I Q Q „
q$(3) = “RR U U SSS SSS I A A N NN I Q Q „
q$(4) = “R R U U S S I AAA N N I Q QQ „
q$(5) = “R R UUU SSS SSS I A A N N III QQ Q»
FOR i = 1 TO 5: q$(i) = s$ + q$(i) + s$: NEXT: q = LEN(q$(1))
FOR n = 1 TO 5: FOR i = 1 TO q — ekran: FOR j = 1 TO 5
LOCATE j + 5, 5: COLOR j + i / 15: PRINT MID$(q$(j), i, ekran)
LOCATE j + 15, 5: COLOR j + i / 22: PRINT MID$(q$(j), q — ekran + 1 — i, ekran)
NEXT: _DELAY (.1 — ekran / 3000): NEXT: NEXT
' dadraka.bas
start = TIMER
DIM a(5)
FOR u = 1 TO 9: a(1) = u
FOR d = 1 TO 9: a(2) = d
FOR a = 0 TO 9: a(3) = a
FOR r = 0 TO 9: a(4) = r
FOR k = 0 TO 9: a(5) = k
FOR x = 1 TO 4
FOR y = x + 1 TO 5
IF a(x) = a(y) THEN GOTO 55
NEXT y: NEXT x
udar = 1000 * u + 100 * d + 10 * a + r
draka = d * 10000 + r * 1000 + a * 100 + k * 10 + a
IF udar + udar = draka THEN PRINT udar, draka
55 NEXT k: NEXT r: NEXT a: NEXT d: NEXT u
finish = TIMER
PRINT finish — start
END
Классическая задача про рюкзак решается многими способами
оглавление: rosettacode.org/wiki/Knapsack_problem
Long read: rosettacode.org/wiki/Knapsack_problem/0-1
Новейшая моя программа синтезирует все шифры 0 и 1
добавляя лишний регистр и 0 остаются слева в шифре
Количество сравнений уменьшается с N! до 2^N
например N=5 N!=120 >> 2^N=32
Автоматически присваиваются случайные значения
количества и качества и получается интеграл стоимости
причём возможно и делить только любой человек не поймёт
Программа пишет в каталог qb64
Open «knapsack.txt» For Output As #1
N=7: L=5: a = 2^(N+1): Randomize Timer 'knapsack.bas DANILIN
Dim L(N), C(N), j(N), q(a), q$(a), d(a)
For m=a-1 To (a-1)/2 Step -1: g=m: Do ' sintez shifr
q$(m)=LTrim$(Str$(g Mod 2))+q$(m)
g=g\2: Loop Until g=0
q$(m)=Mid$(q$(m), 2, Len(q$(m)))
Next
For i=1 To N: L(i)=Int(Rnd*3+1) ' lenght & cost
C(i)=10+Int(Rnd*9): Print #1, i, L(i), C(i): Next ' origin
For h=a-1 To (a-1)/2 Step -1
For k=1 To N: j(k)=Val(Mid$(q$(h), k, 1)) ' from shifr
q(h)=q(h)+L(k)*j(k)*C(k) ' 0 or 1
d(h)=d(h)+L(k)*j(k)
Next
If d(h) <= L Then Print #1, d(h), q(h), q$(h)
Next
max=0: m=1
For i=1 To a: If d(i)<=L Then If q(i) > max Then max=q(i): m=i
Next
Print #1,: Print #1, d(m), q(m), q$(m): End
Результат сокращён вручную
1 2 17
2 2 14
3 2 17
4 1 11
5 2 18
6 3 14
7 3 10
5 73 1101000
4 62 1100000
5 79 1011000
4 68 1010000
2 28 0100000
5 81 0011100 !!!
3 45 0011000
4 70 0010100
5 76 0010010
2 36 0000100
5 81 0011100
Главное очень кратко и понятно даже школьникам
Knapsack 0-1 & rosettacode & qbasic qb64 & WE
For all people: send yours algorithms to rosettacode
otherwise forum may disappear even in google search
Classic Knapsack problem is solved in many ways
Contents: rosettacode.org/wiki/Knapsack_problem
Long read: rosettacode.org/wiki/Knapsack_problem/0-1
Previous topics and long programs: Knapsack
qb64forum.alephc.xyz/index.php?topic=3091
Ordered Combinations Generator
qb64forum.alephc.xyz/index.php?topic=2999
My newest program synthesizes all ciphers from 0 & 1
adding an extra register and 0 remain on left in cipher
Number of comparisons decreases from N! to 2^N
for example N=5 N!=120 >> 2^N=32
Random values origin are automatically assigned
quantity and quality and integral of value is obtained
and it is possible to divide only anyone will not understand
Program write results to qb64 directory
Main thing is very brief and clear to even all
Results is reduced manually