|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
12.12.2009, 19:53 | #1 |
Пользователь
Регистрация: 04.12.2009
Сообщений: 83
|
Помогите с кодом на Delphi
Здраствуйте. У меня вот проблема. Одно из задание отраженное в этом коде, этой найти числа содеращие цифру "5" и вместо них поставить 0.
program Project1; {$APPTYPE CONSOLE} uses SysUtils; type Titem=longint; TDar=array of Titem; Var x,p,n,k,j,i:longint; c,A,B:Tdar; T:Titem; fl:boolean; begin try { TODO -oUser -cConsole Main : Insert code here } Begin repeat writeln('Vvedite kol-vo elementov'); readln(n); until n>0; setLength(A,n); i:=Low(A); randomize; repeat A[i]:=random(100); inc(i); until i>High(A); writeln('Massiv A'); if High(A)>=0 then for i := Low(A) to High(A) do Write(A[i],' ') else writeln('there are no elements'); writeln; i:=Low(A); k:=0; repeat begin inc(k); Setlength(B,k); B[k-1]:=A[i]; End; inc(i); until i>High(A); writeln('Massiv B iz A:'); if High(b)>=0 then for i:=Low(B) to High(B) do write(B[i],' ') else begin write('there are no elements'); readln; End; writeln; i:=Low(A); repeat x:=A[i]; while (x>0) and fl=false do begin N:=x mod 10; x:=x div 10; if n mod 5=0 then fl:=true End; if fl=true then x:=0 else inc(i) until i>High(A); writeln('sdvig massiva na k='); write('vvedite k'); readln(k); x:=0; p:=0; c:=0; for i := 1 to k do begin x:=A[1]; for j:=1 to p-1 do A[j]:=A[j-1]; A[p]:=x; End; writeln(x); readln; end; finally end; end. |
12.12.2009, 20:09 | #3 |
Заблокирован
Регистрация: 11.12.2009
Сообщений: 133
|
вот так можно
Код:
Последний раз редактировалось пауэрлифтинг; 12.12.2009 в 20:28. |
12.12.2009, 20:19 | #4 |
Заблокирован
Регистрация: 11.12.2009
Сообщений: 133
|
или попробуй замени на
while (x>0) and not fl do begin N:=x mod 10; x:=x div 10; fl:=n=5; End; if fl then x:=0 else inc(i); |
12.12.2009, 22:59 | #5 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Код:
а так понял, что надо число в массиве обнулить?! Это будет: Код:
и дальше, в коде сдвига массива, имхо, тоже полная ахинея написана ;( |
12.12.2009, 23:28 | #6 |
Пользователь
Регистрация: 04.12.2009
Сообщений: 83
|
почему ахинея?
|
12.12.2009, 23:37 | #7 | |||
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
Цитата:
но интереснее того, что дальше делается с переменной p Цитата:
да. ещё. в том куске, где идёт проверка на то, содержит ли число 5 надо ещё не забывать в цикле сбрасывать флаг! иначе, найдя одно число, которое содержит 5 - переменная становится истинной (fl := true) и больше в цикл мы не попадаем! и ещё. когда пишите несколько условий в логическом выражении: while (x > 0) and fl = false do не забывайте скобки. Это принципиально!!! Код:
______________ обнуление всех чисел в массиве, которые содержат в записи цифру "5" я бы записал так: Код:
Последний раз редактировалось Serge_Bliznykov; 12.12.2009 в 23:45. |
|||
13.12.2009, 12:21 | #8 |
Пользователь
Регистрация: 04.12.2009
Сообщений: 83
|
подскажите тогда какой должен быть код у правильного циклического сдвига вправо
|
13.12.2009, 12:37 | #9 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
Код:
вот два. Первый. в цикле, "тупо в лоб" сдвигаем на один элемент вправо, первый становится на место второго, второй - на место третьего, а последний - на место первого.. и повторяем эту процедуру K раз: Код:
поэтому я предлагаю чуть более сложный (алгоритмически) способ, зато он красивее и эффективнее. Надо A[1] -> A[1+K] A[1+K] -> A[1+K+K] ... и т.д. пока мы не выполним цикл переносов ровно столько раз, сколько элементов в массиве! |
|
13.12.2009, 13:13 | #10 |
Пользователь
Регистрация: 04.12.2009
Сообщений: 83
|
первый способ понял, а вот второй алгоритмический нет. Поясните плз
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Помогите с кодом | judge_arm | Microsoft Office Excel | 2 | 01.07.2009 11:48 |
Помогите с кодом | lewka-serdceed | Общие вопросы Delphi | 1 | 22.06.2009 00:25 |
Помогите с кодом | prostoCHEL | Общие вопросы Delphi | 4 | 02.03.2008 21:56 |