Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

Массивы и символьные строки   Найти похожие ветки 

 
СветаНеМогуСделать ©   (2012-06-10 11:44) [0]

Всем доброе утро!
Не могу сделать 2-е задачи по Delphi.
1-ая. Работа с массивами.
Размерность массива 80
Диапазон значений -40 -60
Определить среднюю длину непрерывных участков положительных чисел.

2-ая. Символьные строки и функции.
Функция переписывает все символы строки в обратном порядке.

Делаю программирование 1-ый раз. Читала мет.указания и смогла сделать первые три задания (они полегче). Эти не получаются. Примеры похожие находила - но о конца не разобралась. Если кому-то не сложно.... помогите пожалуйста.....


 
brother ©   (2012-06-10 12:11) [1]

function mirror(s: string): string;
var
 i: integer;
begin
 result:= "";
 for i:= High(s) downto 0 do
 result:= result + s[i];
end;


 
sniknik ©   (2012-06-10 12:22) [2]

> Размерность массива 80
> Диапазон значений -40 -60
> Определить среднюю длину непрерывных участков положительных чисел.
если перед значениями минус то средняя длинна 0 (нет участков) если тире то 80 (есть один на весь массив).


 
СветаНеМогуСделать ©   (2012-06-10 12:22) [3]

А в полном законченном виде как это можно записать?


 
brother ©   (2012-06-10 12:23) [4]

а подумать?


 
sniknik ©   (2012-06-10 12:24) [5]

а вообще СветаНеМогуСделать, найди то, что умеешь и сделай это тому, кто сделает тебе в обмен задание которое ты не умеешь, а он умеет...


 
Ega23 ©   (2012-06-10 12:27) [6]

function mirror(s: string): string;
var
i, cnt: integer;
begin
 cnt := Length(s);
 SetLength(Result, cnt);
 for i:= 1 to cnt do
   Result[i] := s[cnt - i + 1];
end;


 
СветаНеМогуСделать ©   (2012-06-10 12:27) [7]

Задание для первой задачи: Объявить массив целых чисел и заполнить его случайными значениями. Размер массива и диапазон в варианте.
Для всех вариантов иметь ввиду что 0 считается положительным числом.


 
Dennis I. Komarov ©   (2012-06-10 12:49) [8]


> СветаНеМогуСделать ©   (10.06.12 12:27) [7]

Так что не получается? Лень обуяла?

З.Ы.

> Для всех вариантов иметь ввиду что 0 считается положительным
> числом.

Целый "0" он не положительный и не отрицательный. Он "0"...


 
СветаНеМогуСделать ©   (2012-06-10 12:55) [9]

Нет, не лень. А неумение.
Я прошу о помощи в очень крайних ситуациях.
2 дня делала 3 задания. Но они по сравнению с этим очень простые.
Если реально кто-то может мне помочь или объяснить что нибудь - буду благодарна.
И я уже сказала что делаю первый раз.


 
СветаНеМогуСделать ©   (2012-06-10 12:56) [10]

А про ноль - так написано в задании к работе.
Т.е. это не моя придумка а преподавателя.


 
Inovet ©   (2012-06-10 12:56) [11]

> [6] Ega23 ©   (10.06.12 12:27)
> for i:= 1 to cnt do

а разделить на 2


 
Inovet ©   (2012-06-10 12:58) [12]

> [11] Inovet ©   (10.06.12 12:56)

А, ты же не в неё саму, тогда не надо делить.


 
Dennis I. Komarov ©   (2012-06-10 13:00) [13]


> Нет, не лень. А неумение.

Что не умеешь?

1. Объявить массив целых чисел
2. и заполнить его случайными значениями.


 
Sha ©   (2012-06-10 13:03) [14]

> brother ©   (10.06.12 12:11) [1]

как отлаживал?


 
Anatoly Podgoretsky ©   (2012-06-10 13:06) [15]

Образование: высшее


 
СветаНеМогуСделать ©   (2012-06-10 13:11) [16]

Я - менеджер. Проходила С++ 7 лет назад. Уже ничего не помню.
Сдать нужно в понедельник.
Если вы все такие умные, то помогите, а не комментируйте. Не тратьте время впустую.
Ega23 и brother спасибо за помощь!!


 
Inovet ©   (2012-06-10 13:14) [17]

> [13] Dennis I. Komarov ©   (10.06.12 13:00)
> Что не умеешь?

Если эти пункты не умеет, то вместо
> [9] СветаНеМогуСделать ©   (10.06.12 12:55)
> мне помочь или объяснить что нибудь

а "сделать за меня всё".


 
brother ©   (2012-06-10 13:21) [18]

> как отлаживал?

в окне браузера)


 
Боллбастерша   (2012-06-10 13:23) [19]


> [D7]
> Не могу сделать 2-е задачи по Delphi.
> 2-ая. Символьные строки и функции.
> Функция переписывает все символы строки в обратном порядке.


uses StrUtils;
s := ReverseString(s);


 
Dennis I. Komarov ©   (2012-06-10 13:24) [20]


> Сдать нужно в понедельник.
> Если вы все такие умные, то помогите, а не комментируйте.
>  Не тратьте время впустую.

Так и пытаюсь... сделать за <> помочь
А ты не желаешь даже пошевелить извилинами

З.Ы

> Я - менеджер.

МЕНЕДЖЕР (от англ. manage — управлять) — специалист по управлению производством и обращением товаров, наемный управляющий. Менеджеры организуют работу на фирме, руководят производственной деятельностью групп сотрудников фирмы. Менеджер является должностным лицом фирмы, компании, в которой он работает, и входит в средний и высший руководящий состав фирм.


 
СветаНеМогуСделать ©   (2012-06-10 13:30) [21]

Про массивы я не понимаю задание.
Что за странный диапазон?
И как обозначить среднюю длину непрерывных участков положительных чисел.
Не могу понять визуально...


 
Sha ©   (2012-06-10 13:35) [22]

>> как отлаживал?

>в окне браузера)

браузер не той системы


 
СветаНеМогуСделать ©   (2012-06-10 13:37) [23]

var
 A :string;
 I,II,L :Integer;
 Buf :Char;
 Tmp :string;

begin
Readln(A);
Tmp := A;
L := Length(Tmp);
II := L div 2;
for I := 1 to II do
begin
 Buf := Tmp[I];
 Tmp[I] := Tmp[L - I + 1];
 Tmp[L - I + 1] := Buf;
end;
Writeln(Tmp);
Readln;
end.

Смотрите. Все работает!!!!!


 
СветаНеМогуСделать ©   (2012-06-10 13:48) [24]

С диапазоном я тоже приблизительно разобралась.
Но не разобралась про среднюю длину...


 
Inovet ©   (2012-06-10 13:50) [25]

> [21] СветаНеМогуСделать ©   (10.06.12 13:30)
> Не могу понять визуально...

Массив - это коробочки расположенные для наглядности на прямой, каждой присвоен порядковый номер без пропусков пусть от 0 до 79. В коробочках лежат бумажки, на которых записаны числа от -40 до 60 (если я правильно понял задание).

Идём от 0-й коробочки по каждой до 79. Смотрим число на бумажке и делаем пометки на листочке. если стоит отметка "мы в положительном участке" = истина и текущее число положительное - увеличиваем счётчик количества положительных чисел, если "мы в положительном участке" = истина и текущее число отрицательное - увеличиваем счётчик положительных участков, если текущее число отрицательное - ставим отметку "мы в положительном участке" в ложь.

По завершинии цикла подсчитываем среднюю длину = количество положительных чисел / количество положительных участков.

Вроде так.


 
Dennis I. Komarov ©   (2012-06-10 13:57) [26]


> Определить среднюю длину непрерывных участков положительных
> чисел.

+

> А про ноль - так написано в задании к работе.
> Т.е. это не моя придумка а преподавателя.

=
Определить среднюю длину непрерывных участков не отрицательных чисел.


 
Dennis I. Komarov ©   (2012-06-10 13:57) [27]

[13] уже сделала?


 
Sha ©   (2012-06-10 14:02) [28]

> СветаНеМогуСделать ©   (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;


 
Dennis I. Komarov ©   (2012-06-10 14:05) [29]


> Разбирайся )

Теперь точно не сдаст...


 
СветаНеМогуСделать ©   (2012-06-10 14:10) [30]

Sha спасибо буду разбираться.

Dennis I. Komarov, очень мило что вы за меня переживаете :*


 
Inovet ©   (2012-06-10 14:12) [31]

> [30] СветаНеМогуСделать ©   (10.06.12 14:10)
> Sha спасибо буду разбираться.

Ты сначала классическим способом попробуй, а там уже можно и с извращениями поэксперементировать.:)


 
СветаНеМогуСделать ©   (2012-06-10 14:15) [32]

Inovet, вот правда. Я что то смотрю и до стадии "разобралась" как до луны.
Увы...


 
Inovet ©   (2012-06-10 14:20) [33]

> [32] СветаНеМогуСделать ©   (10.06.12 14:15)
> Inovet, вот правда. Я что то смотрю и до стадии "разобралась" как до луны.

В общем Sha немного пошутил, заменив обычные сравнения целых чисел шаманскими вычисляниеми с их машинным представлением. А так-то всё нормально.


 
Sha ©   (2012-06-10 14:21) [34]

> СветаНеМогуСделать

Я забыл защититься от деления на 0, последнюю строчку надо подправить:

 if k>0 then Memo1.Lines.Add(Format("%d %d %f",[k, n, k/n]))
 else Memo1.Lines.Add("там все числа отрицательные");


 
СветаНеМогуСделать ©   (2012-06-10 14:24) [35]

Ну ладно ребят, если уже начались шутки....значит серьезно не воспринимаете.
Всем спасибо за помощь.
И да...ваша взяла я понимаю что задание с массивами я самостоятельно не сделаю. За один день такое не учится.


 
Inovet ©   (2012-06-10 14:24) [36]

> [28] Sha ©   (10.06.12 14:02)
> TForm1.Button4Click

У тебя там ещё 3 горячих кусочка припрятано?:)


 
Inovet ©   (2012-06-10 14:26) [37]

> [35] СветаНеМогуСделать ©   (10.06.12 14:24)
> если уже начались шутки....значит серьезно не воспринимаете.

Я тебе вполне серьёзно расписал

> [25] Inovet ©   (10.06.12 13:50)

только там немного надо доделать.


 
Inovet ©   (2012-06-10 14:31) [38]

И, кстати, код Sha должен быть рабочий - можно взять и сдать.


 
СветаНеМогуСделать ©   (2012-06-10 14:37) [39]

Сдать можно но объяснить то мне нет))


 
Sha ©   (2012-06-10 14:50) [40]

> 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.



Страницы: 1 2 вся ветка

Текущий архив: 2013.03.22;
Скачать: CL | DM;

Наверх




Память: 0.57 MB
Время: 0.169 c
2-1345815783
Разведка
2012-08-24 17:43
2013.03.22
немогу найти причину ошибки


15-1348568333
Стьюденд
2012-09-25 14:18
2013.03.22
Подсчет одинаковых слов в Delphi


2-1330408314
AV
2012-02-28 09:51
2013.03.22
Владение критической секцией


2-1331575099
Дмитрий
2012-03-12 21:58
2013.03.22
Проблема к кеширующим прокси на основе IndyHttpProxyServer


15-1351699705
ПростоФАН
2012-10-31 20:08
2013.03.22
Помощь в разработке по