Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 08.04.2010, 15:21
Muxa Muxa вне форума
Новичок
 
Регистрация: 01.06.2009
Сообщения: 80
Репутация: 10
По умолчанию Задача с массивами

дан массив состоящий из 20 целых чисел.
а)Вывести все числа,которые встречаются в этом массиве несколько раз
б)Вывести все числа,которые встречаются в массиве только по одному разу.
Вроде бы сделал предварительную версию, но он не выводит числа, которые встречаются по 1 разу и выводит числа, которые повторяются друг за другом. А вот, если числа будут повторяться так:"1,2,1,2,3,4,5..." он не выводит, хотя должен. Помогите доделать...
Код:
var
var
A:array[1..20] of integer;
B:array[1..20,1..2] of integer;
n,i,j,k:integer;
begin
WriteLn('Vvedite elementi massiva');
for n := 1 to 20 do ReadLn(A[n]);
for i := 1 to 20 do begin
    k:= 0;
    for j:= 1 to 20 do begin
      if (A[i] = B[j][1]) then begin
        inc(B[j][2],1);

      end
      else inc(k,1);
    end;
    if (k = 20) then B[i][1]:= A[i]
  end;
 WriteLn('neskolko raz');
  for i:= 1 to 20 do
    if (B[i][2] > 1) then
WriteLn(B[i][1]);

WriteLn('1 raz');
for i:= 1 to 20 do
if (B[i][2] = 1) then
WriteLn(B[i][1]);
ReadLn;
end.;  

Последний раз редактировалось Muxa, 08.04.2010 в 15:23.
Ответить с цитированием
  #2  
Старый 08.04.2010, 15:40
Аватар для NIch
NIch NIch вне форума
Продвинутый
 
Регистрация: 02.06.2008
Адрес: Бендеры ПМР
Сообщения: 754
Репутация: 2446
По умолчанию

Алгоритм:
1. Создаешь динамический массив записей вида - символ кол-во.
2. Запоминаешь в него 1-ый символ строки и кол-во 1.
3. Шагаешь до коца строки и считаешь эти символы увеличивая кол-во.
4. Увеличиваешь массив записей на 1.
4. Ищешь в строке первый отличающийся от символов в массиве символ и проделываешь с ним п.3.
5. И так далее пока не в конце концов у тебя не будет массив записей с количеством символов.
6. Проходишься по этому массиву и вычисляешь те у которых кол-во = 1 и не 1.
__________________
В начале был Бит, потом Байт и только потом появилось Слово...
Ответить с цитированием
  #3  
Старый 08.04.2010, 16:41
Muxa Muxa вне форума
Новичок
 
Регистрация: 01.06.2009
Сообщения: 80
Репутация: 10
По умолчанию

Можно с кодом? 1 и 2 пункты сделал, а дальше, что-то не очень выходит
Ответить с цитированием
  #4  
Старый 08.04.2010, 16:53
Asinkrit Asinkrit вне форума
Местный
 
Регистрация: 29.10.2009
Сообщения: 446
Репутация: 271
По умолчанию

Вот похожий алгоритм, только работает с динамическими массивами, адаптировал под твою задачу.

Последний раз редактировалось Asinkrit, 02.04.2011 в 20:19.
Ответить с цитированием
  #5  
Старый 08.04.2010, 17:05
Muxa Muxa вне форума
Новичок
 
Регистрация: 01.06.2009
Сообщения: 80
Репутация: 10
По умолчанию

Спасибо. Все работает. Теперь буду разбирать его алгоритм.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 11:46.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter