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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 18.01.2013, 19:35   #1
Sladkijj
 
Регистрация: 18.01.2013
Сообщений: 6
По умолчанию Программирование в Delphi

1. Дано натуральное число.Определить,является ли разность его максимальной и минимальной цифр четным числом.
2. Дан массив целых чисел из n элементов, заполненный случайным образом. Найти сумму элементов массива, значение которых не превышает 20.
Удалить из массива k-й элемент.
Поменять местами первый и минимальный элементы. Если элементов с минимальным значением несколько, то в обмене должен участвовать последний из них.

Прошу помощи в составлении программ. Нужно, чтобы все это работало.
Sladkijj вне форума
Старый 18.01.2013, 21:09   #2
KooKish
Улыбаемся :)
Пользователь
 
Регистрация: 18.12.2012
Сообщений: 74
По умолчанию

1. используешь div и mod. например число 14579. -> 14579 mod 10 -> останется 9 -> min := 9 -> 14579 div 10 -> 1457 -> 1457 mod 10 -> теперь останется 7 -> min > 7 ? если да то min := 7 и т.д. P.S. Это только алгоритм. Осталось занести его на delphi вот и все(циклом). Что то не понятно спрашивай.
2.
Код:
s := 0;
for i := 1 to n do //находим сумму
  if (A[i] <= 20) then
    s := s + A[i];
....
//удаляем k-ый эл-т
for k to n do
begin
  tmp := A[k+1];
  A[k] := tmp; // по сути не удаляем, а сдвигаем массив влево. Еще нужно сделать проверку. если последний эл-т.
end;
SetLength(A, count-1);
....
A[1]:= min; //
for i := 2 to n do
  if (A[i] < min) then
    begin
      min := A[i];
      j := i;
    end else if(A[i] = min) then j := i;
A[j] := A[1];
A[1] := min;
Засунешь, доработаешь, всё будет шик
Не забываем про весы.

Последний раз редактировалось KooKish; 18.01.2013 в 21:29. Причина: поправил удаление К-го эл-та
KooKish вне форума
Старый 18.01.2013, 21:39   #3
Sladkijj
 
Регистрация: 18.01.2013
Сообщений: 6
По умолчанию

Ну с первым ещё более-менее понятно, я просто никак не могу понять, как это всё организовать в окошке form1, где собственно и происходит работа программы по коду.
А во втором даже и не представляю сколько в окошке форм1 должно быть эдитов, лейбелов и баттонов.


Вообще, я лучше выложу коды, которые получились у меня:
1.
Код:
uses crt;
  var num,min,max,flag: longint;
 
begin
  clrscr;
  readln (num);
  min:=num mod 10;
 
  while ( num div 10) > 0 do
    begin
 
      flag:= num mod 10;
      num:= num div 10;
      if flag>max then max:=flag;
      if flag<min then min:=flag;
    end;
  flag:= num mod 10;
  num:= num div 10;
  if flag>max then max:=flag;
  if flag<min then min:=flag;
 
  if (max-min) mod 2 = 0 then writeln ('разность максимальной и минимальной цифр чётное число')
                                   else writeln ('разность максимальной и минимальной цифр нечётное число')
 
  readln;
end.
2.
Код:
var
  a : array[1..100] of byte;
  i,n,k : byte;
  sum : integer;
begin
  write('input razmernostx n [2..100] : '); readln(n); randomize;
  writeln('massive:'); sum:=0;
  for i:=1 to n do begin
    a[i]:=random(99);
    if a[i]<21 then sum:=sum+a[i];
    write(a[i]:4);
  end;
  writeln; writeln('Summa ne prew 20 = ',sum);
  write('wwedite nomer el-ta dlq udaleniq k [1..',n,'] : '); readln(k);
  dec(n);
  for i:=k to n do a[i]:=a[i+1];
  writeln('massive posle udaleniq ',k,' el-ta:');
  k:=1;
  for i:=1 to n do begin
    if a[k]>=a[i] then k:=i;
    write(a[i]:4);
  end; writeln;
  writeln('poslednij min el-t = ',a[k],' stoit na ',k,' meste.');
  a[n+1]:=a[1]; a[1]:=a[k]; a[k]:=a[n+1];
  writeln('massive posle perestanowki ',k,' i 1 mest el-tov:');
  for i:=1 to n do write(a[i]:4); writeln;
  readln;
end.
Я в Delphi вообще ни бум-бум, знания подвыветрились, благо, есть на свете добрые люди, которые сориентирует и укажут путь истинный в удивительном мире программирования

Последний раз редактировалось Stilet; 14.06.2015 в 16:04.
Sladkijj вне форума
Старый 18.01.2013, 23:10   #4
KooKish
Улыбаемся :)
Пользователь
 
Регистрация: 18.12.2012
Сообщений: 74
По умолчанию

Так у Вас writeln, readln, uses crt -> это же в консольном виде, какие формы? Вам задание надо сделать именно с формами ? Или же можно и в консоли. Делфи поддерживает как консоль, так и формы. Просто с формами возни больше.

1.Добавляешь 2 Edit и 1 Button
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, XPman;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    Edit2: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function Schet(num:integer):string;
var
  min,max,flag: longint;
begin
  min:=num mod 10;
  max:=num mod 10;
  while (num div 10 > 0) do
    begin
      flag:= num mod 10;
      num:= num div 10;
      if flag>max then max:=flag;
      if flag<min then min:=flag;
    end;
  flag:= num mod 10;
  num:= num div 10;
  if flag>max then max:=flag;
  if flag<min then min:=flag;
  if (max-min) mod 2 = 0 then
    result := 'разность максимальной и минимальной цифр чётное число'
  else
    result := 'разность максимальной и минимальной цифр нечётное число''
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  value:integer;
begin
  value := StrToInt(Edit1.Text);
  Edit2.Text := Schet(value);

end;

end.
Проверил, всё работает !!!
Не забываем про весы.

Последний раз редактировалось Stilet; 14.06.2015 в 16:04.
KooKish вне форума
Старый 19.01.2013, 14:05   #5
Sladkijj
 
Регистрация: 18.01.2013
Сообщений: 6
По умолчанию

Да, мне именно с формами нужно сделать, в консольном виде я ещё более-менее умею делать.

Вот как со вторым заданием быть?

Благодарю за помощь!

Блин, ну как тут с формами-то сделать?

Код:
var
a : array[1..100] of byte;
i,n,k : byte;
sum : integer;
begin
write('input razmernostx n [2..100] : '); readln(n); randomize;
writeln('massive:'); sum:=0;
for i:=1 to n do begin
a[i]:=random(99);
if a[i]<21 then sum:=sum+a[i];
write(a[i]:4);
end;
writeln; writeln('Summa ne prew 20 = ',sum);
write('wwedite nomer el-ta dlq udaleniq k [1..',n,'] : '); readln(k);
dec(n);
for i:=k to n do a[i]:=a[i+1];
writeln('massive posle udaleniq ',k,' el-ta:');
k:=1;
for i:=1 to n do begin
if a[k]>=a[i] then k:=i;
write(a[i]:4);
end; writeln;
writeln('poslednij min el-t = ',a[k],' stoit na ',k,' meste.');
a[n+1]:=a[1]; a[1]:=a[k]; a[k]:=a[n+1];
writeln('massive posle perestanowki ',k,' i 1 mest el-tov:');
for i:=1 to n do write(a[i]:4); writeln;
readln;
end.

Последний раз редактировалось Stilet; 14.06.2015 в 16:05.
Sladkijj вне форума
Старый 14.06.2015, 15:56   #6
QofD
Новичок
Джуниор
 
Регистрация: 14.06.2015
Сообщений: 2
По умолчанию

У меня дико тупой вопрос, тут нубов не бьют?
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, TeEngine, Series, ExtCtrls, TeeProcs, Chart, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Chart1: TChart;
    Series1: TLineSeries;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Series2: TLineSeries;
    Chart2: TChart;
    Series3: TLineSeries;
    Series4: TLineSeries;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

var myPi : Extended;

implementation

function uD1(x:Extended; y:extended):Extended;
 begin
  uD1:=sqr(myPi);
 end;

function uD2(x:Extended; y:extended):Extended;
 begin
  uD2:=sqr(x)-x;
 end;

function f(x:Extended):Extended;
 begin
  f:=(sqr(sqr(x))-sqr(x));
 end;

function g(x:Extended):Extended;
 begin
  g:=0;
 end;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var x1, x2, h, a, b: extended;
    i, N: integer;
begin
 N:=StrToint(edit1.text);
 a:=StrToFloat(edit2.text);
 b:=StrToFloat(edit3.text);
 h:=(b-a)/N;
series1.clear;
series2.clear;
 x1:=a;
for i:= 1 to N do
 begin
 x1:=x1+(h);
 Series1.AddXY(x1, g(x1));
 Series2.AddXY(x1, f(x1));
 series3.AddXY(x1, g(x1), uD2(x1, g(x1)));
 series4.AddXY(x1, f(x1), uD1(x1, f(x1)));
 end;
end;

end.
Есть программа. По идее, должен получаться трехмерный график. Но вылезает такая ошибка:
Я тупо не понимаю, откуда вообще вылезает String, везде же Extended прописан?

Последний раз редактировалось Stilet; 14.06.2015 в 16:05.
QofD вне форума
Старый 14.06.2015, 16:07   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
тут нубов не бьют?
Б.ют. если лезут в чудую тему
AddXY принимает два параметра вещественных, и еще два - строку и цвет.
А ты ему скармливаешь три вещественных.
Убери третий параметр.
I'm learning to live...
Stilet вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программирование в Delphi mario007 Помощь студентам 1 12.01.2012 22:56
Delphi программирование Ericnex Общие вопросы Delphi 5 19.05.2010 19:58
Программирование Delphi Ericnex Помощь студентам 3 11.04.2010 15:01
Программирование на Delphi ЧеширскийКот Фриланс 15 14.01.2010 10:32
Программирование Delphi vrealmaker Фриланс 2 14.11.2007 09:33