Другие языки программирования и технологии
Паскаль составте програмку!!!!
Дана последовательность натуральных чисел {Aj}j=1...n (n<=10000). Удалить из последовательности числа, содержащие цифру 9, а среди оставшихся продублировать числа, содержащие хотя бы пару одинаковых цифр.
Доброго времени суток.
Можно так попробовать. Сначала пишем функцию для проверки числа. Пусть она будет возвращать 1, если в числе есть цифра 9 и 2, если есть две одинаковые цифры. Правда, из условия не совсем понятно, что делать, если парой одинаковых цифр будут девятки или одинаковых цифр будет больше двух.
function TstNum(N: Integer): Integer;
var
Arr[0..9] of Byte;
j : Integer;
begin
TstNum := 0;
FillChar(Arr, SizeOf(Arr), 0); {обнуляем массив счетчиков}
while N > 0 do begin
Inc(Arr[N mod 10]); {увеличиваем счетчик количества соотв. цифр}
N := N div 10;
end;
{элементы массива Arr содержат число цифр, равных индексам}
if Arr[9] > 0 then begin {есть 9}
TstNum := 1;
Exit;
end;
for j:=0 to 9 do
if Arr[j] = 2 then begin
TstNum := 2;
Break;
end;
end;
А дальше в программе
k := 0;
for j:=1 to n do begin
case TstNum(A[j]) of
0 : begin k := k + 1; B[k] := A[j]; {копируем элемент}
1 : ; {пропускаем элемент}
2 : begin k := k + 1; B[k] := A[j]; k := k + 1; B[k] := A[j]; end; {дублируем элемент}
end;
end;
В массиве В новая последовательность, ее размероность в переменной k.
Все остальное, самостоятельно.
Удачи!
Можно так попробовать. Сначала пишем функцию для проверки числа. Пусть она будет возвращать 1, если в числе есть цифра 9 и 2, если есть две одинаковые цифры. Правда, из условия не совсем понятно, что делать, если парой одинаковых цифр будут девятки или одинаковых цифр будет больше двух.
function TstNum(N: Integer): Integer;
var
Arr[0..9] of Byte;
j : Integer;
begin
TstNum := 0;
FillChar(Arr, SizeOf(Arr), 0); {обнуляем массив счетчиков}
while N > 0 do begin
Inc(Arr[N mod 10]); {увеличиваем счетчик количества соотв. цифр}
N := N div 10;
end;
{элементы массива Arr содержат число цифр, равных индексам}
if Arr[9] > 0 then begin {есть 9}
TstNum := 1;
Exit;
end;
for j:=0 to 9 do
if Arr[j] = 2 then begin
TstNum := 2;
Break;
end;
end;
А дальше в программе
k := 0;
for j:=1 to n do begin
case TstNum(A[j]) of
0 : begin k := k + 1; B[k] := A[j]; {копируем элемент}
1 : ; {пропускаем элемент}
2 : begin k := k + 1; B[k] := A[j]; k := k + 1; B[k] := A[j]; end; {дублируем элемент}
end;
end;
В массиве В новая последовательность, ее размероность в переменной k.
Все остальное, самостоятельно.
Удачи!
что, юзерЪ, решить не можеш? как критиковать ОС Линух ты можеш а сделать элементарное нет. Так что сключи свое г.... и думай теперь что к чему -) Щасливо оставаться лол, а за пингвина пасть бы тебе порвал -)
ААААААаааа что в школе впадлу учиться сиди и напрягай свои гнилые извилины!!! !
Похожие вопросы
- Паскаль. Почему програмка создает безконечо-большой тексковый файл
- Помогите написать 2 програмки на Турбо Паскале.
- кто знает Паскаль помогите написать програмку
- РЕбят посмотрите програмку пожалуйста!На паскале, может кто поможет с решением!?
- Помогите пожалуйста... мне так нужно.. очень очень!!! нужно составить легенькую програмку в паскале)
- Напишите пожалуйста програмку в паскале. ОООЧЕНЬ НУЖНО. Зарнее спасибо.
- Аналог ассоциативного массива в Паскале.
- Я внутри написал, что я знаю про паскаль не то что решать и все такое а так теоретический в общем, смысл проги, я прав?
- ПАСКАЛЬ и ГРАФИКА
- Товарищи программисты на Delphi и Pascal помогите девушке!!!)) вопрос глупый..насчет паскаля..