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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Бедный студент нуждается в помощи!!! Кто умеет использовать массивы??? 
:(
    Опции темы
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   Вверх
Страницы: (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.0588 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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