Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 5 354

/ вопрос открыт /

Здравствуйте, уважаемые эксперты!
Помогите переделать на Дельфи.

Приложение:
  1. Program proc;
  2. const
  3. n=15;
  4. type
  5. mas=array[0..n-1] of Integer;
  6. procedure ra(var x:mas);
  7. var
  8. ind:integer;
  9. begin
  10. for ind:=low(x) to high(x) do
  11. x[ind]:=random(50)-25;
  12. end;
  13. procedure printmas(const x:mas);
  14. var
  15. ind:integer;
  16. begin
  17. for ind:=low(x) to high(x) do
  18. write(x[ind]:4);
  19. writeln;
  20. end;
  21. procedure ex(var x:mas; var ch:integer);
  22. var
  23. ind:integer;
  24. begin
  25. ch:=0;
  26. for ind:=low(x) to high(x) do
  27. if x[ind]<0 then
  28. x[ind]:=-x[ind];
  29. inc(ch);
  30. end;
  31. var
  32. x:mas;
  33. ch:integer;
  34. begin
  35. randomize;
  36. Ra(x);
  37.  
  38. printmas(x);
  39. ex(x,ch);
  40.  
  41. printmas(x);
  42. readln;
  43. end.
  44.  


Силиванов Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Силиванов (статус: Посетитель)
Вопрос отправлен: 1 июня 2011, 10:47
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: ierihon1

Здравствуйте, Силиванов!
Кинь на форму Компонент Memo и кнопку, и вот весь юнит.

Приложение:
  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7. Dialogs, StdCtrls;
  8.  
  9. const
  10. n=15;
  11.  
  12. type
  13. mas=array[0..n-1] of Integer;
  14. type
  15. TForm1 = class(TForm)
  16. Memo1: TMemo;
  17. Button1: TButton;
  18. procedure printmas(const x:mas; lnl:integer);
  19. procedure Button1Click(Sender: TObject);
  20. private
  21. { Private declarations }
  22. public
  23. { Public declarations }
  24. end;
  25.  
  26. var
  27. Form1: TForm1;
  28. x:mas;
  29. ch:integer;
  30.  
  31. implementation
  32.  
  33. {$R *.dfm}
  34.  
  35. procedure ra(var x:mas);
  36. var ind:integer;
  37. begin
  38. randomize;
  39. for ind := low(x) to high(x) do
  40. x[ind]:=random(50)-25;
  41. end;
  42.  
  43. procedure ex(var x:mas; var ch:integer);
  44. var
  45. ind:integer;
  46. begin
  47. ch:=0;
  48. for ind:=low(x) to high(x) do
  49. if x[ind]<0 then
  50. x[ind]:=-x[ind];
  51. inc(ch);
  52. end;
  53.  
  54. procedure TForm1.printmas(const x: mas; lnl:integer);
  55. var
  56. ind:integer;
  57. begin
  58. for ind:=low(x) to high(x) do
  59. memo1.Lines[lnl]:=Memo1.Lines[lnl] + IntToStr(x[ind])+' '
  60. end;
  61.  
  62. procedure TForm1.Button1Click(Sender: TObject);
  63. begin
  64. ra(X);
  65. printmas(X,0);
  66. ex(X,ch);
  67. printmas(X,1);
  68. end;
  69.  
  70. end.
  71.  


Ответ отправил: ierihon1 (статус: 1-ый класс)
Время отправки: 1 июня 2011, 12:08


Мини-форум вопроса

Всего сообщений: 34; последнее сообщение — 2 июня 2011, 11:28; участников в обсуждении: 5.

Страницы: [1] [2] [Следующая »]

min@y™

min@y™ (статус: Доктор наук), 1 июня 2011, 10:54 [#1]:

После "Program proc;" вставь строку вот такую:
Program proc;
{$APPTYPE CONSOLE}
const
n=15;
Надписи на русском языке замени на английские или транслит.
Смени расширение у файла из *.pas в *.dpr.
Открывай файл в Delphi, компилируй, запускай.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Силиванов

Силиванов (статус: Посетитель), 1 июня 2011, 11:07 [#2]:

дак нужна форма, что бы на ней были размещены компоненты((
min@y™

min@y™ (статус: Доктор наук), 1 июня 2011, 11:18 [#3]:

Цитата (Силиванов):

дак нужна форма, что бы на ней были размещены компоненты((

А почему я этого условия не вижу в тексте вопроса?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!

1 июня 2011, 11:24: Вопрос перемещён из тематического раздела Delphi » Общие вопросы по программированию в раздел Лабораторный практикум » Delphi модератором min@y™

bugmenot

bugmenot (статус: 3-ий класс), 1 июня 2011, 12:04 [#4]:

Цитата (min@y™):

Надписи на русском языке замени на английские или транслит.
ЛОЛ, брутальненько, особенно транслит
виконання програми розпочинається з того самого мiсця, де призупинилося.

ierihon1

ierihon1 (статус: 1-ый класс), 1 июня 2011, 12:20 [#5]:

Силиванов: ну а для красоты обработчик нажатия кнопки можно записать и так:
ra(X);
memo1.Lines[0]:='Исходный массив:';
printmas(X,1);
ex(X,ch);
memo1.Lines[2]:='Конечный массив:';
printmas(X,3);
min@y™

min@y™ (статус: Доктор наук), 1 июня 2011, 12:57 [#6]:

Цитата (ierihon1):

ну а для красоты обработчик нажатия кнопки можно записать и так:

Сначала исправь ошибки у себя в ответе, красоту потом наводить будешь.
Сделал бы уж тогда не с TMemo, а с TDrawGrid.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
ierihon1

ierihon1 (статус: 1-ый класс), 1 июня 2011, 14:26 [#7]:

min@y™: если не секрет где?)
min@y™

min@y™ (статус: Доктор наук), 1 июня 2011, 14:40 [#8]:

Цитата (ierihon1):

если не секрет где?

procedure TForm1.printmas(const x: mas; lnl:integer);
var
ind:integer;
begin
for ind:=low(x) to high(x) do
memo1.Lines[lnl]:=Memo1.Lines[lnl] + IntToStr(x[ind])+' ' // <-- Access violation
end;
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
ierihon1

ierihon1 (статус: 1-ый класс), 1 июня 2011, 14:51 [#9]:

это я так понимаю потому что для строк сначала память выделять? так я это не в самом коде делал, просто хотел чтобы он сам до этого дошёл: работа с VCL... ну у меня иногда страные методы бывают)
min@y™

min@y™ (статус: Доктор наук), 1 июня 2011, 15:12 [#10]:

Цитата (ierihon1):

это я так понимаю потому что для строк сначала память выделять?

Ясен пень!

Цитата (ierihon1):

так я это не в самом коде делал, просто хотел чтобы он сам до этого дошёл

Я б хрен додумался до такого дикого брейнфакинга.

Цитата (ierihon1):

страные

Ты здесь букву пропустил или лишнюю вставил?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
ierihon1

ierihon1 (статус: 1-ый класс), 1 июня 2011, 15:16 [#11]:

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

Силиванов (статус: Посетитель), 1 июня 2011, 20:25 [#12]:

memo1.Lines[lnl]:=Memo1.Lines[lnl]+IntToStr(x[ind])+' ';
почему ошибка в этой строчке?
пишет что неизвестный идентификатор memo1
min@y™

min@y™ (статус: Доктор наук), 1 июня 2011, 20:57 [#13]:

Цитата (Силиванов):

почему ошибка в этой строчке? пишет что неизвестный идентификатор memo1

А потому что копипастить чужой говнокод - много ума не надо.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
ierihon1

ierihon1 (статус: 1-ый класс), 2 июня 2011, 06:49 [#14]:

это надо не через код делать, о чём мы только что разговаривали с min@y™: сначала нужно для строк память выделять а потом уже использовать. Для memo я делал так: в инспекторе объектов в свойстве lines нажимаю на него два раза появляетс небольшое окно редактирования строк, затем удаляю оттуда весь текст. Теперь самое важное: нужно создать несколько пустых строк, в данном случае их нужно 4, поэтомму я и нажмаю на энтр 4 раза и получаю эти пустые 4 строки которые уже без ошибок исползует процедура.
min@y™

min@y™ (статус: Доктор наук), 2 июня 2011, 08:14 [#15]:

Цитата (ierihon1):

Теперь самое важное: нужно создать несколько пустых строк, в данном случае их нужно 4, поэтомму я и нажмаю на энтр 4 раза и получаю эти пустые 4 строки которые уже без ошибок исползует процедура.

Так делают только извращенцы. Не надо учить начинающих всякой бредятине. Представь, что тебе в мемо надо добавлять заранее неизвестное количество строк. Что тогда?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
ierihon1

ierihon1 (статус: 1-ый класс), 2 июня 2011, 08:47 [#16]:

тогда он начинает автоматически выделять память... в старых версиях может не так но у меня в 11ом выделяет автоматически достаточно тольки одну строку инициализировать, ну если у тебя есть предложения как это оформить в коде, то буду только за)
min@y™

min@y™ (статус: Доктор наук), 2 июня 2011, 09:21 [#17]:

Цитата (ierihon1):

ну если у тебя есть предложения как это оформить в коде, то буду только за

RTFM по методам класса TStrings:

  • Add();
  • Insert();
  • Delete();

Пока всё.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
ierihon1

ierihon1 (статус: 1-ый класс), 2 июня 2011, 09:29 [#18]:

procedure TForm28.printmas(const x: mas; lnl:integer);
var
ind:integer;
    s:String;
begin
for ind:=low(x) to high(x) do
s:=s+IntToStr(x[ind])+'   ';
memo1.Lines.Add(s);
end
вот так?
min@y™

min@y™ (статус: Доктор наук), 2 июня 2011, 09:48 [#19]:

Похоже. Только параметр lnl тут лишний.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
ierihon1

ierihon1 (статус: 1-ый класс), 2 июня 2011, 09:50 [#20]:

это я тоже уже заметил..)

Страницы: [1] [2] [Следующая »]

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

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 16:32
Выполнено за 0.04 сек.