IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

2 страниц V  1 2 >  
 Ответить  Открыть новую тему 
> 2 задачи про массивы
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 2
Пол: Женский
Реальное имя: Ольга

Репутация: -  0  +


1. Нахождение максимального значения в массиве среди всех чётных чисел. Длина массива вводится с клавиатуры. Печатать элементы массивы по 9 штук, по формату :6. Тип обрабатываемых данных - целые.

2. Заполнить двумерный массив A(MxN) элементов символами из одномерного массива В (длиной не более 256 элементов) "змейкой" от конца к началу - сперва N-ю строку справа налево, затем N-1-ю слева направо и т.д. Массив B предварительно заполняется из входного текстового файла. Оба массива распечатать. Предельные значения числа строк 16, столбцов 16. Тип обрабатываемых данных - символьный.

Помогите решить, я что-то путаюсь в них..
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Что сама делала? Или хотя бы пыталась делать?

Что является основной проблемой при решении?
Цитата
Помогите решить
Ключевое слово выделено, ты начинай, сделай хоть что-то, а мы поможем...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Профи
****

Группа: Пользователи
Сообщений: 652
Пол: Мужской
Реальное имя: Алексей

Репутация: -  20  +


Черт взяли и удалила именно ту тему,куда писал)))По поводу второй задачи, заполнять змейкой,то что то в духе

k:=1;{индекс массива В}
s:=1;{переменная для чередования строк}
for i:=n downto 1 do begin
if s mod 2=0 then begin
for j:=1 to m do begin
A[i,j]:=B[k];
k:=k+1;
end;
else
for j:=m downto 1 do begin
A[i,j]:=B[k];
k:=k+1;
end;
end;
s:=s+1;
end;


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

УЧТИ.Я лиш подал идею.Это не является решением твоей задачи.(чтоб это стало решением задачи, нужно еще доделать)

Сообщение отредактировано: Krjuger -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






"Змеек" как минимум 4 способа выложено на форуме, половина из них - в FAQ-е, отлаженные и оттестированные. Зачем опять велосипед - непонятно... Что, поиск можно отключать, никто не пользуется? Устроили здесь соревнования Formula I, главное быстрее ответить и счетчик накрутить?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Профи
****

Группа: Пользователи
Сообщений: 652
Пол: Мужской
Реальное имя: Алексей

Репутация: -  20  +


Нет, мне действительно интересно порешать такие задачки в свободное время))))насчет фака,иногда там бывают( конешно же все рабочие и отлаженые) задачи,но довольно "высоко" написанные.я имею в виду их писали бывалые програмисты,а не особо понимающим людям их решения тьма кромешная и им надо что нибудь попроще))
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Попроще - не значит правильнее, правда? Вот у тебя в решении - явное дублирование кода. Избавишься от условия if внутри цикла по строкам, +1 в репутацию тебе обеспечен (за освоение новых, более интересных, чем ты сейчас это делаешь, методов решения smile.gif ) Нельзя же все время делать все "в лоб", надо учиться и другим методам...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Профи
****

Группа: Пользователи
Сообщений: 652
Пол: Мужской
Реальное имя: Алексей

Репутация: -  20  +


Хорошо побежал подключать аспирантов... smile.gif


k:=1;{индекс массива В}
s:=1;{переменная для чередования строк}
for i:=n downto 1 do begin
for j:=1 to m do begin
if s mod 2=0 then
A[i,j]:=B[k];
else
A[i,m-j+1]:=B[k];

k:=k+1;
end;
s:=s+1;
end;


Лучше этого придумать пока что ничего не смог.

Сообщение отредактировано: Krjuger -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Даже не думай, я ж еще и вопросы задавать буду, почему так, а не иначе... cool.gif Чужими мозгами долго не протянешь...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Профи
****

Группа: Пользователи
Сообщений: 652
Пол: Мужской
Реальное имя: Алексей

Репутация: -  20  +


Мож тогда чему нибудь и научусь smile.gif ,yes my master,покажи мне путь истины.а вообще флуд уже начался,где там создатель темы???Умер чтоли??

Эм ну и где моя обещанная концетка*?

Сообщение отредактировано: Krjuger -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






Цитата
ну и где моя обещанная концетка*?
Ты ж от if-а не избавился smile.gif... Избавляйся - будет "конфетка"
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Профи
****

Группа: Пользователи
Сообщений: 652
Пол: Мужской
Реальное имя: Алексей

Репутация: -  20  +



k:=1;{индекс массива В}
s:=m;{переменная для чередования строк}
p:=m;
d:=1;
for j:=m downto 1 do begin
for i:=n downto 1 do begin
A[i,s]:=B[k];
s:=abs(s-p)+1;
k:=k+m;
end;
d:=d+1;
k:=d;
s:=p-1;
end;


Не бей сильно,я не знаю будет работать или нет))))паскаля нету щас с собой(не дома).Это все на что меня хватило,но это уже изврат)

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Krjuger @ 27.05.2009 21:48) *
я не знаю будет работать или нет))))
Не, не будет no1.gif .
Хоть я и не Паскаль..))


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Профи
****

Группа: Пользователи
Сообщений: 652
Пол: Мужской
Реальное имя: Алексей

Репутация: -  20  +


Ну подкиньте хоть идейку....Хотяб из теории,а то что то мой нерациональный ум ничего рационального не придумывает,а самому уже стало интересно.пока что я дошел только до варианта,где кол во строк четно.

Сообщение отредактировано: Krjuger -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Krjuger @ 28.05.2009 14:29) *
Ну подкиньте хоть идейку..
...
пока что я дошел только до варианта,где кол во строк четно.
А при чем тут количество строк?

Идейку?.. Ну, смотри.
Сделай переменную для величины изменения, d. Сначала положи d:=-1. Потом во внешнем цикле (в конце) умножай ее на -1.
Второй индекс, i2, сначала положи равным m, а потом так: Inc(i2,d).


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Профи
****

Группа: Пользователи
Сообщений: 652
Пол: Мужской
Реальное имя: Алексей

Репутация: -  20  +



k:=1;{индекс массива В}
s:=1;{переменная для чередования строк}
for i:=n downto 1 do begin
j:=m;
while (s mod 2=0) and (j>=1) do begin
A[i,j]:=B[k];
k:=k+1;
j:=j-1;
end;
while (s mod 2<>0) and (j>=1) do begin
A[i,m-j+1]:=B[k];
k:=k+1;
j:=j-1;
end;
s:=s+1;
end;


Вот еще вариантик.олько,что то мне подсказывает,что его ты тоже забракуеш,потому что
Цитата

Вот у тебя в решении - явное дублирование кода


Опять же пишу из универа.через чужой ноут без паскаля(в плане паскаля у человека нет).

Сообщение отредактировано: Krjuger -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


Компилятор в голове... самонадеянно smile.gif


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Krjuger @ 28.05.2009 15:32) *
что то мне подсказывает,что его ты тоже забракуеш,потому что
Цитата
Вот у тебя в решении - явное дублирование кода
Не только поэтому. Ты заменил if на while - и думаешь, прокатит? ))

Чем моя "идейка" не понравилась? вникай..))


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #18


Профи
****

Группа: Пользователи
Сообщений: 652
Пол: Мужской
Реальное имя: Алексей

Репутация: -  20  +


Я не знаю почему,но на момент размещения своего варианта,я твою идею,не видел.насчет -1,щас посмотрим...)))

Unconnected

компилятора в голове нету(процессор слишком слабенький,не тянет),задача больше математическая.Жаль до -1 сам не дошел(

Сообщение отредактировано: Krjuger -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #19


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


uses crt;
const m=5;n=5;z=25;
var i,j,f:byte;
d:integer;
b:array[1..z] of byte;
a:array[1..m,1..n] of byte;
begin
clrscr;
randomize;
for i:=1 to z do
begin
b[i]:=random(10);
write(b[i],' ');
end;
readln;
d:=-1;
f:=1;
i:=m;
j:=n;
repeat
repeat
a[i,j]:=b[f];
write(a[i,j],' ');
delay(50000);
inc(f);
j:=j+d;
until (j+d=-1) or (j+d=n+1);
d:=-d;
dec(i);
writeln;
until (i=0);
readln;
end.


Мой вариант:)

Не знаю правда, это ли Lapp имел в виду, когда говорил про d:=-1;, но кажется принцип похож)

Сообщение отредактировано: Unconnected -


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #20


Гость






Цитата
но кажется принцип похож)
Принцип, может, и похож, но у тебя вылет по ошибке 201 - Range Check, проверяй smile.gif

(не забудь включить контроль границ, естественно)
 К началу страницы 
+ Ответить 

2 страниц V  1 2 >
 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 16:04
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name