Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Вниз

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

 
СветаНеМогуСделать ©   (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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.55 MB
Время: 0.085 c
15-1330893003
Юрий
2012-03-05 00:30
2013.03.22
С днем рождения ! 5 марта 2012 понедельник


3-1279853308
dm37
2010-07-23 06:48
2013.03.22
Несколько запросов одновременно через один ADOConnection


15-1344457802
Юрий
2012-08-09 00:30
2013.03.22
С днем рождения ! 9 августа 2012 четверг


15-1330029003
Юрий
2012-02-24 00:30
2013.03.22
С днем рождения ! 24 февраля 2012 пятница


15-1343507404
Юрий
2012-07-29 00:30
2013.03.22
С днем рождения ! 29 июля 2012 воскресенье





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский