Урок 15 задача 10: Являются ли элементы массива уникальными - Обсуждение решения
Primary tabs
Напишите функцию, которая определяет являются ли значения переданного массива целых чисел уникальными относительно друг друга.
Протестируйте работу функции на массиве из 7 случайных элементов из диапазона от 1 до 15-ти.
Например для массива:|1|5|4|5|6|7|8|-- функция должна "сообщить", что он неуникальный
а для:|1|15|4|5|6|7|8|-- что уникальный.
program project1;
type newArr = array [1..7] of integer;
var numArr: newArr;
i: integer;
procedure unicalArr(var promArr:newArr);
var x,y,flag:integer;
begin
for x := 1 to 7 do
for y := 1 to 7 do
begin
if((promArr[x]=promArr[y])and (x <> y))then
flag:=1;
break;
end;
if (flag=0)then
write('уникален')
else
write('Не уникален');
end;
begin
for i:=1 to 7 do
begin
write('Введите ',i,' элемент массива: '); readln(numArr[i]);
end;
for i:=1 to 7 do
begin
write(numArr[i],'|');
end;
writeln();
unicalArr(numArr);
writeln();
readln();
end.
- Log in to post comments
- 6319 reads
vedro-compota
Sun, 01/23/2022 - 13:14
Permalink
procedure unicalArr(var
--использовать функцию, которая возвращает boolean
_____________
матфак вгу и остальная классика =)
alexander263
Wed, 01/26/2022 - 18:02
Permalink
Исправлено
program project1; type newArr = array [1..7] of integer; var numArr: newArr; i: integer; function unicalArr(var promArr:newArr):boolean; var x,y:integer; flag:boolean; begin flag:=true; for x := 1 to 7 do for y := 1 to 7 do begin if((promArr[x]=promArr[y])and (x <> y))then flag:=false; result:=flag; break; end; end; begin for i:=1 to 7 do begin write('Введите ',i,' элемент массива: '); readln(numArr[i]); end; for i:=1 to 7 do begin write(numArr[i],'|'); end; writeln(); if (unicalArr(numArr))then write('уникален') else write('Не уникален'); writeln(); readln(); end.vedro-compota
Wed, 01/26/2022 - 18:42
Permalink
function unicalArr(var
-- break; с первой же итерации цикла (не находится внутри условия)?
_____________
матфак вгу и остальная классика =)
alexander263
Wed, 01/26/2022 - 19:18
Permalink
Исправлено
program project1; type newArr = array [1..7] of integer; var numArr: newArr; i: integer; function unicalArr(var promArr:newArr):boolean; var x,y:integer; flag:boolean; begin flag:=true; for x := 1 to 7 do for y := 1 to 7 do begin if((promArr[x]=promArr[y])and (x <> y))then begin flag:=false; break; end; result:=flag; break; end; end; begin for i:=1 to 7 do begin write('Введите ',i,' элемент массива: '); readln(numArr[i]); end; for i:=1 to 7 do begin write(numArr[i],'|'); end; writeln(); if (unicalArr(numArr))then write('уникален') else write('Не уникален'); writeln(); readln(); end.vedro-compota
Sun, 01/30/2022 - 13:13
Permalink
for x := 1 to 7 do
внешний цикл досрочно не завершается + просто так выходить из внешнего цикла тоже нельзя, нужно проверить некое условие
_____________
матфак вгу и остальная классика =)
alexander263
Wed, 02/02/2022 - 17:13
Permalink
Исправлено
program project1; type newArr = array [1..7] of integer; var numArr: newArr; i: integer; function unicalArr(var promArr:newArr):boolean; var x,y:integer; flag:boolean; begin flag:=false; for x := 1 to 7 do begin for y := 1 to 7 do begin if((promArr[x]=promArr[y])and (x <> y))then begin flag:=true; break; end; result:=flag; end; if(flag)then break; end; end; begin for i:=1 to 7 do begin write('Введите ',i,' элемент массива: '); readln(numArr[i]); end; for i:=1 to 7 do begin write(numArr[i],'|'); end; writeln(); if (unicalArr(numArr))then write('уникален') else write('Не уникален'); writeln(); readln(); end.vedro-compota
Wed, 02/02/2022 - 20:18
Permalink
1)
1)
-- сейчас будет присваиваться не всегда
2) Когдв unicalArr() возвращает true - что это значит?
_____________
матфак вгу и остальная классика =)
alexander263
Wed, 02/02/2022 - 20:31
Permalink
Исправлено
если unicalArr()=true, то это означает, что массив не уникален.
program project1; type newArr = array [1..7] of integer; var numArr: newArr; i: integer; function unicalArr(var promArr:newArr):boolean; var x,y:integer; flag:boolean; begin flag:=false; for x := 1 to 7 do begin for y := 1 to 7 do begin if((promArr[x]=promArr[y])and (x <> y))then begin flag:=true; break; end; end; if(flag)then break; end; result:=flag; end; begin for i:=1 to 7 do begin write('Введите ',i,' элемент массива: '); readln(numArr[i]); end; for i:=1 to 7 do begin write(numArr[i],'|'); end; writeln(); if (unicalArr(numArr))then write('Не уникален') else write('уникален'); writeln(); readln(); end.vedro-compota
Wed, 02/02/2022 - 20:42
Permalink
нужен неинвертированный
нужен неинвертированный вариант ответа на вопрос:
"Это массив уникален?"
_____________
матфак вгу и остальная классика =)
alexander263
Wed, 02/02/2022 - 20:56
Permalink
Исправлено
program project1; type newArr = array [1..7] of integer; var numArr: newArr; i: integer; function unicalArr(var promArr:newArr):boolean; var x,y:integer; flag:boolean; begin flag:=true; for x := 1 to 7 do begin for y := 1 to 7 do begin if((promArr[x]=promArr[y])and (x <> y))then begin flag:=false; break; end; end; if(not flag)then break; end; result:=flag; end; begin for i:=1 to 7 do begin write('Введите ',i,' элемент массива: '); readln(numArr[i]); end; for i:=1 to 7 do begin write(numArr[i],'|'); end; writeln(); if (unicalArr(numArr))then write('уникален') else write('Не уникален'); writeln(); readln(); end.vedro-compota
Sat, 02/05/2022 - 20:08
Permalink
засчитано
засчитано
_____________
матфак вгу и остальная классика =)