![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
не знаю что изменить в коде чтобы программа работала правильно.
Задание: Составьте программу, проверяющую, можно ли, меняя местами элементы одномерного массива А, получить целочисленный массив В. Текст программы PHP код:
Последний раз редактировалось Kobe_Bryant_24, 29.12.2009 в 16:17. |
|
#2
|
|||
|
|||
|
Не совсем понятно, что надо сделать.
Как я понимаю: У тебя есть некоторый массив A с числати типа Double (Extended) и т.д. И есть некоторое целое число n - длинна желаемого массива. Надо проверить, можно ли найти n целых чисел в массиве A, что бы составить массив B длинной n. Если так, то задача решается просто: Код:
function CheckForB(A : Array Of Double; n : Integer) : Boolean;
var
I : Integer;
C : Integer;
begin
Result := False;
C := 0;
For I := Low(A) To High(B) Do
If Int(A[i]) = A[i] Then Inc(C);
Result := C >= n;
end; |
|
#3
|
|||
|
|||
|
Вначале я задаю два одномерных массива А и В. А в задании вопрос:проверить можно ли, меняя местами элементы массива А получить массив В.
P.S. в моём коде переменная s - есть количество совпадений |
|
#4
|
|||
|
|||
|
А-а-а... Да, это немного другая задача.
Алгоритм такой. Берем массив B. Идем по нему циклом. проверяем каждый элемент на наличие в массиве A. Если элемент найден, то удаляем такой элемент из массива A и переходим к следующему элементу массива B. Если прошли весь массив B и нашли для него соотв. элементы в A, то можно. Иначе - нельзя. ЗЫ. Код писать лень Там все просто. Тебе надо не только проверять на совпадения, но и контролировать их кол-во. Т.е. если в массиве B есть две 1, то и в массиве А их должно быть как минимум столько же. Ну и длинны массивов надо проверить для начала. |
|
#5
|
|||
|
|||
|
напишите код пожалуйста
|
|
#6
|
|||
|
|||
|
люди! напишите код пожалуйста!
яп просто уже целый день сижу, не могу сообразить ничего! |
|
#7
|
||||
|
||||
|
наверное гдето так:
Код:
function TForm1.Compare2Mass(A, B: array of Integer): Boolean;
var
i, n, k, lenA : Integer;
X: array of Integer;
noIn,
netA: Boolean;
begin
Result := false;
lenA := Length(A);
if lenA <> Length(B) then
Exit; // если длины не совпадают то не получится
SetLength(X, lenA);
for i := 0 to lenA - 1 do
begin // для каждого элемента B[i] проверяем
netA := true;
for n := 0 to lenA - 1 do // проверяем массив А
if B[i] = A[n] then // есть такой элемент в массиве А
begin
noIn := true;
for k := 0 to i - 1 do
if n = X[k] then
begin // его уже сопоставили с другим элементом массива В
noIn := false;
break;
end;
if noIn then
begin // этот элемент еще не сопостовляли
X[i] := n;
netA := false; // нашли новый элемент в А соответствующий очередному в В
break;
end;
end;
if netA then // не нашли новый элемент в А соответствующий очередному в В
Exit;
end;
// если еще не вышли значит все элементы найдены
Result := true;
end; |
|
#8
|
|||
|
|||
|
Пришло на ум, одно из решений) отсортировать оба массива, а потом пробежаться в одном цикле по обоим массивам, до конца(истина) или до первого несовпадения(ложь)...
|
|
#9
|
||||
|
||||
|
Цитата:
PHP код:
|
|
#10
|
|||
|
|||
|
всем спасибо, сделал немного по-другому, тоже с сортировкой, работает
завтра сдам на зачёт всё вместе с этим) |