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

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

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

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


Новичок
*

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

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


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

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


Гость






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


Новичок
*

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

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


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


Новичок
*

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

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


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


Гость






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

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


Новичок
*

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

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


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


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

но нужно писать только количество пар
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
mithquessir
сообщение 1.12.2004 15:55
Сообщение #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 - 1.12.2004 15:58
 К началу страницы 
+ Ответить 
volvo
сообщение 1.12.2004 15:57
Сообщение #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 - 1.12.2004 16:09
 К началу страницы 
+ Ответить 
Tatjanka
сообщение 1.12.2004 16:34
Сообщение #9


Новичок
*

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

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


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


Новичок
*

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

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


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

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


Гость






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


Новичок
*

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

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


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


Гость






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


Гость






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


Гость






mithquessir
Может и можно... Надо будет подумать...
 К началу страницы 
+ Ответить 
ShadowWatcher
сообщение 1.12.2004 18:00
Сообщение #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 
 К началу страницы 
+ Ответить 
volvo
сообщение 1.12.2004 18:19
Сообщение #18


Гость






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

 



- Текстовая версия 20.07.2025 3:07
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"