![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Medved |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 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 -------------------- |
|||
|
||||
| Pusillanimous |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 3.1.2003 Репутация: нет Всего: нет |
Pegas
Я тоже не видел |
|||
|
||||
| Medved |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 7209 Регистрация: 15.9.2002 Где: Kazakhstan, Astan a Репутация: 14 Всего: 154 |
Если же в условии задачи четко сказано, что количество элементов массива должно устанавливаться пользователем, то тогда надо использовать не линейный (читай как одномерный статистический массив) а динамический, и при задании длины этого динамического массива
переменной LenghtArray присваивать значение, заданное пользователем. но судя по тексту твоей задачи, тебе нужно использовать именно линейный массив, а он как известно объявляется жестко, т.е. TMyArray = array[0..25] of Byte; -------------------- |
|||
|
||||
| Pusillanimous |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 3.1.2003 Репутация: нет Всего: нет |
Pegas
В смысле линейный массив это всегда только от 0 до 25? Я Читал что есть линейные и двумерный массивы. т. е. я правильно понимаю, что когда условие задачи содержит фразу заполнить лилейный массив и не дано что-то вроде "массив целых чисел a(n)" то обьявлять его нужно только так: TMyArray = array[0..25] of Byte Да? |
|||
|
||||
| Medved |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 7209 Регистрация: 15.9.2002 Где: Kazakhstan, Astan a Репутация: 14 Всего: 154 |
Линейный (одномерный) массив – массив, у которого в описании задан только один индекс, если два индекса – то это двумерный массив и т.д. Одномерные массивы часто называют векторами, т.е. они представляют собой конечную последовательность пронумерованных элементов. Т.Е. да, ты правильно понял, это грубо говоря, когда точно известно количество эллементов массива. -------------------- |
|||
|
||||
| Pusillanimous |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 3.1.2003 Репутация: нет Всего: нет |
Pusillanimous
те наоборот, дано |
|||
|
||||
| Pusillanimous |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 3.1.2003 Репутация: нет Всего: нет |
Pegas
Спасибо! С этим разобрался. И все же, почему не рекомендуется хранить на рабочем столе никаких папок и файлов, кроме ярлыков.. |
|||
|
||||
| Medved |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 7209 Регистрация: 15.9.2002 Где: Kazakhstan, Astan a Репутация: 14 Всего: 154 |
Я не понял о чем ты... Я прочел твои задачи еще раз, и судя по всему, в первой задаче по ее условию, тебе придется использовать динамический массив. Поскольку в первой задаче не задано точное количество элеиментов массива. -------------------- |
|||
|
||||
| Medved |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 7209 Регистрация: 15.9.2002 Где: Kazakhstan, Astan a Репутация: 14 Всего: 154 |
Задай этот вопрос в разделе флейма, тебе там очень подробно все объяснят. (Или наоборот, опровергнут мое утверждение -------------------- |
|||
|
||||
| Pusillanimous |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 3.1.2003 Репутация: нет Всего: нет |
Pegas
Нет! Все верно! Только от 0 до 25!!! Хотел вот что спросить. Факториал я правильно обозначил? fact(i) А то neutrino написал по другому, Idx это одно и то же? Idx и fact(i) |
|||
|
||||
| Pusillanimous |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 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 раз посложней одномерных. |
|||
|
||||
| МММ |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 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]; |
|||
|
||||
| Pusillanimous |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 3.1.2003 Репутация: нет Всего: нет |
Должно быть четное
Спасибо. |
|||
|
||||
| МММ |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 354 Регистрация: 18.6.2002 Репутация: нет Всего: 1 |
чуть не забыл:
var d[i,j]: array [0..20,0..30] of integer; sum: integer; и еще sum:=0; |
|||
|
||||
| neutrino |
|
|||
![]() 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 |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |