АТ
Александр Тумайкин

Помогите пожалуйста, нужно создать программу используя списки

Даны натуральное число n, целые числа а (1),…., a(n). Выяснить, имеются ли среди чисел а (1),… a(n) совпадающие

Сергей
Сергей

О каких списках идёт речь?
Если это списки в таких языках программирования, как Пролог и Лисп, то, например, в Visual Prolog (Lisp не знаю) :

implement main
open core, console, math, list

constants
className = "main".
classVersion = "".

class predicates
create_List: (integer, integer_list) procedure (i, o).
belong: (integer_list) nondeterm (i).
process: (integer_list) procedure (i).

clauses
classInfo(className, classVersion).
create_List(0, [ ]) :- !.
create_List(N, [random(101) - 50 | T]) :- create_List(N - 1, T).
belong([ ]) :- fail.
belong([H | T]) :- isMember(H, T), !.
belong([_ | T]) :- belong(T).
process(L) :- belong(L), write("Есть повторы"), !.
process(_) :- write("Нет повторов").

clauses
run() :- init(), N = random(21) + 10, write("Дано n = ", N), nl,
create_List(N, L), write("Дан список: ", L), nl,
process(L), nl, _ = readChar().
end implement main

goal
mainExe::run(main::run).

А если эти списки - связанные динамические структуры в императивном языке, то решение будет, например, такое:

Type Item
Value As Integer
Next As Item Ptr
End Type

Enum Bool
FALSE = 0
TRUE = -1
End Enum

Declare Function Create_List(ByVal N As UByte) As Item Ptr
Declare Sub Delete_List(ByRef P As Item Ptr)
Declare Function Process(ByVal P As Item Ptr) As Bool

Dim Head As Item Ptr = 0
Randomize Timer
Var N = Cast(UByte, Fix(Rnd * 21) + 10)
Print "Дано n = "; N
Print "Дан список: "
Head = Create_List(N)
If Process(Head) Then
Print "Ecть пoвтopы"
Else
Print "Heт пoвтopoв"
EndIf
Delete_List(Head)
End

Function Create_List(ByVal N As UByte) As Item Ptr
Dim S As Item Ptr = 0, P As Item Ptr = 0, Q As Item Ptr
For i As UByte = 1 To N
Q = New Item
Q->Value = Fix(Rnd * 101) - 50
Q->Next = 0
If P <> 0 Then
P->Next = Q
Else
S = Q
EndIf
P = Q
Print Using "####"; P->Value;
Next
Print
Return S
End Function

Function Process(ByVal P As Item Ptr) As Bool
Dim F As Bool = FALSE, Q As Item Ptr
If P->Next = 0 Then
Return FALSE
Else
F Or= Process(P->Next)
If Not F Then
Q = P
Do While P->Next <> 0
F Or= Q->Value = P->Next->Value
P=P->Next
Loop
Else
Return F
EndIf
EndIf
Return F
End Function

Sub Delete_List(ByRef P As Item Ptr)
Dim Q As Item Ptr
Do While P <> 0
Q = P
P = P->Next
Delete Q
Loop
End Sub

Анна Броскина
Анна Броскина

создаешь массив, прогоняешь в цикле каждый элемент массива и сравниваешь их друг с дружкой.

Татьяна
Татьяна

У меня есть эта задачка, пиши в лс на почту, за 100р скину

Похожие вопросы
помогите создать программу
Помогите создать баннер, нужна ссылка какой нибудь программы.
Помогите создать программу через Делфи
помогите) нужно создать программы в Pascal'e
Помогите пожалуйста!! ! Нужна программа!
как создать видео? скажите пожалуйста, как создать видео самостоятельно? какие программы нужны для этого?
Помогите, пожалуйста, со списками в си
Помогите пожалуйста. . .Нужна программа
Создать структуру со списком с++
Помогите составить программу для нахождения равнобедренного треугольника, используя сложное условие Пожалуйста, помогите: (