Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Turbo Pascal] Преобразование массива, Головоломка 
V
    Опции темы
ausar
Дата 6.8.2007, 09:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 127
Регистрация: 3.8.2007

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




M
Kuvaldis
Не забываем указывать язык программирования в названии темы!

Вот сестренка попросила решить мозгодробильную задачку на Turbo Pascal. Уж додрабливаю последние куски мозга  smile но принцип и технологию решения не могу онять smile Может кто подсобит. А то паскаль меня явно уделывает.

Некий массив z = (6, –6, –3, 8, 4, –7, 0) преобразован к виду z= (14, 0, 0, 16, 12, 0, 8). (вот на алгоритме преобразования меня и застопорило) Размер этого массива z - 10 произвольных элементов но обязательно в диапазоне от [–44,44] Чего уж говорить о том что надо после этого вычислить произведение тех элементов преобразованного массива, которые находятся в диапазоне [0, 18]

Умно! Но ведь на каждого умного как известно всегда находится кто нить поумнее. К сожалению я не в их числе  smile 



Это сообщение отредактировал(а) ausar - 6.8.2007, 10:36
PM MAIL   Вверх
ksili
Дата 6.8.2007, 09:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: нет
Всего: 17



Цитата(ausar @  6.8.2007,  14:08 Найти цитируемый пост)
Размер этого массива z - 10 произвольных элементов 

А сам написал массив из семи элементов:
Цитата

z = (6, –6, –3, 8, 4, –7, 0)

Да и в чём собственно проблема? Сформулируй задачу понятнее


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
ausar
Дата 6.8.2007, 09:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 127
Регистрация: 3.8.2007

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



Постараюсь структуризировать свой неуправляемый поток сознанияю Итак  smile 

1.Необходимо определить правило преобразования между z и z1
2. Сгенерировать генератором массив z из 10 элементов в диапазоне от -44 до 44 элементов и используя правило преобразования преобразовать
3. Вычислить произведение всех элементов преобразованного массива, которые находятся в диапазоне [0, 18].

Вот вроде бы так и должно быть  smile 

PM MAIL   Вверх
ksili
Дата 6.8.2007, 09:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: нет
Всего: 17



Цитата(ausar @  6.8.2007,  14:43 Найти цитируемый пост)
Необходимо определить правило преобразования между z и z1

имея только одну пару массивов z и z1, можно таких правил понапридумывать бесконечное количество. Необходима ещё информация, какие-нибудь ограничения на данное преобразование


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
ausar
Дата 6.8.2007, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 127
Регистрация: 3.8.2007

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



Пардон! Немного ошибся

имеется массив z из семи эелементов до преобразования и после (массив z1 ошибка) нужно определить правило преобразования. Потом сгенерировать произвольный массив из 10 эелементов и применить к нему это правило. Затем подсчитать сумму элементов в диапазоне от 0 до 18. 

А про запреты ничего не сказано :(
PM MAIL   Вверх
sentry
Дата 6.8.2007, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Code Monkey
*


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

Репутация: 4
Всего: 10



Кроме той закономерности, что все отрицательные числа стали нулями, я пока ничего не вижу. 
Может остальные числа надо как-то по умному складывать smile
PM MAIL   Вверх
JAPH
Дата 6.8.2007, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 8.1.2007
Где: Ленобласть

Репутация: 12
Всего: 23



Цитата
 Затем подсчитать сумму элементов в диапазоне от 0 до 18.

50

Добавлено @ 17:26
Преобразование:
Код
z[1] := 14; z[2] := 0; z[3] := 0; z[4] := 16; z[5] := 12;
z[6] := 0; z[7] := 8; z[8] := 0; z[9] := 0; z[10] := 0;


smile

Добавлено через 7 минут и 46 секунд
Ну, а вообще 
Код
if z[i] < 0 then z[i] := 0 else z[i] := z[i] + 8;


Это сообщение отредактировал(а) JAPH - 6.8.2007, 17:27


--------------------
Что непонятно - спрашиваем smile
PM MAIL ICQ   Вверх
ausar
Дата 7.8.2007, 06:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 127
Регистрация: 3.8.2007

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



Большое спасибо всем содействующим!

После долгих мучений родил вот такой код. Реализовано суммирование всех элементов. Но как реализовать суммуирование тех что в диапазоне от 0 до 18
Осталось совсем немного.

Код

uses crt;
type mas=array [1..10] of integer;
var H:mas;
i: integer;
Procedure mconv(var z:mas);
var i:integer;
begin
  for i:=1 to 10 do
  if z[i] < 0 then z[i] := 0 else z[i] := z[i] + 8;
end;
function hs(a:mas):integer;
var s:integer;
begin
    s:=0;
    for i:=1 to 10 do
    if(i<18) then
    s:=s+a[i];
    hs:=s;
end;
Begin
    clrscr;
    Randomize;
    for i:=1 to 10 do begin
    H[i]:=Random(89)-44;
    write(H[i]:4);
    end;
    mconv(H);
    writeln;
    writeln;
    for i:=1 to 10 do
    write(H[i]:4);
    write(#13,#10,#10,'Summa elementov = ',hs(H));
    readln;
End.


PM MAIL   Вверх
ksili
Дата 7.8.2007, 06:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: нет
Всего: 17



Вместо
Код

if(i<18) then

Напиши
Код

if(i<18 && i>0) then

Ну или как там это на паскале пишется. Короче, условие уточни...


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
ausar
Дата 7.8.2007, 08:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 127
Регистрация: 3.8.2007

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



Нет так он продолжает суммировать все элементы массива
PM MAIL   Вверх
ksili
Дата 7.8.2007, 08:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: нет
Всего: 17



не 
Код

if(i<18 && i>0) then

а
Код

if(a[i]<18 && a[i]>0) then



--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
ausar
Дата 7.8.2007, 08:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 127
Регистрация: 3.8.2007

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



Да вот оно!
Наконец дошло! Я уже глючитьь начал.
Все работает!
Спасибо большое!

Это сообщение отредактировал(а) ausar - 7.8.2007, 08:24
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

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

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


 




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


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

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