Инверсия массива |
1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
Инверсия массива |
Vitamin |
10.12.2012 21:59
Сообщение
#1
|
Группа: Пользователи Сообщений: 3 Пол: Мужской Реальное имя: Кирилл Репутация: 0 |
Здравсвуйте мне дали вот такое задание:
Заполнить массив из 12 элементов случайными числами в интервале от -12 до 12 и выполнить инверсию для каждой 3-ти массива. Никак не могу понять как это сделать. Подскажите пожалуйста. |
@nto$ka |
11.12.2012 9:45
Сообщение
#2
|
Новичок Группа: Пользователи Сообщений: 38 Пол: Мужской Репутация: 0 |
Случайные числа:
В паскале есть функция random. Если написать x:=random; то в икс будет занесено случайное дробное значение от нуля до единицы. Но т.к. тебе нужны целые, то для этого служит функция random(a) которая возвращяет целое значение от нуля до a Чтобы получить некоторое целое значение от a до b воспользуйся формулой a+random(b-a+1); В твоем случае это выглядит как -12+random(12+12+1); Чтобы функция random работала правильно в самом начале программы вызывают процедуру randomize; Инверсия: Для каждой трети массива - это по 4 чисел. Сделай внешний цикл i:=0 to 2 и внутренний цикл j:=1 to 2 Таким образом, тебе нужно будет поменять местами m[j+2*i] и m[5-(j+2*i)] |
Гость |
19.12.2012 19:34
Сообщение
#3
|
Гость |
Случайные числа: В паскале есть функция random. Если написать x:=random; то в икс будет занесено случайное дробное значение от нуля до единицы. Но т.к. тебе нужны целые, то для этого служит функция random(a) которая возвращяет целое значение от нуля до a Чтобы получить некоторое целое значение от a до b воспользуйся формулой a+random(b-a+1); В твоем случае это выглядит как -12+random(12+12+1); Чтобы функция random работала правильно в самом начале программы вызывают процедуру randomize; Инверсия: Для каждой трети массива - это по 4 чисел. Сделай внешний цикл i:=0 to 2 и внутренний цикл j:=1 to 2 Таким образом, тебе нужно будет поменять местами m[j+2*i] и m[5-(j+2*i)] Не совсем понял как это делать из всего, что ты написал я понял только это Код uses crt; var A:array[1..12]of integer; i,j,c:integer; begin clrscr; randomize; for i:=1 to 12 do begin A[i]:=random(24)-12; write(A[i]:4); end; |
Vitamin |
19.12.2012 19:35
Сообщение
#4
|
Группа: Пользователи Сообщений: 3 Пол: Мужской Реальное имя: Кирилл Репутация: 0 |
Сори я нейчано написал от гостя
|
@nto$ka |
20.12.2012 9:24
Сообщение
#5
|
Новичок Группа: Пользователи Сообщений: 38 Пол: Мужской Репутация: 0 |
Цитата A[i]:=random(24)-12; random(24) вернет случайное значение от 0 до 23. Даже если выпадет 23, вычитая из него 12 ты получишь 11. А тебе нужна вероятность получить 12. Поэтому, правильнее будет так: A[i]:=random(25)-12; И еще:
Попробую объяснить по-другому. Внешний цикл i перебирает трети твоего массива. Сначала нулевая треть, затем первая и т.д. Во внутреннем цикле j перебираются элементы данной трети. Всего нужно перебрать первых два элемента трети, т.к. первый ты меняешь с четвертым, а второй с третьим. Таким образом, тебе нужно будет поменять местами m[j+2*i] и m[5-(j+2*i)] Сообщение отредактировано: @nto$ka - 20.12.2012 9:25 |
Vitamin |
20.12.2012 12:18
Сообщение
#6
|
Группа: Пользователи Сообщений: 3 Пол: Мужской Реальное имя: Кирилл Репутация: 0 |
random(24) вернет случайное значение от 0 до 23. Даже если выпадет 23, вычитая из него 12 ты получишь 11. А тебе нужна вероятность получить 12. Поэтому, правильнее будет так: A[i]:=random(25)-12; И еще:
Попробую объяснить по-другому. Внешний цикл i перебирает трети твоего массива. Сначала нулевая треть, затем первая и т.д. Во внутреннем цикле j перебираются элементы данной трети. Всего нужно перебрать первых два элемента трети, т.к. первый ты меняешь с четвертым, а второй с третьим. Таким образом, тебе нужно будет поменять местами m[j+2*i] и m[5-(j+2*i)] Не могу понять все равно ( P.S. Я просто новичек в этом очень трудно понимается это может быть через блок схемы до меня допрет ? =( Сообщение отредактировано: Vitamin - 20.12.2012 12:18 |
Текстовая версия | 20.10.2024 9:05 |