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

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

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

> Формирование массива на основе двух других, Использование процедур
ivan
сообщение 24.02.2009 15:23
Сообщение #1





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

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


Задача-сформировать одномерный массив C, содержащий элементы, встречающиеся в массиве А несколько раз, которые есть в массиве В в одном экземпляре. Элементы в массиве C не должны повторяться.
Вопрос в написании алгоритма "Формирование" и соответствующему ему кода на языке Паскаль.
Код
Алгоритм  “Формирование массива”
Внутренние переменные:
    nA: цел.
    nB: цел.
    nC: цел.
    A, B, C : : массив [1..20]:цел.
Начало
    Вывод (‘Задание.’)
    Ввод (A,na,’A’)
    Ввод (B,nb, ’B ’)
    Формирование(A,na,B,nb,C,nc)
    Вывод (A,na, ’A ’)
    Вывод (B,nb, ’B ’)
    Вывод (C,nc, ’C ’)
Конец

Алгоритм “Ввод ”
Входные переменные:
Name: символ;
Выходные переменные:
n : цел. {количество элементов  во вводимом массиве }
Mas [1..20] : массива : цел
Внутренние переменные:
i : цел.
Начало
      Цикл
           Вывод (‘Введите число элементов массива ’,name,’ <=20’)
           Ввод(n)
                 Кцикла-до (n>1) и (n<=20)
     Вывод (‘Элементы массива ’,name,’ – целые числа’)
     Цикл-для I от 1 до n
           Вывод (name,’[',i,']=')
           Ввод (Mas[i])
     Кцикла
Конец


Алгоритм “Вывод ”
Входные переменные:
n : цел. {количество элементов в выводимом массиве}
Mas [1..20] : массива : цел {Выводимый массив}
Name : символ
Внутренние переменные:
i: цел.
Начало
      Если n>=1 то
           Вывод (‘Число элементов массива ’,name,’ = ’, n);
           Вывод (‘Массив ’,name);
           Цикл-для  i от 1 до x
                  Вывод (Mas[i])
           Кцикла
     Иначе
           Вывод (‘Нет элементов, удовлетворяющих условию!’)
      Кесли
Конец


Алгоритм “Формирование ”
Входные переменные:
nA : цел. {количество элементов массива A}
nB : цел. {количество элементов массива B}
A [1..20] : массива : цел {массив A}
B [1..20] : массива : цел {массив B}
Выходные переменные:
nC: цел. {количество элементов массива C}
C [1..20] : массива : цел {массив C}
Внутренние переменные:
  i: цел.
  j, kol,  z: цел.
  Начало
???
Конец


Сообщение отредактировано: ivan - 24.02.2009 15:24
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Lapp
сообщение 25.02.2009 5:09
Сообщение #2


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(ivan @ 24.02.2009 21:07) *
чувствую что есть ошибки,

Так не пойдет.. Типа другие должны проверять твой код по мере его написания, в реальном времени? dry.gif Извини, но это просто нечестно. Будет конкретный вопрос по языку или по программе - пожалуйста, милости просим. А подметать за тобой мусор - не нанимались..

Хотя бы _допиши_ свой код и _попробуй_скомпилить_. Синтаксические ошибки тебе скажет компилятор. Можешь даже нажать F9, не дописав - большая часть ошибок (если они есть) будет найдена. Останутся вопросы или просто непонимание, что происходит - you're always welcome! Насколько я понял, по алгоритму у теья больше вопросов нет. Но если появятся - тоже неси smile.gif.

Добавлено через 16 мин.
М
Для Паскаля просьба использовать паскалевские тэги [cоde=pas] ... [/cоde]



Пара замечаний по стилю..

1. Желательно цикл или условный оператор не обрывать на do, then или else. То есть вот это:
    for i:=1 to n do
write(Mas[i]:4)
- лучше записать так:
    for i:=1 to n do write(Mas[i]:4)
- или по крайней мере сместить нижнюю строку вправо:
    for i:=1 to n do
write(Mas[i]:4)


2. Если после do, then, else идет begin, то, в соответствии с вышесказанным, лучше писать его на той же строке.

3. После begin, repeat, case следующие строки смещай вправо до закрытия блока (end, until)
    for i:=1 to n do begin
write(Mas[i]:4);
....
end;


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


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

 



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