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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Бедный студент нуждается в помощи!!! Кто умеет использовать массивы??? 
:(
    Опции темы
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   Вверх
Страницы: (4) Все 1 [2] 3 4 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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