![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Массивы и символьные строки [D7]
СветаНеМогуСделать © (2012-06-10 11:44:00)Всем доброе утро!
Не могу сделать 2-е задачи по Delphi.
1-ая. Работа с массивами.
Размерность массива 80
Диапазон значений -40 -60
Определить среднюю длину непрерывных участков положительных чисел.
2-ая. Символьные строки и функции.
Функция переписывает все символы строки в обратном порядке.
Делаю программирование 1-ый раз. Читала мет.указания и смогла сделать первые три задания (они полегче). Эти не получаются. Примеры похожие находила - но о конца не разобралась. Если кому-то не сложно.... помогите пожалуйста.....
Palladin (2012-06-11 01:57:00) [1]Лесом
Юрий Зотов (2012-06-10 16:50:00) [2]Непонятно - зачем менеджеру, который уже имеет высшее, делать студенческуюработу по програмированию?
Dennis I. Komarov (2012-06-10 16:33:00) [3]
> Anatoly Podgoretsky © (10.06.12 15:58) [43]
За что Вы ее так, д.Толя?
Ega23 (2012-06-10 16:26:00) [4]
> Боллбастерша (10.06.12 14:50) [41]
>
>
> > Но не разобралась про среднюю длину...
>
> Около 16
23 вообще-то.
Anatoly Podgoretsky (2012-06-10 15:58:00) [5]
> Dennis I. Komarov, очень мило что вы за меня переживаете
> :*
Он тебя любит :-)
Dennis I. Komarov (2012-06-10 15:04:00) [6]
> Ну ладно ребят, если уже начались шутки....значит серьезно
> не воспринимаете.
> Всем спасибо за помощь.
> И да...ваша взяла я понимаю что задание с массивами я самостоятельно
> не сделаю. За один день такое не учится.
Даже не пыталась... Задача на пару часов, не больше. Учиться не хочешь, значит и нечего сдавать
Боллбастерша (2012-06-10 14:50:00) [7]
> Но не разобралась про среднюю длину...
Около 16
Sha (2012-06-10 14:50:00) [8]> Inovet © (10.06.12 14:24) [36]
>> [28] Sha © (10.06.12 14:02)
>> TForm1.Button4Click
> У тебя там ещё 3 горячих кусочка припрятано?:)
Да )
Заметил, что почти не видно развернутых циклов у дельфистов ни здесь, ни на sql.ru
Вот и писал вчера заметки http://guildalfa.ru/alsha/node/22
> Inovet © (10.06.12 14:31) [38]
> И, кстати, код Sha должен быть рабочий - можно взять и сдать.
Код действительно рабочий. Работает даже для одноэлементного массива.
> СветаНеМогуСделать © (10.06.12 14:37) [39]
> Сдать можно но объяснить то мне нет))
Там всего 2 переменных:
k - количество положительных чисел,
n - число перемен знака между группами.
В коде интенсивно используется то, что у отрицательных чисел старший (знаковый) бит имеет значение 1, и после сдвига вправо на 31 бит любое отрицательное число превращается в 1.
СветаНеМогуСделать (2012-06-10 14:37:00) [9]Сдать можно но объяснить то мне нет))
Inovet (2012-06-10 14:31:00) [10]И, кстати, код Sha должен быть рабочий - можно взять и сдать.
Inovet (2012-06-10 14:26:00) [11]> [35] СветаНеМогуСделать © (10.06.12 14:24)
> если уже начались шутки....значит серьезно не воспринимаете.
Я тебе вполне серьёзно расписал
> [25] Inovet © (10.06.12 13:50)
только там немного надо доделать.
Inovet (2012-06-10 14:24:00) [12]> [28] Sha © (10.06.12 14:02)
> TForm1.Button4Click
У тебя там ещё 3 горячих кусочка припрятано?:)
СветаНеМогуСделать (2012-06-10 14:24:00) [13]Ну ладно ребят, если уже начались шутки....значит серьезно не воспринимаете.
Всем спасибо за помощь.
И да...ваша взяла я понимаю что задание с массивами я самостоятельно не сделаю. За один день такое не учится.
Sha (2012-06-10 14:21:00) [14]> СветаНеМогуСделать
Я забыл защититься от деления на 0, последнюю строчку надо подправить:
if k>0 then Memo1.Lines.Add(Format('%d %d %f',[k, n, k/n]))
else Memo1.Lines.Add('там все числа отрицательные');
Inovet (2012-06-10 14:20:00) [15]> [32] СветаНеМогуСделать © (10.06.12 14:15)
> Inovet, вот правда. Я что то смотрю и до стадии "разобралась" как до луны.
В общем Sha немного пошутил, заменив обычные сравнения целых чисел шаманскими вычисляниеми с их машинным представлением. А так-то всё нормально.
СветаНеМогуСделать (2012-06-10 14:15:00) [16]Inovet, вот правда. Я что то смотрю и до стадии "разобралась" как до луны.
Увы...
Inovet (2012-06-10 14:12:00) [17]> [30] СветаНеМогуСделать © (10.06.12 14:10)
> Sha спасибо буду разбираться.
Ты сначала классическим способом попробуй, а там уже можно и с извращениями поэксперементировать.:)
СветаНеМогуСделать (2012-06-10 14:10:00) [18]Sha спасибо буду разбираться.
Dennis I. Komarov, очень мило что вы за меня переживаете :*
Dennis I. Komarov (2012-06-10 14:05:00) [19]
> Разбирайся )
Теперь точно не сдаст...
Sha (2012-06-10 14:02:00) [20]> СветаНеМогуСделать © (10.06.12 13:48) [24]
> С диапазоном я тоже приблизительно разобралась.
> Но не разобралась про среднюю длину...
Разбирайся )
procedure TForm1.Button4Click(Sender: TObject);
const
min = -40;
max = 60;
len = 80;
hig = len-1;
rig = SizeOf(integer)*8-1;
var
a: array of integer;
i, k, n: integer;
begin;
SetLength(a, len);
Randomize;
for i:=0 to hig do a[i]:=Random(max-min+1)+min;
k:=len; n:=0;
for i:=0 to hig do begin;
dec(k,a[i] shr rig);
inc(n,(a[i] xor a[(i+1) mod len]) shr rig);
end;
n:=(n+2-(a[0] or a[hig]) shr rig) shr 1;
Memo1.Clear;
for i:=0 to hig do Memo1.Lines.Add(IntToStr(a[i]));
Memo1.Lines.Add(Format('%d %d %f',[k, n, k/n]));
end;