Модераторы: Alx, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Pascal] Задача №8 (операции с массивами), заочная олимпиада по информатике 
:(
    Опции темы
KasMP
Дата 16.10.2006, 19:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 586
Регистрация: 8.8.2006

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



Цитата
8. Дан массив целых чисел из 25 элементов, заполненный случайным образом на (-35; 75).
  • Удалить из него все элементы, первая цифра которых четная.
  • Вставить число K1 после всех элементов, больших заданного числа, а число K2 - перед всеми элементами, кратными 3.
  • Перенесите первые K элементов в конец: A[k+1], A[k+2], ... , A[1], ... , A[k].

(по моим предположениям, не меньше 15 баллов)

Впринципе, на первый взгляд, все кажется очень просто: поискал четные цыфирки, поудалял (перезаписал) элементы, посмотрел, что крастно, что не кратно, что больше, что меньше, вставил нужные числа, перенес.

Но, как ни странно, я споткнулась уже на первом этапе.

Моя прога почему-то удаляет только первый элемент, у которого первая цифра четная, а остальные элементы с четной первой цифрой оставляет в массиве.
Еще я не знаю, как задать интервал (-35;75). Вернее, знаю, что c:=random(a-b)+b генерирует число c от a до b. Но при записи random(-35-75)+75 - "Error 76: Constant out of range".
Код
var    a: array [1..100] of integer;
        i, k, r, q: integer;


begin
randomize; writeln;
q:=0;
for i:=1 to 25 do a[i]:=random(75);
writeln ('massiv1');
for i:=1 to 25 do write (a[i], ' ');

{УДАЛЕНИЕ ВСЕХ ЭЛЕМЕНТОВ, ПЕРВАЯ ЦИФРА КОТОРЫХ ЧЕТНАЯ}
for i:=1 to 25 do begin
    k:=i;
    if ((a[i]>10) or (a[i]<-10)) then begin
        r:=a[i] div(10);
        if (r mod(2)=0) then begin
            for i:=k to 25 do a[i]:=a[i+1];
            q:=q+1;
            end;
        end
    else
        if (a[i] mod(10)=0) then begin
            for i:=k to 25 do a[i]:=a[i+1];
            q:=q+1;
            end;
    end;

writeln; writeln ('massiv2');
for i:=1 to 25-q do write (a[i], ' ');


readln;
end.

PM MAIL   Вверх
skyboy
Дата 16.10.2006, 19:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

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



генерировать случайные числа можно так:
random(75+35 + 1)- 35 ("random(75+35 + 1)" генерирует числа от 0 до 110; "random(75+35 + 1) - 35" - от -35 до 75).

PM MAIL   Вверх
KasMP
Дата 17.10.2006, 18:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 586
Регистрация: 8.8.2006

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



skyboy, а ты бы не мог мне объхяснить, как вообще задаются интервалы-промежутки-отрезки через random? smile  smile 

З.Ы.. Ошибку так и не нашла smile .
(надо развивать в себе это навык, т.к. устранение и поиск багов (особенно, собственных) - наверно, одно из наиболее важных умений для программиста)
PM MAIL   Вверх
skyboy
Дата 17.10.2006, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

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



ну, основная идея:
надо сгенерировать число от -5 до 5. но так нельзя, random не принимает отрицательные аргументы.
можно сгенерировать от 0 до 10, а потом, вычтя 5, получить от -5 до 5. вот и все smile
PM MAIL   Вверх
KasMP
Дата 18.10.2006, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 586
Регистрация: 8.8.2006

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



Цитата(skyboy @  17.10.2006,  19:07 Найти цитируемый пост)
ну, основная идея:
надо сгенерировать число от -5 до 5. но так нельзя, random не принимает отрицательные аргументы.
можно сгенерировать от 0 до 10, а потом, вычтя 5, получить от -5 до 5. вот и все smile 

Ясненько. smile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Интересные и занимательные задачи по программированию | Следующая тема »


 




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


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

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