IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Задача на массивы
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 28
Пол: Женский

Репутация: -  0  +


Помогите пожалуйста решить задачи.
Вот одна из них:

Дан числовой массив А(35). Найдите, в массиве есть пара одинаковых чисел. Сколько одинаковых чисел, если они есть?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Tatjanka
А в массиве только одно число встречается не один раз? Что будет, если таких чисел несколько? Например:
1, 1, 1, 4, 4, 5, 5, 5, 3, 4, 9, 8, 7, 6, 5, 4, 3, 2, 1 ...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 28
Пол: Женский

Репутация: -  0  +


Ой, я задание неправильгно с эстонского перевела.
В задаче спрашивается есть ли в массиве пара одинаковых знаков и сколько таких пар?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Новичок
*

Группа: Пользователи
Сообщений: 28
Пол: Женский

Репутация: -  0  +


volvo
помоги пожалуйста с решением. если конечно тебе не трудно. А за прошлие задачки огромное спасибо. У меня их приняли.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






Что-то ты меня совсем запутала.
Цитата
есть ли в массиве пара одинаковых знаков

Приведи пример массива (не нужно 35, пусть будет 5 элементов, где такая пара есть, и где ее нет...) rolleyes.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Новичок
*

Группа: Пользователи
Сообщений: 28
Пол: Женский

Репутация: -  0  +


volvo
Например
1 2 4 5 1
здесь одна пара - 1,1


2 2 2 2 3
две пары 2,2 и 2,2

но нужно писать только количество пар
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Новичок
*

Группа: Пользователи
Сообщений: 28
Пол: Женский

Репутация: -  0  +


volvo
Значит етот код неправильно написан?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Новичок
*

Группа: Пользователи
Сообщений: 28
Пол: Женский

Репутация: -  0  +


volvo
Я пишу этот код, а у меня выдает 1, а это неправильный ответ
rolleyes.gif

Вот я наверное подкинула тебе задачку, но я не специально, честно.
:flowers:
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Гость






Tatjanka
Не может быть. Я только что еще раз прогнал тест. В ответе 4, как и есть на самом деле. Проверь еще раз, что все точно записала.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Новичок
*

Группа: Пользователи
Сообщений: 28
Пол: Женский

Репутация: -  0  +


volvo
Спасибо огромноебвсе замечательно работает.
А можно еще одно задание послать. Или я уже наглею?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Гость






Tatjanka
Только в новую тему, если оно не связано с массивами ;)
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Гость






Извиняюсь за неправильный код.unsure.gif
А можно как-нибудь без сортировки?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


Гость






mithquessir
Может и можно... Надо будет подумать...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #18


Гость






ShadowWatcher
Неправильный результат (проверял при значениях 1 .. 12, т.е. повторов нет совершенно) - выдает "12".
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 11.01.2025 22:52
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name