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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.01.2008, 09:24   #1
medik
Пользователь
 
Регистрация: 29.10.2007
Сообщений: 12
По умолчанию

получил такую задачку, не могу понять, что значит "сохранить в памяти массив".
В решении предлагается сохранить в памяти массив, который вы читаете из окна Memo1 с помощью объявленного массива. Со-храненный массив обработать и результат обработки вывести в ок-но Memo2.

Я сделеал это так: (но пришёл ответ, что решение не верное)
procedure TForm1.BitBtn1Click(Sender: TObject);
var
i:integer;

begin
n:=memo1.lines.count;
memo2.Clear;
label3.caption:=' ';
for i:=1 to n do
begin
a[i]:=strtoint(memo1.Lines[i-1]);
end;

end;


procedure TForm1.Button1Click(Sender: TObject);
var
r,i,z:integer;
st:string;
begin
for i:=1 to n do
begin
r:=a[i] mod 2;
if r=0 then
begin
st:=IntToStr(a[i]) +#13;
Memo2.Lines.Add(st);
z:=memo2.lines.count;
label3.Caption:='Количество чисел = '+ inttostr(z);

end;

end ;

end;

Последний раз редактировалось Stilet; 16.01.2008 в 10:12.
medik вне форума Ответить с цитированием
Старый 16.01.2008, 10:17   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Нверное имеется ввиду занести из Мемо данные в массив обработать и выдать в Мемо результат
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.01.2008, 10:33   #3
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Первая и главная ошибка, то что у вас не объявлен массив. Нужно написать
var
i:integer;
a:array[ ]Указать тип;
puporev вне форума Ответить с цитированием
Старый 16.01.2008, 10:39   #4
medik
Пользователь
 
Регистрация: 29.10.2007
Сообщений: 12
По умолчанию

Цитата:
Сообщение от puporev Посмотреть сообщение
Первая и главная ошибка, то что у вас не объявлен массив. Нужно написать
var
i:integer;
a:array[ ]Указать тип;
sorry
он объявлен в глобальных переменных
medik вне форума Ответить с цитированием
Старый 16.01.2008, 10:44   #5
medik
Пользователь
 
Регистрация: 29.10.2007
Сообщений: 12
По умолчанию

Цитата:
Сообщение от mihali4 Посмотреть сообщение
Еще бы нехило уточнить, массив ЧЕГО?
Строк, символов? Или, может быть, цифирей?
В каком виде представлена исходная информация? А выходная в каком виде должна быть?
И словесное описание "массив обработать"...
А то получается - "мне тут Кощей задачку подкинул - сделать то, не знаю что, так мы с Ягой прикинули, только почему-то не работает как надо. А как надо - никому не скажу..."
//////////вот полный текст задания
Дана последовательность произвольных целых чисел. Опреде-лить в последовательности номера всех четных значений и вывести найденный массив из четных чисел. Определить количество элементов в полученном массиве.
В решении предлагается сохранить в памяти массив, который вы читаете из окна Memo1 с помощью объявленного массива. Со-храненный массив обработать и результат обработки вывести в ок-но Memo2.
||| вот весь листиг - он работает в соответствии с условием, но мне ответили, что это не правильно, я не могу понять почему (т.е. не могу понять, что значит сохранить массив в памяти, может надо использоват SaveToStream и LoadFromStream)

unit Unit1;

interface

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

type
TForm1 = class(TForm)
Button1: TButton;
BitBtn1: TBitBtn;
Panel1: TPanel;
Memo1: TMemo;
Label3: TLabel;
BitBtn2: TBitBtn;
Memo2: TMemo;
Label1: TLabel;
Label2: TLabel;
procedure BitBtn1Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

Type
mas=array[1..30] of integer;
var
Form1: TForm1;
a:mas;
n:integer;

implementation

{$R *.dfm}

procedure TForm1.BitBtn1Click(Sender: TObject);
var
i:integer;

begin
n:=memo1.lines.count;
memo2.Clear;
label3.caption:=' ';
for i:=1 to n do
begin
a[i]:=strtoint(memo1.Lines[i-1]);
end;

end;


procedure TForm1.Button1Click(Sender: TObject);
var
r,i,z:integer;
st:string;
begin
for i:=1 to n do
begin
r:=a[i] mod 2;
if r=0 then
begin
st:=IntToStr(a[i]) +#13;
Memo2.Lines.Add(st);
z:=memo2.lines.count;
label3.Caption:='Количество чисел = '+ inttostr(z);

end;

end ;

end;


procedure TForm1.FormCreate(Sender: TObject);
begin
form1.Caption:='определение чётных чисел';
memo1.ScrollBars:=ssVertical;
memo2.ScrollBars:=ssVertical;

end;

end.
medik вне форума Ответить с цитированием
Старый 16.01.2008, 11:34   #6
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

В данном случае распространенная ошибка, когда новый массив не сохраняя его в памяти выводят на экран. Дело в том, что создать массив и вывести его на экран не одно и тоже.
Поэтому нужно сначала сделать типа
k:=0;
for i:=1 to n do
if a[i] mod 2=0 then
begin
k:=k+1;
b[k]:=a[i] ;
end;
for i:=1 to k do
Memo2.Lines.Add(strotoint(b[i]));
Возможно есть неточности, но важен принцип.
puporev вне форума Ответить с цитированием
Старый 16.01.2008, 12:22   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
т.е. не могу понять, что значит сохранить массив в памяти
Скинуть из Мемо данные в массив.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Массивы в С\С++ Zahar11 Помощь студентам 4 31.05.2008 00:35
массивы ShenDy Общие вопросы C/C++ 4 17.04.2008 00:01
Массивы Snord Общие вопросы Delphi 2 12.04.2008 13:45