Задача на массивы |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Задача на массивы |
Tatjanka |
Сообщение
#1
|
Новичок Группа: Пользователи Сообщений: 28 Пол: Женский Репутация: 0 |
Помогите пожалуйста решить задачи.
Вот одна из них: Дан числовой массив А(35). Найдите, в массиве есть пара одинаковых чисел. Сколько одинаковых чисел, если они есть? |
volvo |
Сообщение
#2
|
Гость |
Tatjanka
А в массиве только одно число встречается не один раз? Что будет, если таких чисел несколько? Например: 1, 1, 1, 4, 4, 5, 5, 5, 3, 4, 9, 8, 7, 6, 5, 4, 3, 2, 1 ... |
Tatjanka |
Сообщение
#3
|
Новичок Группа: Пользователи Сообщений: 28 Пол: Женский Репутация: 0 |
Ой, я задание неправильгно с эстонского перевела.
В задаче спрашивается есть ли в массиве пара одинаковых знаков и сколько таких пар? |
Tatjanka |
Сообщение
#4
|
Новичок Группа: Пользователи Сообщений: 28 Пол: Женский Репутация: 0 |
volvo
помоги пожалуйста с решением. если конечно тебе не трудно. А за прошлие задачки огромное спасибо. У меня их приняли. |
volvo |
Сообщение
#5
|
Гость |
Что-то ты меня совсем запутала.
Цитата есть ли в массиве пара одинаковых знаков Приведи пример массива (не нужно 35, пусть будет 5 элементов, где такая пара есть, и где ее нет...) |
Tatjanka |
Сообщение
#6
|
Новичок Группа: Пользователи Сообщений: 28 Пол: Женский Репутация: 0 |
volvo
Например 1 2 4 5 1 здесь одна пара - 1,1 2 2 2 2 3 две пары 2,2 и 2,2 но нужно писать только количество пар |
mithquessir |
Сообщение
#7
|
Гость |
Ну, наверное так:
Код var num,i,j:integer; a:array[1..35] of integer; begin randomize; for i := 1 to 35 do a[i] := random(100); for i := 1 to 35 do for j := i + 1 to 35 do if a[i] = a[j] then Inc(num); for i := 1 to 35 do begin Write(a[i]:3); end; WriteLn; WriteLn(num); end. Сообщение отредактировано: volvo - |
volvo |
Сообщение
#8
|
Гость |
mithquessir
Давайте не пользоваться красным цветом? Плюс к этому, проверяйте программу перед тем, как запостить сюда. Программа с тестовым примером: Код const n = 12; const a: array[1 .. n] of integer = (1, 2, 2, 3, 3, 6, 5, 8, 2, 3, 2, 3); var num,i,j:integer; begin for i := 1 to n do for j := i + 1 to n do if a[i] = a[j] then Inc(num); for i := 1 to n do begin Write(a[i]:3); end; WriteLn; WriteLn(num); end. выдает в результате 12, хотя здесь всего 4 пары... Будьте внимательнее... Сообщение отредактировано: volvo - |
Tatjanka |
Сообщение
#9
|
Новичок Группа: Пользователи Сообщений: 28 Пол: Женский Репутация: 0 |
volvo
Значит етот код неправильно написан? |
volvo |
Сообщение
#10
|
Гость |
Tatjanka
Вот, что мне пришло в голову: Код const n = 12; const a: array[1 .. n] of integer = (1, 2, 2, 3, 3, 6, 5, 8, 2, 3, 2, 3); var i, j, T: integer; pairTo, count: integer; begin for i := 1 to n do for j := n downto i+1 do if a[j-1] > a[j] then begin t := a[j-1]; a[j-1] := a[j]; a[j] := t; end; i := 1; while i <= n-1 do begin pairto := a[i]; if a[i+1] = pairto then begin inc(count); inc(i, 2) end else inc(i) end; writeln(count); end. |
Tatjanka |
Сообщение
#11
|
Новичок Группа: Пользователи Сообщений: 28 Пол: Женский Репутация: 0 |
volvo
Я пишу этот код, а у меня выдает 1, а это неправильный ответ Вот я наверное подкинула тебе задачку, но я не специально, честно. :flowers: |
volvo |
Сообщение
#12
|
Гость |
Tatjanka
Не может быть. Я только что еще раз прогнал тест. В ответе 4, как и есть на самом деле. Проверь еще раз, что все точно записала. |
Tatjanka |
Сообщение
#13
|
Новичок Группа: Пользователи Сообщений: 28 Пол: Женский Репутация: 0 |
volvo
Спасибо огромноебвсе замечательно работает. А можно еще одно задание послать. Или я уже наглею? |
volvo |
Сообщение
#14
|
Гость |
Tatjanka
Только в новую тему, если оно не связано с массивами ;) |
mithquessir |
Сообщение
#15
|
Гость |
Извиняюсь за неправильный код.
А можно как-нибудь без сортировки? |
volvo |
Сообщение
#16
|
Гость |
mithquessir
Может и можно... Надо будет подумать... |
ShadowWatcher |
Сообщение
#17
|
Новичок Группа: Пользователи Сообщений: 29 Пол: Мужской Репутация: -1 |
Некрасивое решение, но должнл пахать:
Код Type TNum=Record Number:Integer; Count:Integer End; Var Data:Array[1..35] Of TNum; i,j,n:Integer; Begin Randomize(); For i:=1 To 35 Do Begin Data[i].Number := Random(10); Data[i].Count := 1; End; For i:=1 To 34 Do Begin If Data[i].Count = 0 Then Continue; For j:=i+1 To 35 Do If (Data[i].Number=Data[j].Number) Then Begin Inc(Data[i].Count); Data[j].Count := 0 End End; n:=0; For i:=1 To 35 Do If Data[i].Count > 0 Then Inc(n); WriteLn('Totally ',n,' non-single numbers') End. |
volvo |
Сообщение
#18
|
Гость |
ShadowWatcher
Неправильный результат (проверял при значениях 1 .. 12, т.е. повторов нет совершенно) - выдает "12". |
ShadowWatcher |
Сообщение
#19
|
Новичок Группа: Пользователи Сообщений: 29 Пол: Мужской Репутация: -1 |
Согласен.
Код Type TNum=Record Number:Integer; Count:Integer End; Var Data:Array[1..35] Of TNum; i,j,n:Integer; Begin Randomize(); For i:=1 To 35 Do Begin Data[i].Number := Random(10); Data[i].Count := 1; End; For i:=1 To 34 Do Begin If Data[i].Count = 0 Then Continue; For j:=i+1 To 35 Do If (Data[i].Number=Data[j].Number) Then Begin Inc(Data[i].Count); Data[j].Count := 0 End End; n:=0; For i:=1 To 35 Do If Data[i].Count > 1 Then Inc(n); WriteLn('Totally ',n,' non-single numbers') End. |
Текстовая версия | 11.01.2025 22:52 |