Кому порешать задачи - пишите сюда

zVonok

New Member
Народ помогите плиз
Язык паскаль
№1
Реализовать циклическую перестановку елементов одномерного масива на заданое пользователем число шагов.Вывод в строку.Заполнение через рандом.
№2
Реализовать все возможные перестановки елементов масива.(Одномерный)
№3
Реализовать все неповторяющиеся перестановки элемента масива.
№4
Определить количество вхождений заданой информации в масив.Заполнение рандом.Вивод в строку.
№5
Опредилить первое или последнее вхождение заданой информации в масив.Заполнение рандом.Вывод строка.
Народ помогите пожалусто просто в масивах неразобрался а научитса хочетса.
 

Пух

كنت بلهاء
Модератор
№4
Определить количество вхождений заданой информации в масив.Заполнение рандом.Вивод в строку.
константа - n-количество элементов в массиве(можно по другому, дело вкуса).
переменные: i-для прохождения массива, x-элемент, который будем искать, k-количество вхождений элемента в массив(в начале программы нужно присвоить значение 0), arr - массив
вводишь массив, выводишь на экран, спрашуешь что нужно искать (записуешь значение в переменную "x", с тем же типом данных что и массив).
начинаешь проходить массив
в цикл вставляем оператор сравнения. Если i-ый элемент массива равен "х", значит счетчик(k) увеличиваем на 1.

выводим число k на экран.

В 5й задаче нужно ещё 1 переменную описать("флаг", покажет когда совпадет нужный элемент с элементом с массива), у переменной "k" будет другое назначение - запомнить показатель "i" (номер элемента массива), когда произошло совпадение. Если ищем первое вхождение, то проходим массив с начала до конца, если последнее, с конца к началу.

i:=1; flag:=0;
repeat
if a=x then
begin
flag:=1;k:=i;
end
else
i:=i+1;
until (flag=1) or (i=n)


№1
Реализовать циклическую перестановку елементов одномерного масива на заданое пользователем число шагов.Вывод в строку.Заполнение через рандом.
например, в массиве 10 чисел. Последний элемент массива ( a[10] ) записываем в временную переменную ( temp:=a[10]). Теперь проходим массив с 10го по 2й элемент
так, чтобы следующий элемент был равен предыдущему

первый элемент делаем равным 10-му(тот, который в переменной temp). Все это повторяем "k" раз.

for k:=1 to k do
begin
temp:=a[10];
for i:=10 downto 2 do
a:=a[i-1];
a[1]:=temp;
end;
 
Останнє редагування:

Пух

كنت بلهاء
Модератор
const NSlov = 3; {не должно быть больше 255}
var Slova : array[1..NSlov] of string;

var S:string;
k:integer;

procedure Show_Slova(const SS : string);
var j: integer;
SResult : string;
begin
SResult := '';
for j:=1 to Length(SS) do SResult := SResult + Slova[ord(SS[j])] + ' ';
WriteLn(SResult);
end;

procedure ShowVariant(S0,S1 : string);
var I :byte;
begin
if length(S1)=1 then begin Show_Slova(S0+S1); Exit end;
for i:=1 to length(S1) do begin
ShowVariant(S0+S1,copy(S1,1,I-1)+
copy(S1,I+1,length(S1)));
end;
end;

begin
clrscr;
Slova[1] := 'vasya';
Slova[2] := 'y4it';
Slova[3] := 'yroki';

S := '';
for k:=1 to NSlov do S := S + chr(k);

ShowVariant('',S);
readkey;
end.


выводит на экран все возможные перестановки слов "vasya", "y4it", "yroki". Совсем немного передалать, будет и с рандомным массивом работать =)
п.с. не стоит забывать, что количество перестановок равно n! (n-количество слов, в данном случае 3). Тоесть при n=6 получим 120 перестановок, что не есть хорошо
п.с.с. самому писать лень (алгоритм думать), этот пример нагуглил, что автор мог сделать и сам..
 

Cris

Member
вообше алгоритм есть такой(єто только кажеться что его сложно написать):
есть масив 1 2 3 4 5, делаем рекурсию
берем 1
потом берем 2 и запускаем для него рекурсию еслиб он стоял перед 1 и посленее:
1 2
2 1
берем 3:
1 2 3
1 3 2
3 1 2
2 1 3
2 3 1
3 2 1
берем 4 и 5.... ну так до скольки надо, когда набираеться количество елементов столько сколько и в масиве, то выводим
 

zVonok

New Member
Народ помогите вот с такой задачкой пожалусто
Язык:pascal
В двумерном масиве реализовать перестановку заданих строк и столбцов (Масивы по 4 елемента ввод с клавиатуры)
 

Cris

Member
Народ помогите вот с такой задачкой пожалусто
Язык:pascal
В двумерном масиве реализовать перестановку заданих строк и столбцов (Масивы по 4 елемента ввод с клавиатуры)
вообщето искать надо, было уже 100%, но иши в теме Pascal оно еще там было
 

zVonok

New Member
Код:
program mde;
uses crt;
CONST M=4; N=4;
VAR a,b:array[1..M,1..N] of integer;
cas,z,q,i,x,j,y:integer;

begin

clrscr; randomize;

for i:=1 to M do
for j:=1 to N do
begin
x:=random(20);
a[i,j]:=x;
end;

y:=8;
for i:=1 to M do
begin
for j:=1 to N do
begin
case j of
1:x:=15;
2:x:=20;
3:x:=25;
4:x:=30;
end;
Gotoxy(x,y);
write(a[i,j]);
end;
inc(y,2);
end;

gotoxy(1,2);
writeln('Kakie menyat` stolbiki');
read(z,q);
for i:=1 to N do
begin
b[i,z]:=a[i,z];
a[i,z]:=a[i,q];
a[i,q]:=b[i,z];
end;
writeln('Kakie menyat` stroki`');
read(z,q);
for i:=1 to M do
begin
b[z,i]:=a[z,i];
a[z,i]:=a[q,i];
a[q,i]:=b[z,i];
end;

y:=8;
for i:=1 to M do
begin
for j:=1 to N do
begin
case j of
1:x:=50;
2:x:=55;
3:x:=60;
4:x:=65;
end;
Gotoxy(x,y);
write(a[i,j]);
end;
inc(y,2);
end;
readln;
end.
Народ пожалусто обьясните как эта задача виполняетса?
Код програмы нашол а как виполняетса я хз
 
Зверху