Перейти к содержанию
СофтФорум - всё о компьютерах и не только

Заказы "Сделайте все за меня"


Рекомендуемые сообщения

тут такое дело.

Надо эмулировать движение курсора мыши, начало движения координата 0х0 относительно рабочего стола, далее программа должна двигать курсор мыши ((именно двигать, а не моментально перемешать в указанную координатами точку), двигаться она должна по заданной траектории, ну например: Курсор должен двигаться так, как будто рисует квадрат на рабочем столе. думаю понятно описал.

помогите пожалуйста =\\

Ссылка на комментарий
Поделиться на другие сайты

-Дельфи-

В общем на других форумах поспрашивал не помогли.

Написать программу сортировки методом отбора.

Например, если бы строка "dcab" сортировалась методом отбора, то каждый из проходов давал бы результат:

Исходный массив Dcab

Проход 1 Acdb

Проход 2 Abdc

Проход 3 Abcd

Я смотрю примеры с цифрами есть а как с символами-сделать не пойму-

и 2 задача--- создании программы сортировки методом Шелла.

Проход1 F D A C B E

Проход1 C B A F D E

Проход1 A B C F D E

Результат A B C D E F

Я новичок в Дельфи . А с этим надо разобраться....хотябы принцип в каком направлении двигаться

Или может ссылки дадите на то как с этим разобраться

Заранее спасибо!

Ссылка на комментарий
Поделиться на другие сайты

Eugene On:

Судя по работе алгоритма, "метод отбора" чаще называют методом сортировки выбором.

Довольно полное перечисление методов сортировки есть, например, на этой странице. Ссылки с нее ведут на более подробные описания и реализации этих методов на разных языках программирования, в том числе на Pascal - урезанном варианте Delphi.

Я смотрю примеры с цифрами есть а как с символами-сделать не пойму
Точно так же. Цифра - один из видов символов. Буквы и другие символы, как и цифры, можно сравнивать операциями сравнения. Фактически при этом сравниваются номера этих символов в расширенном алфавите, включающем латинские и русские строчные и заглавные буквы, цифры и специальные зеаки вроде точки или восклицательного знака.
Ссылка на комментарий
Поделиться на другие сайты

Ну я так понял надо перевести символы в цифровое значение а затем прокрутив цикл-вернуть символьное значение.

А вот подробности я не знаю.... ;)

Ссылка на комментарий
Поделиться на другие сайты

Не надо ничего переводить в цифровое значение. Компьютер работает не с цифрами. И даже не с числами. Компьютер работает с кодами.

Для примера: сортировка методом выбора вводимой строки. В начале отсортированной строки окажутся цифры в порядке возрастания, потом заглавные буквы в алфавитном порядке, за ними - строчные буквы в алфавитном порядке. Почему так? Потому что в таком порядке идут коды, представляющие символы.

Фактически программа взята из страницы по приведенной мной ссылке. При этом даже текст программы оставлен без изменений, добавлено только обрамление вводом и выводом на экран.

program sort;var a:string; t:char; i,j,n,min:integer;beginwriteln('Enter the string:'); readln(a); n:=length(a);for i:=1 to n-1 dobegin min:=i; for j:=i+1 to n do if a[min]>a[j] then min:=j; t:=a[i]; a[i]:=a[min]; a[min]:=t;end;writeln(a); readlnend.
Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

Да! Принцип мне понятен-у меня трудность вызывает как всё это через кнопку сделать в форме.

пытаюсь собрать но не работает-куча ошибок.

Ссылка на комментарий
Поделиться на другие сайты

procedure TForm1.Button1Click(Sender: TObject);

const

SIZE = 10;

var

b: array[1..SIZE] of byte;

a: array[1..SIZE] of integer ;

min: integer;

j: integer;

buf: integer;

i, k: integer;

begin

for i := 1 to SIZE do

b:= StrToInt(StringGrid1.Cells); label2.caption := '';

b:=ord(a);

begin

for i := 1 to SIZE - 1 do

min := i;

for j := i + 1 to SIZE do

if a[j] < a[min] then

min := j;

buf := a;

a := a[min];

a[min] := buf;

{ begin

for i:=1 to size do}

a:=chr(b); -ошибочка вышла- uncompatible types

for k := 1 to SIZE do

Label2.caption := label2.caption + ' ' + IntTostr(a[k]);

Label2.caption := label2.caption + #13;

end;

Label2.caption := label2.caption + #13 + 'Массив отсортирован.';

end;

end.

Ссылка на комментарий
Поделиться на другие сайты

Eugene On:

Как вот это момент переделать
Негодование компилятора по поводу синтаксиса устранит изменение красной строки на a:=b;

Но это не поможет, ибо все остальное (кроме готового текста сортировки) выглядит бессмысленным набором команд. Хотя прослеживается какая-то попытка преобразовать коды символов в целые числа и обратно, непонятно зачем. Сравнивать и переставлять символы (любые - цифры, буквы) можно точно так же, как числа. Римляне вообще не различали букв и цифр.

Вообще начинать надо с консольных приложений, а не с работы с компонентами Windows.

P.S. Начинать надо было бы с формулировки задания. Написать программу сортировки - чего?

А потом сделать работающую консольную программу. А потом заменить ее ввод-вывод с простых процедур ввода-вывода на использование компонентов графического интерфейса Windows.

Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

Постановка задачи такая: Сортировка массива символов методом прямого выбора

Например массив D A C F E B нужно отсортировать к виду А В С В E F

Нашел где то похожую задачу -решение через функцию -но она оказалась не рабочая или где то что то потерял в ней

если не трудно посмотрите что тут не так.....

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

type

TForm1 = class(TForm)

Edit1: TEdit;

Button1: TButton;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

function GetSubStr(st:string; expl:string; n:integer):string;

procedure TForm1.Button1Click(Sender: TObject);

var i,k,j,min:integer;

buf:integer;

a:array[1..10] of integer;

st:string;

begin

for i:=1 to 10 do

a:=StrToInt(GetSubStr(Edit1.Text,'',i))

for i:=1 to 10-1 do // êîëè÷. ýë -1

begin

min:=i;

for j:=i+1 to 10 do

if a[j] < a[min] then min:=j;

buf:=a;

a:a[min];

a[min]:=buf;

end;

for k:=1 to 10 do

Form1.Caption:=Form1.Caption +''+IntToStr(a[k]);

end;

end.

Ссылка на комментарий
Поделиться на другие сайты

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Buttons;

type

TForm1 = class(TForm)

Edit1: TEdit;

Button1: TButton;

BitBtn1: TBitBtn;

procedure Button1Click(Sender: TObject);

procedure BitBtn1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

function GetSubStr(st:string; expl:string; n:integer):string;

Var p,i:integer;

Begin

for i:= 1 to n-1 do

begin

p:=pos(expl,st);

st:=copy(st,p+1,Length(st)-p);

while (pos(expl,st)=1) and (length(st)>0) do

delete(st,1,1);

end;

p:=pos(expl,st);

if p<>0 then result:=copy(st,1,p-1)

else result:=st;

End;

procedure TForm1.Button1Click(Sender: TObject);

var i,k,j,min:integer;

buf:integer;

a:array[1..10] of integer;

st:string;

begin

//ââåäåì ìàññèâ

for i:=1 to 10 do

a:=StrToInt(GetSubStr(Edit1.text,' ',i));

for i:=1 to 10 - 1 do

begin

min:=i;

for j:=i+1 to 10 do

if a[j] < a[min] then min:=j;

buf:=a;

a:=a[min];

a[min]:=buf;

end;

for k:=1 to 10 do

Form1.Caption:=Form1.caption + ' '+ IntToStr(a[k]);

end;

procedure TForm1.BitBtn1Click(Sender: TObject);

begin

close;

end;

end.

Вот точный листинг(полный) сама программа запускается но вот при попытке нажать кнопку сортировать -вылетает ошибка и всё виснет

В общем все запускаеться и работате но только с цифрой а вот если вывожу буквы возникает проблемы -хотя должно вроде и с буквами работать

Сильно не пинайте! Сори за Флуд!

Ссылка на комментарий
Поделиться на другие сайты

Вот точный листинг(полный) сама программа запускается но вот при попытке нажать кнопку сортировать -вылетает ошибка и всё виснет
Что-то очень запутанное. Гораздо проще написать заново.
unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm)Label1: TLabel;Edit1: TEdit;procedure Edit1KeyPress(Sender: TObject; var Key: Char);end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);var a:string; t:char; i,j,n,min:integer;beginif Key=#13 thenbegina:=Edit1.Text; n:=length(a);for i:=1 to n-1 dobegin min:=i; for j:=i+1 to n do if a[min]>a[j] then min:=j; t:=a[i]; a[i]:=a[min]; a[min]:=t;end;end;Label1.Caption:=a;end;end.

В конце ввода строки, подлежащей сортировке, как обычно, нажимается Enter и появляется отсортированная строка.

P.S. Так как в текст модуля не вошли начальные значения, их надо будет задать прямо в параметрах компонентов перед компиляцией - красивый большой шрифт и пустые начальные значения строк в компонентах.

Ссылка на комментарий
Поделиться на другие сайты

Всем привет!

У меня вопрос по С#, мне нужно сделать часики, в которых секундная стрелка идет по часовой, а минутная и часовая - против.

Я вот немножко начал писать, но все не могу никак разобраться с трансформацией и таймером.

вот код:

int x = 1;

public Form1()

{

InitializeComponent();

}

private void Form1_Paint(object sender, PaintEventArgs e)

{

e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;

e.Graphics.TranslateTransform(200,200);

e.Graphics.RotateTransform(x);

e.Graphics.TranslateTransform(-200,-200);

e.Graphics.DrawLine(Pens.Blue, 200, 200, 200, 100);

e.Graphics.ResetTransform();

System.Drawing.Graphics graphics = this.CreateGraphics();

System.Drawing.Rectangle rectangle = new System.Drawing.Rectangle(

100, 100, 200, 200);

graphics.DrawEllipse(System.Drawing.Pens.Black, rectangle);

}

private void Form1_MouseMove_1(object sender, MouseEventArgs e)

{

Text = e.Location.ToString();

}

private void timer1_Tick(object sender, EventArgs e)

{

x++;

Invalidate();

}

}

Это только начало, одна прямая и круг. Обьясните плз работу RotateTransform и TranslateTransform, и как сделать, чтобы еще две прямые шли в обратном направлении, и как рассчитать таймер именно так, чтобы секундная стрелка шла за 60 сек круг, а минутная через минуту на некую координату сходила влево?

заранее спсб.

Ссылка на комментарий
Поделиться на другие сайты

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

namespace Clock

{

public partial class MainWindow : Form

{

public MainWindow()

{

InitializeComponent();

this.Text = String.Format("Часы были включены: {0}", DateTime.Now);

CenterToScreen();

this.DoubleBuffered = true;

SetStyle(ControlStyles.ResizeRedraw, true);

}

protected void timer_Tick(object sender, EventArgs e)

{

Invalidate();

}

void DrawHand(Graphics g, Brush brush, int lenght)

{

Pen p = new Pen(brush, 3);

p.EndCap = System.Drawing.Drawing2D.LineCap.DiamondAnchor;

g.DrawLine(p, 0, 0, lenght, 0);

}

protected override void OnPaint(PaintEventArgs e)

{

Graphics g = e.Graphics;

g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;

SolidBrush red = new SolidBrush(Color.Red);

SolidBrush white = new SolidBrush(Color.White);

SolidBrush blue = new SolidBrush(Color.Blue);

SolidBrush Green = new SolidBrush(Color.Green);

InitializeTransform(g);

for (int i = 0; i < 60; i++)

{

if (i % 5 == 0)

g.DrawLine(new Pen(white), 90, 0, 93, 0);

else

g.DrawLine(new Pen(white), 99, 0, 97, 0);

if (i == 0)

{

g.DrawString("III",new Font("Times", 10), white, 80, -10);

g.DrawString("VI", new Font("Times", 10), white, -7f, 73);

g.DrawString("IX", new Font("Times", 10), white, -93, -10);

g.DrawString("XII", new Font("Times", 10), white, -12, -94);

}

g.RotateTransform(6.0f);

}

DateTime now = DateTime.Now;

int minute = now.Minute - 15;

int hour = now.Hour % 12 - 15;

if (radioWinter.Checked) //ну или

{

hour = hour;

}

else if (radioSummer.Checked)

{

hour--;

}

int second = now.Second - 15;

InitializeTransform(g);

g.RotateTransform(hour * 30 + minute / 2);

DrawHand(g, Green , 40);

InitializeTransform(g);

g.RotateTransform(minute * 6);

DrawHand(g, red , 60);

InitializeTransform(g);

g.RotateTransform(second * 6);

DrawHand(g, white, 80);

Green.Dispose();

white.Dispose();

blue.Dispose();

red.Dispose();

}

void InitializeTransform(Graphics g)

{

g.ResetTransform();

g.TranslateTransform(ClientSize.Width / 2, ClientSize.Height / 2);

float scale;

scale = System.Math.Min(ClientSize.Width, ClientSize.Height) / 200.0f;

g.ScaleTransform(scale, scale);

}

private void toolStripStatusLabel1_Click(object sender, EventArgs e)

{

toolStripStatusLabel1.Text = String.Format("Временная зона: {0}", TimeZone.CurrentTimeZone.StandardName);

}

private void toolStripStatusLabel2_Click(object sender, EventArgs e)

{

toolStripStatusLabel2.Text =String.Format("День месяца:{0}",DateTime.Now.Day);

}

private void button1_Click(object sender, EventArgs e)

{

if(radioImage1.Checked) this.BackgroundImage = new Bitmap("1.jpg");

if (radioImage2.Checked) this.BackgroundImage = new Bitmap("2.jpg");

if (radioImage3.Checked) this.BackgroundImage = new Bitmap("3.jpg");

}

}

}

Вот получился такой код! Как изменить так, чтобы минутная и часовая стрелка шла в противоположном направлении?!

Ссылка на комментарий
Поделиться на другие сайты

Всем Привет!!! Помогите!!!

Создаю DVD диск при запуске открывается форма с кнопками "обзор диска" "просмотр папки фото". Делаю это в Visual basic.

нашел код - получается:

-----------------------------------------------------------------------------------------------------------------

Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Private Const SW_SHOW = 5

Private Sub Command1_Click()

ShellExecute Form1.hwnd, "open", "d:\Disk\фото\", 0, 0, SW_SHOW

End Sub

-----------------------------------------------------------------------------------------------------------------

Вся проблема в этом - "d:\Disk\фото\" - жестко привязанный диск!!!

Как сделать так чтобы в адресе автоматически выбирался DVD (CD-ROM).

у меня на одном компе он "E", а на другом "F".

Ссылка на комментарий
Поделиться на другие сайты

:) вот и вторая задачка решилась -выкладываю для других студентов и спасибо Тролль

сортировка методом Шелла (Дельфи) Важная часть программы.

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);

var a:string; t:char; d,i,j,n,min:integer;

k:boolean;

begin

if Key=#13 then

begin

a:=Edit1.Text; n:=length(a);

{for i:=1 to n-1 do }

begin

d:=n div 2;

while d>0 do begin

k:=true;

while k do begin

k:=false; i:=1;

for i:=1 to n-d do begin

if a>a[i+d] then begin

t:=a; a:=a[i+d]; a[i+d]:=t;

k:=true;

end; { if ... }

end; { for ... }

end; { while k }

d:=d div 2;

end; { while d>0 }

end;

Label1.Caption:=a;

end;

end;

2Тролль-Если не нужно то удалите-просто хотел поделиться

Ссылка на комментарий
Поделиться на другие сайты

Привет)помогите плиз програмку написать)) :rolleyes:

Составить программу вычисления суммы трехзначных чисел, в десятичной записи которых нет нечетных цифр

составить программу в паскале с помощью процедур.

Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...

Помогите плиз программу отладить

В алфавитном порядке вывести все звонкие согласные, которые входят в каждое нечетное слово и не входят ни в одно четное слово

Вот прога но неработает

uses crt;

type letters=set of char;

const o:letters=['ц','н','г','з','в','р','л','д','ж','ч','м','б'];

qq:array [1..12] of char=('ц','н','г','з','в','р','л','д','ж','ч','м','б');

R:letters=[',','.',';','?','!']; {знаки препинания}

var i,j,chet:byte;

s, ss: string;

o1,o2, temp: letters;

m: char;

begin chet:=1;

i:=1;

o1:=q;

o2:=[];

writeln ('******nachalo*******');

writeln ('введите строку') ;

readln(s);

if s=''then S:=' морковка горох капуста мозамбези крыша звезда';

repeat

while (s in R) and (i<length (S)) do begin

ss: ss+s ;

i:=i+1

end;

writeln (chet,'',ss);

temp:[];

for j:=1 to length (Ss) do

temp:=temp+[s[j]];

for j:=1 to 8 do begin

{первое условие}

if (chet=1) and (NOT (qq[j] in temp) then exclude (01,qq[j]);

{второе условие }

if (chet=0) and (NOT (qq[j] in temp) then 02:= 02+[qq[j]];

end;

cheat:=1-chet;

end;

until i>=length(s);

write ('входят в каждое нечётное слово:');

for m:=''to#255 do if m in 01 then write (m);

writeln;

write ('не входят хотя бы одно чётное слово:');

for m:=''to#255 do if m in 02 then write (m);

writeln;

repeat until key pressed;

end.

Ссылка на комментарий
Поделиться на другие сайты

Ragnos:

var t,g:set of char; c:char; s:string; k:boolean; i:byte; begink:=true; t:=[]; g:=['б'..'д','ж','з','л'..'н','р']; ReadLn(s); s:=s+'.';for i:=1 to length(s) do if s[i]>'.' then include(t,s[i]) else   begin if k then g:=g*t else g:=g-t; t:=[]; k:=not k end;for c:='б' to 'р' do if c in g then Write(c ); WriteLn; ReadLnend.

Предполагается, что все вводимые буквы - строчные. Если они могут быть и заглавными, то надо в программе вставить после ввода строки замену всех заглавных букв в ней на строчные.

Ссылка на комментарий
Поделиться на другие сайты

Помогите плиз, хотя бы одну программку

1. Если длина строки четное число, то удалить первую букву

2. Выясните, сколько раз в заданном слове встречается каждый символ

3. Дана последовательность целых чисел a1, a2,...,an. Найти модуль наименьшего по модулю элемента

4. Имеется n итоговых оценок студента. Расположить эти оценки в следующем порядке: пятерки, двойки, четверки, тройки

Ссылка на комментарий
Поделиться на другие сайты

здраствуйте знатоки програмирования. Вот начался второй семестр. пошли класы. пока идет туговато с пониманием. Задачка следующего рода:

Создать базовый клас персона с даными про нее. После Создать два дочерних класа: 1. Клас студент с дополнительными даными о месте учобы. 2. Клас група из списком студентов. Предусмотреть функцию сортировки (за датой рождения) в обьекте група. :blushing: Спасибо за помощь. Да, и еще, уважаемый Тролль, какую книгу посоветовал б для изучения класов и обьектов? а то никак хорошой не найду, толи я так плохо доганяю.

Ссылка на комментарий
Поделиться на другие сайты

Ragnos:

3.

#include <iostream.h>#include <math.h>int n,i,j,mas[20],min;void main(){cout<<"Set count of numbers:\n";cin>>n;for (i=0;i<n;i++){cout<<"Set "<<i<<" number:\n";cin>>mas[i];};min=0;for (i=1;i<n;i++){if (abs(mas[i])<abs(mas[min]))min=i;};cout<<"Your number: "<<abs(mas[min]);}
Ссылка на комментарий
Поделиться на другие сайты

core:

Создать базовый клас персона с даными про нее. После Создать два дочерних класа: 1. Клас студент с дополнительными даными о месте учобы. 2. Клас група из списком студентов. Предусмотреть функцию сортировки (за датой рождения) в обьекте група.
Пункт 2 - создать класс "группа студентов" как дочерний (кто эту терминологию придумал? гораздо лучше "производный класс") - нечто не слишком понятное, в дочерний класс группа предков плохо лезет. Это было бы извращением ;). Я просто создаю новый класс "группа" как класс, включающий массив "студентов" с дополнительной функцией сортировки этого массива по дате рождения. На оформление особого внимания не обращал, ввод имен студентов заканчивается, если ввести вместо имени цифру нуль, даты рождения вводятся в виде 1989-02-15 - впрочем, годится любая строка, лишь бы по ней можно было сортировать. После окончания ввода данных студентов они выводятся в отсортированном по датам рождения виде. Проверил в компиляторе Dev-C++, это не должно иметь какого-либо значения.
#include <iostream>#include <string>using namespace std;class Persone {public: string Name; string Birthdate;};class Student:public Persone {public: string Uni;};class Group {public: int n; Student Students[40]; void StudSort();};void Group::StudSort(){int i,j; Student St;for(i=0;i<n-1;i++)for(j=0;j<n-1;j++) if(Students[j].Birthdate>Students[j+1].Birthdate){St=Students[j];Students[j]=Students[j+1];Students[j+1]=St;}};main(){Persone P; Student S; Group G;int i; G.n=-1; for(i=0;i<40;i++) { cout<<endl<<"Name (or 0 for the end)? "<<endl; cin>>G.Students[i].Name; G.n++; if(G.Students[i].Name=="0")break; cout<<"Birthdate (year(four digits)-month(two digits)-day(two dogits))? " <<endl; cin>>G.Students[i].Birthdate; cout<<"Uni? "<<endl; cin>>G.Students[i].Uni; };G.StudSort();for(i=0;i<G.n;i++) cout<<endl<<G.Students[i].Name<<"  "<<G.Students[i].Birthdate	<<"  "<<G.Students[i].Uni;cout<<endl<<endl; getchar(); getchar();}
Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу



×
×
  • Создать...