Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Бедный студент нуждается в помощи!!! Кто умеет использовать массивы??? 
:(
    Опции темы
Pusillanimous
  Дата 3.1.2003, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 3.1.2003

Репутация: нет
Всего: нет



Я все мучаюсь с массивами. Паскаль начал только неделю назад серьезно юзать, т е с БОЛЬШИМ хотением его познать. А началась все с парой задачек. Ну типа составить прогу с помощью которой можно будет квадратные ур-ия решать. Это я сжелал, а вот массивы меня достали. ИНикик ошибку не пойму. Может кто поможет
заполнить линейный массив целых чисел а(n) по правилу а[i]=b * i!

2. Замена элементов в массиве.
В линейном массиве целых чисел d(25) заменить все элементы, меньшие нуля на квадрат этих элементов.

3. Двумерные массивы.
Найти сумму всех четных элементов двумерного массива целых чисел a(20,30).


Помогите пожалуйста (крик души!) :exclamation  Может у кого похожие проги уже есть? Мыльте на [email protected]
PM MAIL   Вверх
neutrino
Дата 3.1.2003, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: нет
Всего: 62



Здравствуйте, Pusillanimous.

I)
const
 n: Integer = 25; //Размер массива
type
 TMyArray = array[0..n] of Byte;
var
 Idx, B: Integer; //B - коэффициент
 A: TMyArray;
begin
 B := 2;
 for Idx := 0 to n do
   //Заполнение по вашей формуле
   A[Idx] := B*Idx;
end;

II)
 for Idx := 0 to 24 do
   //Если элемент<0, то записать вместо него квадрат
   if B[Idx]<0 then B[Idx] := B[Idx]*B[Idx];

III)
 Sum := 0; //Обнуляем сумму в начале
 for I := 0 to n do //Первый цикл по строкам, второй по столбцам
   for J := 0 to m do
     //Если элемент кратен 2-м (делится на 2 без остатка), добавить его в сумму.
     if A[I,J] mod 2 = 0 then Sum := Sum + A[I,J];

Удачи в дальнейшем познании программирования.




--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
Kleo
Дата 3.1.2003, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник Клуба
Сообщений: 121
Регистрация: 12.12.2002
Где: Москва

Репутация: нет
Всего: нет



Pusillanimous пиши, что у тебя не получается...с подобными задачами и я тебе помочь могу :)) а вообще здесь на форуме есть очень умные, отзывчивые, добрые, понятливые и тд и тп...в общем - тебе всегда помогут!!! :)) я тебе тоже желаю успехов !
--------------------
Съел бобра - спас дерево
PM MAIL ICQ MSN   Вверх
Pusillanimous
Дата 4.1.2003, 08:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 3.1.2003

Репутация: нет
Всего: нет



neutrinoKleo

Нет слов! Спасибо БОЛЬШОЕ!!! Думаю, что я тут на долго прописался :) Честно говоря не ожидал, что кто-то ответит. Это как подарок к Рождеству, всегда неожиданно и приятно, что "есть очень умные, отзывчивые, добрые, понятливые.. которые ..тебе всегда помогут!!! :))"

Снимаю шляпу!
PM MAIL   Вверх
Pusillanimous
Дата 4.1.2003, 09:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 3.1.2003

Репутация: нет
Всего: нет



Цитата(neutrino @ 03.1.2003, 09:41)


PM MAIL   Вверх
Pusillanimous
Дата 4.1.2003, 09:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 3.1.2003

Репутация: нет
Всего: нет



neutrino


В чем ошибся???
PM MAIL   Вверх
Pusillanimous
Дата 4.1.2003, 09:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 3.1.2003

Репутация: нет
Всего: нет



Цитата(neutrino @ 03.1.2003, 09:41)

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

PM MAIL   Вверх
Pusillanimous
Дата 4.1.2003, 09:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 3.1.2003

Репутация: нет
Всего: нет



neutrino

И почему у меня не получается ???  :(
PM MAIL   Вверх
Medved
Дата 4.1.2003, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 14
Всего: 154



Лучше вместо картинки приведи текст ошибки. Картинку не видно, видимо битая ссылка.


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
Wowa
Дата 4.1.2003, 10:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: нет
Всего: 290



Ссылка вот такая :) :
file:///C:/Documents%20and%20Settings/Никита/Desktop/RR/tp2.gif

Pusillanimous, Мы ведь не имеем доступ к твоему компьютеру, поэтому не можем посмотреть картинку. Ее надо сначала в Интернете где-то выложить, а затем здесь ссылку указать.
PM WWW   Вверх
Medved
Дата 4.1.2003, 10:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 14
Всего: 154



И еще Никита, лучше не храни на рабочем столе никаких папок и файлов, кроме ярлыков...Это ненадежно...для этих файлов и папок..


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
Pusillanimous
Дата 4.1.2003, 10:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 3.1.2003

Репутация: нет
Всего: нет



Pegas

а почему не надежно? У меня обычно рабочий стол похож на рабочий :) Т е я там храню только что скаченныен и оперативные файлы, т е те, которые часто нужны.
PM MAIL   Вверх
Pusillanimous
Дата 4.1.2003, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 3.1.2003

Репутация: нет
Всего: нет



Значит это то что neutrino подсказал, но в моем исполнении не все пошло.


Program massiv;
const
n: Integer = 25;
type
TMyArray = array[0..n] of Byte;
var
Idx, B: Integer;
A: TMyArray;
begin
B := 2;
for Idx := 0 to n do
 
  A[Idx] := B*Idx;
end.

Для проверки нажимаю CTRL+F9, он курсор ставит на n (в

строке [0..n] ) и пишет ERROR 133: Cannot evaluate this

expression.

А вот то что я сам написал по первой задече, прежде чем помощь искать. Тут ошибку замаялся искать, никак не пойму. Тут курсор ставит на i в строке [i..n] и пишет Error 3: Unknown identifier

Program massiv;

Uses crt;
Var
a:array [i..n] of integer;
i,b,n:integer;

Begin
Writeln ('Введите первый элемент b=');
Readln (b);

Writeln ('Введите индекс i=');
readln (i);

Writeln ('Введите второй элемент n=');
readln (n);

for i to n do
Begin
a[i]:=b*fact(i);
Readln;
end;
end.
PM MAIL   Вверх
Medved
Дата 4.1.2003, 10:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 14
Всего: 154



ну если n у тебя константа и всегда равна 25 то напиши следущее:

Код

Program massiv;
type
TMyArray = array[0..25] of Byte;
var
Idx, B: Integer;
A: TMyArray;
begin
B := 2;
for Idx := 0 to 25 do
 A[Idx] := B*Idx;
end.


я убрал объявление n как константы, и везде заменил ее на 25.


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
Pusillanimous
Дата 4.1.2003, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 3.1.2003

Репутация: нет
Всего: нет



Pegas

Задачка была такая: заполнить линейный массив целых чисел а(n) по правилу а[i]=b * i!

Блин! Не люблю не конкретных задач!

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

>>Шекспир: Вот в чем ответ, во в чем причина того, что снова к вам иду. :)
PM MAIL   Вверх
Medved
Дата 4.1.2003, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 14
Всего: 154



const
n: Integer = 25; //Размер массива
TMyArray = array[0..n] of Byte;

- такого объявления массива вообще в Delphi я не видел...

Бывают три типа массива:

1) Статистический;
2) Динамический;
3) Открытый;

в свою очередь, статистический массив делиться на одномерный (он же линейный) и двухмерный и т.д.

а вообще вот тебе линк : http://mdelphi.far.ru/pascal/4_1.htm




--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
Pusillanimous
Дата 4.1.2003, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 3.1.2003

Репутация: нет
Всего: нет



Pegas
Я тоже не видел :) Кстати, я именно по этой ссылке собирал свой код. Говорю же, что всю литру в инете по паскалю проштудировал. Наверное ответ может дать только сам neutrino :) Ждемс.
PM MAIL   Вверх
Medved
Дата 4.1.2003, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 14
Всего: 154



Если же в условии задачи четко сказано, что количество элементов массива должно устанавливаться пользователем, то тогда надо использовать не линейный (читай как одномерный статистический массив) а динамический, и при задании длины этого динамического массива

Код

var
MyArray: array of integer;
LenghtArray: integer;
...
SetLenght(MyArray, LenghtArray);


переменной LenghtArray присваивать значение, заданное пользователем.

но судя по тексту твоей задачи, тебе нужно использовать именно линейный массив, а он как известно объявляется жестко, т.е. TMyArray = array[0..25] of Byte;




--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
Pusillanimous
Дата 4.1.2003, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 3.1.2003

Репутация: нет
Всего: нет



Pegas
В смысле линейный массив это всегда только от 0 до 25? Я Читал что есть линейные и двумерный массивы.
т. е. я правильно понимаю, что когда условие задачи содержит фразу заполнить лилейный массив и не дано что-то вроде "массив целых чисел a(n)" то обьявлять его нужно только так: TMyArray = array[0..25] of Byte

Да?
PM MAIL   Вверх
Medved
Дата 4.1.2003, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 14
Всего: 154



Цитата

Pegas
В смысле линейный массив это всегда только от 0 до 25? Я Читал что есть линейные и двумерный массивы.
т. е. я правильно понимаю, что когда условие задачи содержит фразу заполнить лилейный массив и не дано что-то вроде "массив целых чисел a(n)" то обьявлять его нужно только так: TMyArray = array[0..25] of Byte

Да?


Линейный (одномерный) массив – массив, у которого в описании задан только один индекс, если два индекса – то это двумерный массив и т.д. Одномерные массивы часто называют векторами, т.е. они представляют собой конечную последовательность пронумерованных элементов.

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


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
Pusillanimous
Дата 4.1.2003, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 3.1.2003

Репутация: нет
Всего: нет



Pusillanimous

те наоборот, дано :)
PM MAIL   Вверх
Pusillanimous
Дата 4.1.2003, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 3.1.2003

Репутация: нет
Всего: нет



Pegas

Спасибо! С этим разобрался.
И все же, почему  не рекомендуется хранить на рабочем столе никаких папок и файлов, кроме ярлыков.. ???
PM MAIL   Вверх
Medved
Дата 4.1.2003, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 14
Всего: 154



Цитата

те наоборот, дано  


Я не понял о чем ты...

Я прочел твои задачи еще раз, и судя по всему, в первой задаче по ее условию, тебе придется использовать динамический массив. Поскольку в первой задаче не задано точное количество элеиментов массива.


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
Medved
Дата 4.1.2003, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 14
Всего: 154



Цитата

Pegas
Спасибо! С этим разобрался.
И все же, почему  не рекомендуется хранить на рабочем столе никаких папок и файлов, кроме ярлыков..


Задай этот вопрос в разделе флейма, тебе там очень подробно все объяснят. (Или наоборот, опровергнут мое утверждение :) )




--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
Pusillanimous
Дата 4.1.2003, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 3.1.2003

Репутация: нет
Всего: нет



Pegas

Нет! Все верно! Только от 0 до 25!!!

Хотел вот что спросить. Факториал я правильно обозначил? fact(i)
А то neutrino написал по другому,  Idx это одно и то же?
Idx и fact(i)  ???
PM MAIL   Вверх
Pusillanimous
Дата 5.1.2003, 09:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 3.1.2003

Репутация: нет
Всего: нет



С первой справился. Со второй:
<<Замена элементов в массиве.
В линейном массиве целых чисел d(25) заменить все элементы, меньшие нуля на квадрат этих элементов.

- не уверен :(  Смотрите,
Program massiv;
const
n: Integer = 25;
type
TMyArray = array[0..25] of Byte;
var
Idx, B: Integer;
d: TMyArray;
begin

for Idx := 0 to 24 do
 
  if d[Idx]<0 then d[idx]:=d[idx]*d[Idx];
Writeln ('Решение=',d[idx]);

end.

Ошибки есть? По-моему тут чего-то не то. В результате получается 0. Так и должно быть?

С третьей
<<3. Двумерные массивы.
Найти сумму всех четных элементов двумерного массива целых чисел a(20,30).

Я написал:

Program massiv;
const
n: Integer = 25;
type
TMyArray = array[0..25] of Byte;
var
m,i,j,Idx, B: Integer;
a: TMyArray;
begin
i:=20;
j:=30;

Sum:=0;
for i:= to n do
for j:= to m do
if a[i,g] mod 2 =0 then sum:=sum+a[i,j];
Writeln ('Reshenie=',sum);
Readln;

end.

Тут ругается на sum при первом же её упоминании. Тут я наверное конкретно загнался. Исправте меня, пожалуйста. Я сразу не смог проверить все коды, т.к мало времени было, экзамены видите ли. :)
Двумерные массивы это по-моему штука в n раз посложней одномерных. :) Но все равно, хочу научиться ПРАВИЛЬНО писать программы!
PM MAIL   Вверх
МММ
Дата 5.1.2003, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 354
Регистрация: 18.6.2002

Репутация: нет
Всего: 1



А если так
var
a: array [0..25] of integer;
c: array [0..25] of integer;

b,i,j: integer;
begin
// первый вопрос
b:=2;
for i:=0 to 25 do
a[i]:=b*i;
for i:=0 to 25 do
memo1.lines.add(inttostr(a[i]));

// второй вопрос
for i:=0 to 25 do
if c[i]<>0 then c[i]:=sqr(c[i]);

for i:=0 to 25 do
memo2.lines.add(inttostr(c[i]));

а насчет третьего, я не понял там нечетный элемент массива , то есть a[1,3]  или а[13, 7]

for i:=0 to 20 do
for j:=0 to 30 do
   if ((i mod 2)=0 ) and ((j mod 2)=0) then sum:=sum+d[i,j];

или все таки значение массива не четное ( a[1,1]=3 )


for i:=0 to 20 do
for j:=0 to 30 do
   if (d[i,j] mod 2)=0 then sum:=sum+d[i,j];


--------------------
PM MAIL   Вверх
Pusillanimous
Дата 5.1.2003, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 3.1.2003

Репутация: нет
Всего: нет



Должно быть четное :)

Спасибо.
PM MAIL   Вверх
МММ
Дата 5.1.2003, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 354
Регистрация: 18.6.2002

Репутация: нет
Всего: 1



чуть не забыл:
var
d[i,j]: array [0..20,0..30] of integer;
sum: integer;

и еще

sum:=0;


--------------------
PM MAIL   Вверх
neutrino
Дата 5.1.2003, 20:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: нет
Всего: 62



Привет!
Да, я может погорячился с константами. Напиши просто:
const n=25;
Удобно ими пользоваться, когда ты делаешь много обработок массива, т.к. если ты решил увеличить длину, просто изменяешь значение константы. А в третьей задаче, извиняюсь за неаккуратность: не объявил массив.

program Array;

const
 n = 20; //Количество строк
 m = 30; //Количество колонок
type
 TMyArray = array[0..n][0..m] of Byte; //Объявление типа двухмерного массива из байтов
var
 Sum, I, J: Integer;//Сумма и два счетчика по строкам и столбцам
 A: TMyArray; //Наш массив
begin
 Sum := 0; //Обнуляем сумму в начале
 for I := 0 to n do //Первый цикл по строкам, второй по столбцам
   for J := 0 to m do
     //Если элемент кратен 2-м (делится на 2 без остатка), добавить его в сумму.
     if A[I,J] mod 2 = 0 then Sum := Sum + A[I,J];
end.

Удачи!

2МММ: Тут не Delphi, а просто паскаль. как я понял.




--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
neutrino
Дата 5.1.2003, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: нет
Всего: 62



Цитата
чуть не забыл:
var
d[i,j]: array [0..20,0..30] of integer;
sum: integer;

и еще

sum:=0;

Так объявлять нельзя.
надо так:
var
 d: array [0..20,0..30] of integer;


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
Pusillanimous
Дата 5.1.2003, 22:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 3.1.2003

Репутация: нет
Всего: нет



МММ

Я только не понял что значит: memo2.lines.add(inttostr(c[i]))
Три недели за Паскалем только работаю, до этого пару раз пересекался, но так программировать и не научился. Вот, с помощью всеминого разума осваиваю пока только азы, самое основное. А токой строчки я не встречал. Можно разьяснить поконкретней, что она делает?
PM MAIL   Вверх
neutrino
Дата 5.1.2003, 22:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: нет
Всего: 62



Это вот как раз уже к Delphi относится. Не обращай внимания, пока.
Цитата

а насчет третьего, я не понял там нечетный элемент массива , то есть a[1,3]  или а[13, 7]

for i:=0 to 20 do
for j:=0 to 30 do
  if ((i mod 2)=0 ) and ((j mod 2)=0) then sum:=sum+d[i,j];

Так четные места, или сами значения массива? Я так понял, что значения. А если места, то нет смысла проверять. Просто начинаем цикл с 0 и увеличиваем на 2 каждый шаг.


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
Medved
Дата 6.1.2003, 01:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 14
Всего: 154



Цитата

Привет!
Да, я может погорячился с константами. Напиши просто:
const n=25;
Удобно ими пользоваться, когда ты делаешь много обработок массива, т.к. если ты решил увеличить длину, просто изменяешь значение константы. А в третьей задаче, извиняюсь за неаккуратность: не объявил массив.

program Array;

const
n = 20; //Количество строк
m = 30; //Количество колонок
type
TMyArray = array[0..n][0..m] of Byte; //Объявление типа двухмерного массива из байтов
var


Да neutrino ты погорячился с константами, ни в Pascal ни в Delphi так объявлять массивы нельзя! Мы же уже обсуждали в этом топике эту тему, прочитай 2-3 страницу.




--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
Pusillanimous
Дата 6.1.2003, 02:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 3.1.2003

Репутация: нет
Всего: нет



Pegas

Можно пояснить мои представления.Когда задается массив например целых чилел a(20,30) то это значит, что массив сожержит 20 строк и 30 столбцов (мысленно представляю таблицу Экселя). Т е объявляя массив  
d: array [0..20,0..30] of integer;

Я даю понять PC, что имеется некие ячейки данных в пределе этого объявленного массива. А как тогда PC заполняет эти ячейки? Т е изначально, я так понимаю, они пусты, нужно задать, какими числами массив заполнен. Вот в прирмерах выше массив заволняет Byte (да?), или я все не так понимаю. Т е хотелось бы вывести этот массив на экран, что бы видеть значения, корорые потом обрабатываются, как в третей задаче.
  Можно про это пояснить?
PM MAIL   Вверх
Black_Joker
Дата 6.1.2003, 04:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 212
Регистрация: 9.11.2002
Где: Таганрог

Репутация: нет
Всего: нет



Когда только объявляешь массив, т.е.
var d: array [] of

begin

Далеко не всегда он заполнен нулями, я сталкивался с тем, что там был всякий мусор, вписанный наусмотрение системы.
И еще, Sum, как переменную использовать не желательно, т.к. это функция из одного юнита (к сожаленю забыл из какого, но кажется что-то про массивы)
PM   Вверх
Pusillanimous
Дата 6.1.2003, 07:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 3.1.2003

Репутация: нет
Всего: нет



Итак. Вот три программы, ошибок при проверки нет, но меня волнует

не это. Хочу спросить, какой результат должен быть выведен на

экран, после завершения расчетов программы? Например в третей

программе он вывел 0. Так и должно быть, или чего-то получается?

Первая програма, по-моему работает корректно. Напомню, нужно

было  заполнить линейный массив целых чисел а(n) по правилу а[i]=b

* i!

Program massiv1;
const
n: Integer = 25;
type
TMyArray = array[0..25] of Byte;
var
Idx, b: Integer;
а: TMyArray;
begin
Writeln ('inter 1 element b=');
Readln (b);
for Idx := 0 to 25 do
a[idx]:=b*idx;
Writeln ('Reshenie=',a[idx]);
Readln;
end.

На счет второй программы я сомневаюсь, похоже, я тут что-то

напутал, т е не вижу результатов своих (и наших :)) трудов.  Замена

элементов в массиве.
В линейном массиве целых чисел d(25) заменить все элементы,

меньшие нуля на квадрат этих элементов.
Как можно сделать, сначала чтобы увидеть этот массив, а потом

увидеть результат замены?

Program massiv2;
const
n: Integer = 25;
type
TMyArray = array[0..25] of Byte;
var
Idx, B: Integer;
d: TMyArray;
begin

for Idx := 0 to 24 do
 
  if d[Idx]<0 then d[idx]:=d[idx]*d[Idx];   //может лютче Sqr(d[idx])  ?
Writeln ('Reshenie=',d[idx]);
Redln;
end.


Ну и третья :) В конце традиционно выводит Reshenie=0  :(

program massiv3;
const
n = 20;
m = 30;
type
TMyArray = array[0..n,0..m] of Byte;
var
Sum,i,j : integer;
a: TMyArray;

Begin

Sum:=0;
for i:=0 to n do
for j:=0 to m do

if a[i,j] mod 2 =0 then sum:= sum+a[i,j];
Writeln ('Reshenie =' sum);
Readln;
end.

Так чего тут нуль всегда в ответе
PM MAIL   Вверх
Pusillanimous
Дата 6.1.2003, 07:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 3.1.2003

Репутация: нет
Всего: нет



Black_Joker

"И еще, Sum, как переменную использовать не желательно"

А что можно использовать в альтернативу? Неужели вручную 600 значений суммировать??? :)
PM MAIL   Вверх
Spawn
Дата 6.1.2003, 07:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 278
Регистрация: 3.6.2002

Репутация: нет
Всего: нет



Цитата(Pusillanimous @ 05.1.2003, 23:09)
for Idx := 0 to 24 do
 
  if d[Idx]<0 then d[idx]:=d[idx]*d[Idx];   //может лютче Sqr(d[idx])  ?
Writeln ('Reshenie=',d[idx]);
Redln;
end.

Ты перед тем как проверять заполнял массив????? Если ты этого я не делал, то я думаю ни чего работать и не будет)) Ты сначала должен заполнить массив числами, например случаяными:

Randomize;
for Idx := 0 to 24 do
d[Idx]:=Random(-100-100);

То же самое можно сказать про третий массив.
PM MAIL   Вверх
Spawn
Дата 6.1.2003, 07:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 278
Регистрация: 3.6.2002

Репутация: нет
Всего: нет



[quote=Spawn,05.1.2003,23:30][quote=Pusillanimous,05.1.2003,23:0]

"И еще, Sum, как переменную использовать не желательно"

А что можно использовать в альтернативу? Неужели вручную 600 значений суммировать??? :)quote]

Все что придет в голову, хоть abrakadabra  ))  Но лучше переменным давать осмысленные значения, иначе потом можно запутаться в них( особенно ели программа большая)

P.S. Только там есть пара исключений с которых не может начинаться переменная, например с цифры нельзя начинать ее обозначение, с таких знаков как !,",№,;,%,:,?,*(Такие занки и внутри переменной запрещены)  и т.д.
PM MAIL   Вверх
Pusillanimous
Дата 6.1.2003, 09:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 3.1.2003

Репутация: нет
Всего: нет



Цитата(Spawn @ 05.1.2003, 23:30)

"Ты перед тем как проверять заполнял массив?????"


Ну наконец, я дополз до этого! Конечно не заполнял. И откуда я знал, что они не заполнены?

Я уже спрашивал, но мой вопрос оставлен был без внимания:

"Можно пояснить мои представления.Когда задается массив например целых чилел a(20,30) то это значит, что массив сожержит 20 строк и 30 столбцов (мысленно представляю таблицу Экселя). Т е объявляя массив  
d: array [0..20,0..30] of integer;

Я даю понять PC, что имеется некие ячейки данных в пределе этого объявленного массива. А как тогда PC заполняет эти ячейки? Т е изначально, я так понимаю, они пусты, нужно задать, какими числами массив заполнен. Вот в прирмерах выше массив заволняет Byte (да?), или я все не так понимаю. Т е хотелось бы вывести этот массив на экран, что бы видеть значения, корорые потом обрабатываются, как в третей задаче.
 Можно про это пояснить? "


Читал про массивы я , конечно немного, страниц 5, но там не нашел, как их заполнять. Я подумал, объявление массива само собой подразумевает его заполнение, а byte значит, что он заполнен целыми числами. Теперь конечно я так не думаю. А можно про заполнение массива какую-нить ссылочку?


"Если ты этого я не делал, то я думаю ни чего работать и не будет)) Ты сначала должен заполнить массив числами, например случаяными:"
А как заполнить массив не случайными, а целыми :) [/B]
PM MAIL   Вверх
Pusillanimous
  Дата 6.1.2003, 09:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 3.1.2003

Репутация: нет
Всего: нет



;-)
PM MAIL   Вверх
Pusillanimous
  Дата 6.1.2003, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 3.1.2003

Репутация: нет
Всего: нет



И откуда я знал, что они не заполнены?
PM MAIL   Вверх
Pusillanimous
Дата 6.1.2003, 09:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 3.1.2003

Репутация: нет
Всего: нет



Риторический вопрос, просьба не обращать внимания :)
PM MAIL   Вверх
Spawn
Дата 6.1.2003, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 278
Регистрация: 3.6.2002

Репутация: нет
Всего: нет



Цитата(Pusillanimous @ 06.1.2003, 01:20)
[quote=Spawn,05.1.2003,23:30][/quote]
"Ты перед тем как проверять заполнял массив?????"
А как заполнить массив не случайными, а целыми :) [/B]

Я уже приводил пример))):

Randomize;
for Idx := 0 to 24 do
d[Idx]:=Random(-100-100); //заполнение числами от -100 до 100

Поставь ето перед проверкой значений элементов массива.
PM MAIL   Вверх
neutrino
Дата 6.1.2003, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: нет
Всего: 62



2Black_Joker: Если бы Sum была бы функцией, ей нельзя было присвоить значение, а значит, компилятор не дал бы сделать так. Так что Sum можно использовать свободно.

2Pegas: Посмотрел, оказывается я был прав. В Turbo Pascal можно объявлять тип констант:
Код

 CONST n : INTEGER = 10;





--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
Spawn
Дата 6.1.2003, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 278
Регистрация: 3.6.2002

Репутация: нет
Всего: нет



Цитата(neutrino @ 06.1.2003, 12:55)
2Spawn: Если бы Sum была бы функцией, ей нельзя было присвоить значение, а значит, компилятор не дал бы сделать так. Так что Sum можно использовать свободно.

Вообще то про Sum не я писал)), а Black Joker. Я же просто разьяснил объявление переменных.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0990 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.