Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Задачи на Turbo Pascal 7.0

Автор: found
Дата сообщения: 09.05.2006 11:40
ХРЕНОМЕТР, можешь мне помочь? Когда я в while задаю условие он мне выдает ошибки. Помоги задать правильное условие. Я пишу его так


While hrust*grohot:=rrrrrrrrrrr do


Может я его неправильно задаю?
Автор: XPEHOMETP
Дата сообщения: 09.05.2006 20:33
Возможно, правильно, если hrust, grohot и rrrrrrrrrrr - это целочисленные переменные. Если строковые, то их перемножать нельзя.

Смысл в том, чтобы перекодировать эти строки в числа (в соответствии с тем, как мы для данного раза решили их кодировать числа буквами), и умножать уже числа.
Автор: ShIvADeSt
Дата сообщения: 10.05.2006 02:49

Цитата:
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Возможно, правильно, если hrust, grohot и rrrrrrrrrrr - это целочисленные переменные. Если строковые, то их перемножать нельзя.

Надо еще смотреть на размерность типов данных, в частности здесь тип integer использовать нельзя, ибо он не может быть 11 значным, насчет longint тоже хз, так как он 10 значный, а здесь требуется 11 значный тип, как вариант писать свой модуль для работы с длинной арифметикой, но тогда задача вообще прикольной становится, чтобы проверить данное равенство требуется столько еще кода добавлять.
found
Попробуй сделать данную задачу в дельфи (там разрешено с более длинными числами работать, и покажи работу консольного приложения, т к проверка алгоритмики, а она и в дельфи и в ТП одинакова для данной задачи).

Цитата:
hrust*grohot:=rrrrrrrrrrr

ХЗ че ты тут имел ввиду, ибо не видно что ты написал в var, короче либо полный код в студию, либо по данным тебе намекам сам пиши.

ЗЫ, короче вот накидал рабочий пример на дельфи

Код:
program Project1;
{$APPTYPE CONSOLE}
uses SysUtils,Math;

var
H,R,U,S,T,G,O :integer;
H1,h2,R1,r2,U1,S1,T1,G1,O1:int64;
i:integer;
begin
for h:=1 to 9 do begin
h1:=h*10000;
h2:=h*100;
for r:=0 to 9 do begin
r1:=r*1000;
r2:=r;
for i:=1 to 10 do
r2:=r2+r*Round(Power(10,i));
for u:=0 to 9 do begin
u1:=u*100;
for s:=0 to 9 do begin
s1:=s*10;
for t:=1 to 9 do
for g:=0 to 9 do begin
g1:=g*100000;
for o:=0 to 9 do
if (h1+r1+u1+s1+t)*(g1+r1*10+o*1000+h2+o*10+t)=r2 then begin
Writeln(h,r,u,s,t,g,o);
readln;
end;
end;
end;
end;
end;
end;
// Insert user code here ХРУСТ*ГРОХОТ=РРРРРРРРРРР
end.
Автор: XPEHOMETP
Дата сообщения: 10.05.2006 10:28
А ведь прав ShIvADeSt! Лениво мне было в такие тонкости вникать, вот и не обратил внимания, что на 11-значное число не хватит емкости LongInt! Действительно тогда на Turbo Pascal решать очень заковыристо.
Автор: SaDFromSpb
Дата сообщения: 10.05.2006 11:20
found

Вот [more=Здесь]Program numbers;
Uses Crt;

{Будем хранить числа в массивах цифр}

Const
N1 = 5; {длина массива для первого числа}
N2 = 6; {для второго}
N3 = N1 + N2; {для результата}
Var

Num1 : Array [1..N1] Of ShortInt; {hrust}
Num2 : Array [1..N2] Of ShortInt; {grohot}
Resul : Array [1..N3] Of ShortInt; {result}
i : Integer;


{Процедура заполнения третьего массива заданным числом}
Procedure FillResul(x : Integer);
Var i : Integer;
Begin
For i:=1 To N3 Do
Resul[i] := x;
End;


{Задача очевидно на перебор. Благодаря тому, что заданы буквенные эквиваленты
цифр, количество возможных вариантов существенно ограничивается, то есть, если
первое слово "хруст", значит в нем все цифры разные. Функция Add2Num1 вставляет
число x в элемент ndx массива Num1, только если такой цифры еще нет в этом массиве.
Если такая цифра уже была, то возвращается false. Так же эта функция по возможности
заполняет элементы второго массива (когда в нем тоже присутсвует соотв. цифра).}
Function Add2Num1(ndx : Integer; x : Integer) : Boolean;
Var isNewNum : Boolean;
i : integer;
Begin
isNewNum := True;
For i:=1 to N1 Do isNewNum := isNewNum and (x <> Num1[i]);

If isNewNum Then Begin
Num1[ndx] := x;
If ndx=1 Then {мы узнали Х}
Num2[4] := x
Else
If ndx=2 Then Begin {мы узнали Р}
Num2[2] := x;
FillResul(x);
End
Else
If ndx=5 Then {мы узнали Т}
Num2[6] := x;
End;

Add2Num1 := isNewNum;
End;



{
Эта функция производит умножение столбиком полученных чисел.
Промежуточные строки для следующего суммирования находятся в двумерном
массиве SummArr. Для удобства он нумерется справа налево:
h r u s t
*
g r o h o t

SummArr:
1110 9 8 7 6 5 4 3 2 r
1110 9 8 7 6 5 4 3 2
1110 9 8 7 6 5 4 3
1110 9 8 7 6 5 4
1110 9 8 7 6 5
1110 9 8 7 6

Если полученный результат умножения совпадает с глобальным массивом Resul,
то возвращается True. Массив Resul должен автоматически заполнятся во время
перебора при получении очередного значения Т в процедуре Pick.
}

Function Match : Boolean;
Var SummArr : Array [1..N2, 1..N3] Of ShortInt;
Res : Array [1..N3] Of ShortInt;
Ext : Integer;
b : Boolean;
i, j : Integer;
Begin
For i:=1 To N2 Do
For j:=1 To N3 Do SummArr[i][j] := 0;
For i:=1 To N3 Do Res[i] := 0;

{Выполняем перемножение каждой цифры второго числа на первое, заполняя массив
SummArr}
Ext := 0;
For i:=N2 downto 1 Do Begin
For j:=N1 downto 1 Do Begin
SummArr[N2-i+1][N1-j+1+N2-i] := (Num2[i]*Num1[j] + Ext) mod 10;
Ext := (Num2[i]*Num1[j] + Ext) div 10;
End;
SummArr[N2-i+1][N1+N2-i+1] := Ext;
Ext := 0;
End;

{Выполняем сложение в массиве SummArr}
Ext := 0;
For j:=1 To N3 Do Begin
For i:=1 To N2 Do Inc(Ext, SummArr[i][j]);
Res[N3-j+1] := Ext mod 10;
Ext := Ext div 10;
End;

{Проверяем совпадение}
B := True;
For i:=1 To N3 Do
B := B And (Res[i]=Resul[i]);
Match := B;
End;




{Наша задача подобрать все возможные комбинации цифр для последовательности
ХРУСТГО (остальные цифры в массивах повторяются). Этим занимается
рекурсивная функция Pick. Она подбирает очередное значение очередной цифре и
переходит к следующей. На самом нижнем уровне сформированные массивы
проверяются функцией Match.}
Procedure Pick(x: Integer);
Var i : Integer;
Begin
If x=N1+1 Then
For Num2[1]:=0 To 9 Do Pick(x+1) {подобрали значение для Г}
Else
If x=N1+2 Then
For Num2[3]:=0 To 9 Do Begin {подбираем значение для О}
Num2[5] := Num2[3];
Pick(x+1);
End
Else
If x<=N1 Then Begin {подбираем значение для букв ХРУСТ}
For i:=0 To 9 Do Begin
If Not Add2Num1(x, i) Then continue; {попытка вставить уже существующую цифру}
If (x=N1) and (i=0) Then continue; {Т не может равнятся нулю}
If x=N1 Then FillResul(i*i mod 10); {Заполняем массив результата}
Pick(x+1);
End;
End
Else
If Match Then Begin
For i:=1 To N1 Do Write(Num1[i]); Writeln;
For i:=1 To N2 Do Write(Num2[i]); Writeln;
For i:=1 To N3 Do Write(Resul[i]); Writeln;
End;
End;



Begin
ClrScr;

{Заполняем массивы значением -1 для правильной работы
функции Add2Num1 }
For i:=1 To N1 Do Num1[i]:=-1;
For i:=1 To N2 Do Num2[i]:=-1;

Pick(1);

Writeln('Done');
ReadKey;
End.[/more] Код.

Вообще по большему счету, это тоже самое, что у ShIvADeSt, только решение более универсальное, так как числа хранятся в массивах цифр - их величина ограничивается не емкостью целочисленных типов, а возможной максимальной длинной массива типа ShortInt. А так же перебор сделан не кучей вложенных циклов, а рекурсивной функцией.
Вообще я ее дописывал "на коленке" и конечный вариант не запускал - паскаля под рукой нету. Так что может там чего не заработает
Автор: SerP and MoloT
Дата сообщения: 10.05.2006 15:26
ребят, очень срочно нужно...как написать в Паскале sin(x) в квадрате и в кубе???
Автор: Iceman82
Дата сообщения: 10.05.2006 15:54
SerP and MoloT
Масса вариантов! Правда, не совсем понятно, что тебе надо, ну да ладно.

sin(x) в квадрате можно записать как:
1. s2 := sin(x)*sin(x);
2. s2 := sqr(sin(x));

sin(x) в кубе можно записать как:
1. s3 := sin(x)*sin(x)*sin(x);
2. s3 := exp(3*ln(cos(x)));

Кстати, последний способ универсальный, с помощью него можно возводить любое число в любую степень.
Автор: SaDFromSpb
Дата сообщения: 10.05.2006 20:01
found
Это где вам такие задачки дают? Какой курс?
Автор: western
Дата сообщения: 10.05.2006 21:38

Цитата:
Всем привет!!!   Люди помогите плиз!!!   Pascal 7.0   Где можна скачать или кто то поделитесь библиотекой  HGRAPH.TPU для Паскаля 7.0   так как найти нигде не могу..........   и к тому же очень сильно нада!!!!   Заранее благодарен!!!!     western001@mail.ru




Люди!!!!!

плиз help!!!!!

нужна срочно HGRAPH.TPU на Паскаль 7.0

Заранее благодарен!!!!!!!!!!!!!!!!!!
Автор: Isuaven
Дата сообщения: 10.05.2006 23:08
Помогите пожалуйста, очень нужно сдаль лабораторную по Паскалю. Кто умеет и разбирается - напишите пожалуйста(тока комментов побольше ставьте) Итак, что надо:

Написать прогу, делающую:
1. Ввод БД из файла
2. Сохранение БД в файл
3. Добавление нового эл-та в БД
4. Удаление эл-та из БД
5. Изменение эл-та в БД
6. Поиск эл-та по полю

Структура БД:
Номер, ФИО, Курс, Дата рождения, школа, средний балл

При работе с БД:
1. Осуществлять скроллинг на экране
2. Размер экрана 20 строк
3. Размер файла =< 100

1. Работу с БД организовать с использованием файла
2. Обработку БД в опер. памяти организовать с помощью динамических переменных
3. Вся эта фигня управляется через меню, которое создается прогой MAKEMENU.EXE.

ЗЫ: Паскаль - Турбо Паскаль 7.1
Автор: SerP and MoloT
Дата сообщения: 11.05.2006 16:02
Итак, многоуважаемые програмисты, в паскале я плох, прошу, прошу Вас, как многократных спасителей моей судбы помочь решить задачи, буду премного благодарен...

1Научиться составлять блок-схему, таблицу обозначений и текст программы для вычисления функции Y=F(X) при разных значениях X.Вывод результатов осуществить на экран.
Задание: Составить программу в соответствии с ИДЗ:



2Составить блок-схему, таблицу обозначений и текст программы для вычисления функции Y=F(X) на интервале [a; b] при разных значениях X .Вывод результатов осуществить на принтер.
Задание: составить программу в соответствии с ИДЗ:


3 где х начальное (xn) =0,2 , х конечное (xk) = 1,3 , шаг (h) = 0,1

Тема: Создание программ с использованием оператора цикла
Задание: Составить блок-схему,программу циклической структуры для вычисления значения функции при разных значениях х.
Автор: AstrAlex
Дата сообщения: 11.05.2006 20:52
Привет народ.Поиогите решить задачу по дискретной математике.
Раздел Графы.Нахождение количества компонент связности в графе.
Ориентированные графы.
Заполняем двумерную матрицу(матрица достижимости вершинами вершин на определенных шагах) из 0 и 1 на первом шаге.
Далее прога ставит 1 там, где номер строки это вершина из которой выходят,а номер столбца-номер вершины в которую приходят за 1 шаг.
В конечном итоге получается матрица достижимости (начнут получатся одинаковые матрицы). Нужно переставить местами строки и столбцы чтобы получились блоки из 1 и 0.
В конце подсчитать кол-во блоков из 1.
Заранее ОГРОМНОЕ СПАСИБО тому кто сможет решить эту задачу.
Автор: found
Дата сообщения: 12.05.2006 09:09
Спасибо народ что помогли мне с решением этой задачи. Я всем очень благодарен.

Добавлено:
SaDFromSpb

Такие задачки нам дает препад на 2кусе колледжа, как только началась Алгоритмизация и программирование. Не успели еще while и repeat пройти как на следущую пару тащить решеную задачу надо и с блок-схемой ,и с алгоритмом, и контрольными примерами.

Вот так!
Автор: Iceman82
Дата сообщения: 12.05.2006 16:58
SerP and MoloT
Решение всех задач здесь (без блок-схем алгоритмов):
[more]
1.
Код:
program first;
uses crt;
var
num, denum, y, x : real;
begin
clrscr;
write('Vvedite x: ');
readln(x);
if x <> 0 then
begin
num := exp(ln(ln(x) - 0.85*exp(0.1*ln(x)))/3);
denum := exp((-x)*ln(3)) + ln(abs(sin(2*x)));
y := num / denum;
writeln('Resultat y = ',y)
end
else
writeln('Error: x cannot be a zero!');
readkey;
end.
Автор: SerP and MoloT
Дата сообщения: 12.05.2006 23:41
Iceman82
Мужик! ОГОРМНЕЙШИЕ тебе спасибо, просто огромней некуда!!! Спас ты меня!!!
Так же огромное спасибо SaDFromSpb за потраченное время!!!
Ребят, я даже незнаю как бы Вас и отблагодарить!!!
Автор: Vambata
Дата сообщения: 14.05.2006 15:53
Имеется задание:
Integer величину I преобразовать в ряд символов -10000<I<10000
ну вобщем-то всё =) это дословный перевод с латышского , не могу вьехать что от меня хотят =( возможно надо преобразовать Integer в String , не использовав Str... ваши идеи?
Автор: God Evil
Дата сообщения: 14.05.2006 17:27
Люди помогите надо срочно до 18 числа.
Задача на тему одномерной оптимизации.
1. Построить граффик функции f{x}=3*x*x*x*x-4*x*x*x-12*x*x+2(график сделал, а вот код для поиска немогу , сделал другим методом, он скащал что неподходит )
2. Решить задачу одномерного поиска (Методом общего поиска ) f(x)->min, на интервале [1,3] с точностью епсилан 0.001.

П.С.: Все заранее спасибо за помощь, очень надо.
Автор: SaDFromSpb
Дата сообщения: 15.05.2006 08:30
Vambata
Цитата:
Integer величину I преобразовать в ряд символов -10000<I<10000. ... надо преобразовать Integer в String , не использовав Str...
Скорее всего этого и хотят.
Да какие тут идеи. Сначала определяешь, еслть ли минус, а затем делишь без остатка на на 1000 - вот тебе первая цифра, потом уменьшаешь исходное число на эту цифру, помноженную на 1000. Затем тот же фокус с 100, 10... Ну в цикле это все, конечно.
Автор: nick444
Дата сообщения: 15.05.2006 20:16
нужен оператор генерации случайных чисел - есть ли такой в паскале? и как сделать движение (анимацию), не пользуясь очисткой экрана? да, есть ли какой-нибудь оператор задержки вроде keypressd, но только на определенное время, а не не период до нажатия клавиши (и без использования цикла на 99999999 повторений)?
Автор: SaDFromSpb
Дата сообщения: 15.05.2006 20:29
Оператор генерации случайных чисел - это random(n:integer) - генерирует число от нуля до n-1. Чтоб его инициализировать начальной случайной величиной, перед ним вызывается процедура randomize.
Анимация без очистки всего экрана делается "отчисткой" только использованной его части.
Чтобы задержать выполнение, есть процедура delay(n:integer), которая заставляет программу спать n миллисекунд (правда они только в настоящем досе равны настоящим милисекундам, а под виндой прога спит гораздо меньше, на сколько меньше - зависит от мощности проца).
keypressed - это не оператор, а процедура, определяющая, есть ли символ в клавиатурном буфере.
Автор: Virtual_Maniac
Дата сообщения: 22.05.2006 19:59
Народ ХЕЛП!!!....не получается задача на паскаль подправьте пожалуста что не так. вот условие:
Дан массив содержащий длины прямых. Определить существует ли пятиугольник с задаными сторонами. И подсчитать количество таких пятиугольников.
текст проги:

var
a:array [1..15] of integer;
i,k:integer;
procedure ugol(a,b,c,d,e,s:integer);

begin
if (a+b+c+d>e) or (b+c+d+e>a) or (c+d+e+a>b) or (d+e+a+b>c) or (e+a+b+c>d)
then s:=0 else s:=1;
end;
begin
writeln('vvedite massiv');
readln(a[i]);
for i:=1 to 15 do begin
if ugol(s)=0 then k:=k+1
end;
writeln(k);
readln;
end.
Автор: XPEHOMETP
Дата сообщения: 23.05.2006 12:27
Virtual_Maniac

1. Нету нормального механизма выбора пятерок чисел из массива, поэтому и не работает. Надо, скорее всего, вложенные циклы, причем такие, чтобы значения в выбранных пятерках не повторялись.
2. И мне не нравится, что одна из сторон - а, и массив тоже а. Пускай массив будет massiv:array [1..15] of integer (???!!!).
3. Что, длины сторон действительно целые числа? В смысле - массив целых чисел? Подозреваю, что нет. Но пока не важно.

Вроде так пойдет:

1-й цикл: в пределах 1 - 11 (дальше не понадобится). Переменная цикла - это положение в массиве первого числа пятерки, а, с самым меньшим индексом. Поскольку чисел 5, дальше 11 не залезем, там еще должны поместиться оставшиеся 4. В результате получаем а из области massiv[1] - massiv[11].

2-й цикл: ib в пределах (ia+1) - 12. Должны оставить место в конце массива еще для 3-х чисел, поэтому только до 12. Получаем значения b в пределах massiv[iа+1] - massiv[12].

3-й цикл: в пределах (ib+1) - 13. Берем с из massiv[ib+1] - massiv[13] - аналогично.

4-й цикл: id в пределах (+1) - 14, d в пределах massiv[iс+1] - massiv[14] - аналогично.

5-й цикл: в пределах (id+1) - 15, е в пределах massiv[id+1] - massiv[15] - аналогично.

То есть максимальные индексы можно поставить и 15 везде, это без разницы: циклы с этими индексами просто не будут отрабатываться.

Циклы вложенные. Так мы должны перебрать все пятерки чисел без повторений. Каждую пятерку проверяем на пятиугольность процедурой ugol. Можно малость выпендриться и переписать проверку: вместо одного длинного условия - две коротких строчки. 1. Находим максимальное число из a,b,c,d,e (пускай будет новая переменная р); 2. Условие пятиугольности - а+b+c+d+e>2*р
Автор: Virtual_Maniac
Дата сообщения: 23.05.2006 14:58
спасибо канечно!!!!....огромное!!!!....я так то понял..но фот фсетки.....я паскаль дафно не едржал ф руках и че да как там не смогу сделать.....плиз пожалуста не сможешь мне текст проги просто скинуть?
P.S. Там должно подсчитывать количество пятиугольников и нужно обязательно использовать процедуру котрую я там написал. Помогу прошу мне зафтра сдавать это...
Автор: Myaso90
Дата сообщения: 23.05.2006 18:29
1.Создайте нетипизированный файл, содержащий список абонентов: фамилии и номера телефона. Проверьте, есть ли в списке однофамильцы и выведите на экран их фамилии, если есть.
2. Дан типизированный файл чисел типа byte. Создайте второй типизированный файл, содержащий те же самые числа, записанные в обратном порядке.
Автор: Vambata
Дата сообщения: 23.05.2006 19:32
Спасибо за помощь )
Автор: AnTul
Дата сообщения: 24.05.2006 19:15
Вот преподаватель сделала замечания:

> Замечания по работе № 4.
> 1.    В программе используются процедуры без параметров, что плохо сказывается на структуре программы. Нужно в число формальных параметров процедуры включать все входные и выходные переменные.
> 2.    Задача поиска предполагает нахождение номера элемента с заданным значением, а не наоборот.
> 3.    При решении задачи поиска нужно учесть, была ли к исходной последовательности вначале применена сортировка, либо нет, и в зависимости от этого выбрать алгоритм поиска. Это замечание означает следующее. Перед тем как выполнить поиск мы можем вначале использовать процедуру сортировки. В этом случае целесообразно применить бинарный поиск. Если же поиск применяется до сортировки, то единственным методом является полный перебор.
>
>     С учетом сделанных замечаний контрольная работа № 4 не зачтена.
[more]
Вот сама программа:

Program Task4;
Const N=15;
Var
mas:array[1..N] of real; {Ограничение длины массива}
m:integer;
Procedure vozr; {Процедура сортировки массива по возрастанию}
Var
i,j:integer;
x:real;
Begin
i:=2;
While i<=m do begin
j:=m;
While j>=i do begin
if mas[j-1]>mas[j] then begin
x:=mas[j-1];
mas[j-1]:=mas[j];
mas[j]:=x;
end;
j:=j-1;
end;
i:=i+1;
end;
End;
Procedure ubyv; {Процедура сортировки массива по убыванию}
Var
i,j:integer;
x:real;
Begin
i:=2;
While i<=m do begin
j:=m;
While j>=i do begin
if mas[j-1]<mas[j] then begin
x:=mas[j-1];
mas[j-1]:=mas[j];
mas[j]:=x;
end;
j:=j-1;
end;
i:=i+1;
end;
End;
Procedure mass; {Процедура создания массива}
Var
i:integer;
Begin
i:=0;
WriteLN ('Введите количество элементов массива (не более 15-ти): ');
Read(m);
while m>N do
begin
WriteLN('Ошибка! Ваше число пpевышает 15. Введите еще pаз: ');
Read(m);
end;
WriteLN ('Введите ', m, ' чисел: ');
for i:=1 to m do read (mas[i]);
End;
Procedure menu; {Процедура работы меню}
Var
k,i,l:integer;
Begin
WriteLN('Выберете необходимое действие (нажмите клавишy 1, 2, 3, 4
или 5):');
WriteLN('1. Создать новый массив. ');
WriteLN('2. Отсортировать массив по возрастанию. ');
WriteLN('3. Отсортировать массив по убыванию. ');
WriteLN('4. Найти элемент массива. ');
WriteLN('5. Выход. ');
Read(l);
if l=1 then {Если выбран 1-й пункт меню, то создается массив}
Begin
mass;
menu;
end;
if l=2 then {Если выбран 2-й пункт меню, то массив сортируется по
возрастанию}
Begin
vozr;
WriteLN('Выводим отсоpтиpованный по возpастанию массив: ');
for i:=1 to m do WriteLN(mas[i]:4:4);
menu;
end;
if l=3 then {Если выбран 3-й пункт меню, то массив сортируется по
убыванию}
Begin
ubyv;
WriteLN('Выводим отсоpтиpованный по yбыванию массив: ');
for i:=1 to m do WriteLN(mas[i]:4:4);
menu;
end;
if l=4 then {Если выбран 4-й пункт меню, то выводится значение
заданной ячейки массива}
Begin
WriteLN('Введите номеp ячейки массива: ');
Read(k);
while k>m do
begin
WriteLN('Ошибка! Ваше число пpевышает ',m,'. Введите еще pаз:
');
Read(k);
end;
WriteLN('Значением ячейки ',k,' яявляетсяя: ', mas[k]:4:4);
menu;
end;
if l=5 then WriteLN('Good Bye!'); {Если выбран 5-й пункт меню, то
происходит выход из программы}
halt;
End;
Begin
mass; {Вызов процедуры создания массива}
menu; {Вызов процедуры меню}
End.
[/more]
Поправьте, пожалуйста. Не знаю вообще, как организовать этот поиск, и
что-то туплю с фактическими и формальными параметрами в процедуре.
Поясните, плиз, заодно, что оно такое и в каких случаях и как применяются.
В учебнике непонятно. Почему одни (и какие?) нужно писать в строчке, а
другие - var?
Автор: mestrat
Дата сообщения: 24.05.2006 21:36
Помогите пожалуйста мне с задачками, мне их завтра сдавать.( тока решайте не через массивы)

1)Дано натуральное число n.Проверить, есть или в записи числа три одинаковых цифры(n&#8804;9999).---решите эту пожалуйста и постройте блок схему по While.

2)По введенному номеру года напечатать римскими цыфрами век, к которому относиться данный год.--- постройте блок схему и к этой задачке

Повторяюсь делать не через массивы, пожалуйстап помогите мне с решением этих задач, а то я никак решить немогу..............


Думаю что сдесь сидят очень умные и знающие прогнраммисты, для которых эжти задачки как раз плюнуть =))
Автор: Creator111
Дата сообщения: 26.05.2006 14:10
Вот разные задачи. Всех, кого они заинтересуют, попробуйте порешать. А что получится
решить, скидывайте на E-mail: vadikstep@mail.ru



1. Используя модуль GRAPH построить график функции y = x2 на интервале изменения х &#61646; [-a, a].

3. Используя модуль GRAPH построить график функции. Значения аргумента и функции заданы массивом (первая строка – значения аргумента, вторая – значения функции):
-1 0 2.4 5 7
1 3.3 5.2 5 10

4. Написать программу вычисления натуральной степени вещественного числа, используя рекурсивную под-программу.
5. Используя рекурсивную подпрограмму, написать программу вычисления xn ( x –вещественное, n – целое), согласно формуле:

6. Написать программу. Определить, является ли заданная строка палиндромом, т.е. читается одинаково слева направо и справа налево. Использовать рекурсивную логическую функцию.
7. Написать программу вычисления n-го члена геометрической прогрессии, используя рекурсивную подпро-грамму.
8. Написать программу вычисления n-го члена арифметической прогрессии, используя рекурсивную подпро-грамму.
9. Написать программу вычисления суммы членов арифметической прогрессии, используя рекурсивную под-программу.
10. В типизированном файле задана последовательность положительных вещественных чисел, за которой следу-ет отрицательное число. Написать программу нахождения суммы положительных чисел из файла. Нахожде-ние суммы оформить в виде рекурсивной функции без параметров.
11. Написать программу вычисления суммы членов геометрической прогрессии, используя рекурсивную под-программу.
12. Написать программу нахождения суммы цифр натурального числа. Использовать рекурсивную подпрограм-му.
13. Написать программу, определяющую является ли симметричной часть строки, начиная с i–го символа и за-канчивая j–тым символом. Использовать рекурсивную логическую функцию.
14. Написать программу вычисления суммы элементов одномерного массива, используя рекурсивный алгоритм.
15. Дана рекурсивная функция
Function F (n: integer) : integer;
Begin
If n > 100 then F := n – 10 else F := F(F(n+11))
End;
Вычислить при F(106), F(99) и F(85). Какие вообще значения принимает эта функция?
16. Дана рекурсивная функция
Function FIB(n: integer): integer;
Begin
If n <= 1 then FIB := 1 else FIB := FIB (n-1) + FIB(n-2)
End;
Вычислить FIB(2), FIB(4).
17. Что такое граничное условие и каково его назначение в рекурсивной подпрограмме? В приведенной ниже функции укажите, что является граничным условием и чему будет равно значение функции А(4)?
function А(n: integer): integer;
Begin if n <= 0 then A := 1 else А := n*А(n-1) end;
18. Какие из следующих описаний функции F(n), которая должна вычислять
факториал от n, правильны?
А) function F(n: integer): integer;
Begin F := n*F(n-1) end;
B) function F(n: integer): integer;
Begin if n = 0 then F := 1 else F :=F(n+1)/(n+1) end;
C) function F(n: integer): integer;
Begin if n = 0 then F := 1 else F := n*(n-1)F(n-2) end;
D) function F(n: integer): integer;
Begin if n = 0 then F := 1 else F := n*F(n-1) end;
Какова глубина рекурсии при n = 5?
19. Почему приведенный ниже алгоритм посимвольного формирования строки завершится аварийно.
Function Stroka: string;
Var c : char;
Begin
Write(‘Введите очередной символ: ’); readln( c);
Stroka := Stroka +c;
End;
Внесите изменения в приведенную функцию, чтобы задача была решаема.
20. Написать программу с использованием средств модуля GRAPH.
Построить шкалу измерительного прибора (см .рис.): Треть шкалы, на которой стоит указатель закрашена в красный цвет, остальные две трети – в серый цвет. При нажатии клавиши стрелки вправо (код клавиши #0,#77) указатель пе-ремещается на второе деление и соответственно меняется цвет частей шкалы прибора.

21. Написать программу с использованием средств модуля GRAPH.
Построить закрашенный сектор, угол сектора – 30 градусов.
При нажатии клавиши стрелки вправо (код клавиши #0,#77) сектор должен переместиться на 15 градусов по часовой стрелки, при нажатии стрелки влево (код клавиши #0,#75) должен переместиться на 15 градусов против часовой стрелки.
22. Написать программу с использованием средств модуля GRAPH.
Построить окружность, разделенную на N секторов. Один (любой) сектор,
закрашен в желтый цвет. При нажатии клавиши ENTER (код клавиши #13) закрашенный сектор должен перемещать-ся по часовой стрелке. Сделать один полный оборот.
23. Написать программу с использованием средств модуля GRAPH.
Построить прямоугольник, стороны которого смещены от границ экрана на 10 пикселей (драйвер VGA). Построить диагонали прямоугольника. Части прямоугольника, заключенные между диагоналями закрасить в различные цвета. При нажатии клавиши ESC (код клавиши #27) сдвинуть цвета закраски по часовой стрелке.
24. Существует типизированный файл, содержащий 10 чисел. Прочитать числа из файла и вывести их на экран в один столбик в графическом режиме, размещение начать с 20 позиции по горизонтали и 30 позиции по вертикали.
25. Создать линейный однонаправленный список. Список содержит три информационный поля: строка и 2 чис-ла.
26. Существует однонаправленный линейный список. Написать подпрограмму вывода его в текстовый файл (на экран, в типизированный файл).
27. Существует однонаправленный линейный список. Написать подпрограмму удаления 5, 6, 7, 8 элементов это-го списка.
28. Существует однонаправленный линейный числовой список. Написать подпрограмму нахождения суммы элементов списка.
29. Существует однонаправленный линейный список. Написать подпрограмму вставки в список нового элемента (в начало списка, в конец списка, в любое заданное место списка).
30. Существует однонаправленный линейный список. Написать подпрограмму, которая изменяет размещение последнего элемента списка: был последний – стал третий.
31. Существует однонаправленный линейный список. Написать подпрограмму: поменять местами первый и по-следний элемент списка.
32. Существует однонаправленный линейный список. Написать подпрограмму: перенести первый элемент спи-ска в конец списка.
33. Существует текстовый файл, содержащий целые числа. Прочитать файл в однонаправленный линейный спи-сок, обеспечив сортировку элементов списка по убыванию.
34. Существует текстовый файл, содержащий целые числа. Прочитать файл в одномерный массив, разместив его в динамической памяти.
35. Существует типизированный файл. Структура записи: два числа и строка из 20 символов. Прочитать файл в два массива: один – строковый, другой – двумерный числовой. Массивы разместить в динамической памяти.
36. Существует текстовый файл, содержащий целые числа. Прочитать файл, создав стек (создав очередь).
37. Существует очередь. Написать подпрограмму вывода на экран (в текстовый файл, в типизированный файл) элементов очереди.
38. Существует стек. Написать подпрограмму вывода на экран (в текстовый файл, в типизированный файл) эле-ментов стека.
39. Поиск в одномерном (двумерном) массиве заданного числа и возврат из функции поиска указателя на задан-ное значение.
Автор: found
Дата сообщения: 28.05.2006 12:19
Народ подскажите пожалуйста как в Pascale можно описать переменую содержащую в себе 11 цифр. И эта переменная участвует в цикле For.
Автор: AnTul
Дата сообщения: 28.05.2006 13:46
Что-то народ не подсказывает... Наверное, уже не изучают Паскаль нигде. А те, кто изучал - забыли.

Страницы: 1234567891011121314

Предыдущая тема: VC++ vs. Delphi


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.