Убедительная просьба ко всем, кто выкладывает исходники: 1. Обязательно пользуйтесь тэгом code (иначе очень трудно читать)
2. Старайтесь делать отступы
Если вы хотите чтобы вам помогли в написании программы, внятно излагайте задание!
Прежде чем задать вопрос, воспользуйтесь учебником
Возможно, что нужная вам программа уже написана, поэтому советую просмотреть список здесь и здесь Отредактировано куратором: Lord_of_Darkness. Дата: 07.07.2006 19:36
2-е см. книжку из прилепленного сверху поста, там все просто.
Добавлено спустя 1 час, 44 минуты, 10 секунд
MW! писал(а):
"Для заданного с клавиатуры значения N найти (2•N+1)!! ", используя цикл "FOR ... DO"
вспоминаем, что такое двоной факториал
Цитата:
Двойным факториалом называется последовательное произведение вида: 1*3*...*n, если n - нечетное, и 2*4*6...*n, если n четное.
Код:
var n, i : integer; fact, mult : longint; begin write('Enter n '); readln(n); mult := 1; fact:=1; for i:=1 to n+1 do begin fact:=fact*mult; mult:=mult+2; end; write('(2*n+1)!! = ', fact); readln; end.
делать то нечего. Так ведь ничему и не научишься, пока сам делать лабы не будешь.
_________________ Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)
Последний раз редактировалось Lord_of_Darkness 28.09.2006 22:00, всего редактировалось 1 раз.
if k1<>k2 then begin b1 := -(k1*x1 - y1); b2 := -(k2*x3 - y3); xc := (b1-b2)/(k2-k1); yc := (k2*b1-k1*b2)/(k2-k1); write('These two straight lines meet cross at point (',xc:4:1,', ',yc:4:1,')'); end else write('These two straight lines don''t cross'); readln; end.
и расчет файл MathCAD 11 Добавлено спустя 9 минут, 28 секунд stupid user сам то попробуй сделать, основной код уже написан, нужно всего ничего, а модуль тоже просто делается. Надо же учится когданибудь. Если что не получится или будут вопрос - помогу, а писать программы за всех уже честно надоело, тем более такие простые.
_________________ Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)
function max:byte; const m:array [1..5,1..5] of byte = ((1,8,8,8,8), (2,1,8,8,8), (3,4,1,8,8), (5,6,7,1,8), (0,0,0,0,1)); var max,j,i,z:byte; begin max:=m[5,1]; z:=1; for i:=2 to 5 do for j:=1 to z do begin if m[i,j]>max then max:=m[i,j]; inc(z); end; end;
begin write (max); readln; end.
при write (max) она мне выдает непонятное числа, сначала 0 а потом 82 при каждой компиляции... если function max оформить как отдельную программу, то она работает. где ошибка?
з.ы. можно ли "const m:array [1..5,1..5] of byte..." написать в главной программе и передать этот массив функции?
Advanced member
Статус: Не в сети Регистрация: 09.03.2004 Откуда: Кишинёв
stupid user а каково задание? Я так понял что нужно найти максимальный элемент ниже главной диагонали? Тогда z нужно увеличивать вне второго цикла. А ошибка у тебя тут основная это то, что у тебя название функции совпадает с одной из переменных, определённой внутри функции.
Код:
function max:byte; const m:array [1..5,1..5] of byte = ((1,8,8,8,8), (2,1,8,8,8), (3,4,1,8,8), (5,6,7,1,8), (0,0,0,0,1)); var mx,j,i,z:byte; begin mx:=m[5,1]; z:=1; for i:=2 to 5 do begin for j:=1 to z do if m[i,j]>mx then mx:=m[i,j]; inc(z); end; max := mx; end;
Member
Статус: Не в сети Регистрация: 13.01.2006 Откуда: Rostov-On-Don
Срочно нужна помощь с лабой. Дело не в том, что сложная, а в том что на меня их сейчас целая гора навалилась, и времени как всегда мало.
Задание: Написать программу которая состоит из двух процедур: 1) Процедура shifr(f1,f2) которая заменяет буквы ["a".."z"] на буквы ["b".."z","a"] (с сохранением деления на строки (например a->b, b->c, z->a) ) из файла f1, а затем сохраняет получившийся результат в файл f2. 2) Процедура deshifr(f2,f3), которая производит обратную замену символов. В результате работы программы должны быть три файла: f1-исходный текст, f2-"зашифрованный текст", f3-"расшифрованный текст".
_________________ It`s Better To Reign In Hell Than Serve In Heaven.
Куратор темы Статус: Не в сети Регистрация: 03.01.2004 Откуда: Питер
viger
Код:
program EasyCrypt; uses crt;
procedure shifr(f1,f2:string); var fin, fout: text; symb: char; begin Assign(fin,f1); Assign(fout,f2); reset(fin); rewrite(fout); while not EOF(fin) do begin read(fin,symb); if symb in ['a'..'y'] then symb:=CHR(ORD(symb)+1) else if symb='z' then symb:='a'; write(fout,symb); end; close(fout); end;
procedure deshifr(f2,f3:string); var fout, fcheck: text; symb: char; begin Assign(fout,f2); Assign(fcheck,f3); reset(fout); rewrite(fcheck); while not EOF(fout) do begin read(fout,symb); if symb in ['b'..'z'] then symb:=CHR(ORD(symb)-1) else if symb='a' then symb:='z'; write(fcheck,symb); end; close(fcheck); end;
begin clrscr; shifr('c:\inputf.txt','c:\outputf.txt'); deshifr('c:\outputf.txt','c:\check.txt'); write('Files sucefful written. Press any key.'); readln; end.
stupid user писал(а):
можно ли "const m:array [1..5,1..5] of byte..." написать в главной программе и передать этот массив функции?
да, тогда нужно описать его в параметрах функции так:
Код:
function max(const m:array [1..5,1..5] of byte):byte;
_________________ Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)
Помогите пожалуйста написать программу по для решения двух задач.
1. Одна дискета соит 11р 50к. Коробка содердит 12 дискет и стоит 114р. 50 к. Ящик содержит 12 коробок и стоит 1255р. Надо купить N дискет заплатив за это меньшую стоимость.
2. Даны два цел. числа, известно что одно из них является делителем другого. Найти результат деления, читывая то что числа могут быть до 50 знаков. И использование стандартных операций не возможно.
Добавлено спустя 8 минут, 48 секунд И если можно еще вот такую. результаты должны быть в таблице
Куратор темы Статус: Не в сети Регистрация: 03.01.2004 Откуда: Питер
последняя
Код:
uses crt;
var i, j : integer; x : real;
function pow(num: real; exp1: real):real; var i: integer; tmp : real; begin
if exp1<>0 then begin tmp:=exp(ln(num)*exp1); if exp1<0 then tmp:=1/tmp; end else tmp:=1; pow:=tmp; end;
function f(x: real; n: integer): real; var k: integer; tmp: real; begin tmp:=0; for k:=1 to n do tmp:=tmp+exp(pow((pow(x,k-1)),1/k))+sqrt(pow(x,k)); f:=sqrt(x)+1/9*tmp; end;
begin clrscr; for i:=10 to 15 do begin x:=0.6; repeat writeln('n = ',i,' x = ',x:3:2,' f = ',f(x,i):10:5); x:=x+0.25; until x>1.1; end; readln; end.
_________________ Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)
Member
Статус: Не в сети Регистрация: 01.06.2003 Откуда: Pskov
Luga писал(а):
2. Даны два цел. числа, известно что одно из них является делителем другого. Найти результат деления, читывая то что числа могут быть до 50 знаков. И использование стандартных операций не возможно.
Выдранные из RSA функции для работы с длинными числами
12k
From: "Oleg Bunin" <bunin@kavkaz.elektra.ru> Subject: Re: Очень большие числа....!!! Date: 27 Jul 1996 07:34:59 GMT Organization: SKFGVC
> Andre Fedorov wrote: > > > Привет мужики ! > > Кто подскажет, как можно работать с огромными числами (нужно помнить все! > > цифры) из 150-200 значащих цифр ? > > В обычное число с пл. точкой они все естественно не помещаются...(( > > > > Буду признателен за наводку и в ответ помогу, чем смогу. > > Andre > > > > afedorov@tnsplus.kz
Lord_of_Darkness изви плиз, но не смотря на то что вроде бы дали инфу для написаниця программы деления одного 50 числа значного на другое, я программу не напишу, как будет время помоги плиз. Спасибо.
Куратор темы Статус: Не в сети Регистрация: 03.01.2004 Откуда: Питер
MW!
первая
Код:
function f(x:real):real; begin if x <= -2 then f:= -x-3 else if (x>-2) and (x<=0) then f:= x+1 else if (x>0) and (x<=2) then f:= -x+1 else if x>2 then f:= x-3; end;
вторая
Код:
n:=1; P:=1; z:=1; k:=ln(2); repeat z:=exp(k/n); P:=P*z; inc(n); until z<=1.00001;
третья
Код:
n:=3; X:=5; Y:=X; for i:=1 to 4 do Y:=exp(ln(abs(Y+1.5))/n); Y:=Y*sqr(n)/2;
Luga в той трактовке задачи, которая у тебя сейчас написана - она довольно сложна и реализация требует еще функции длинного сложения, вычитания и умножения. Если же данное длинное число нужно поделить на однозначное, то это много проще.
В случае деления длинного на длинное реализация будет громоздкой и сложной, у меня нет на это времени.
Вот к сведению: http://cp.people.overclockers.ru/cgi-bi ... e=long.zip
PS функция деления с прошлой страницы некорректна, и правильные результаты выдает лишь иногда.
_________________ Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)
PS функция деления с прошлой страницы некорректна, и правильные результаты выдает лишь иногда.
Как так некорректна? Я её, конечно, писал очень давно, но всё работало (в BP7.0), специально ничего не менял, чтоб не напортачить - проверить негде. Я только забыл упомянуть, что числа хранятся в "перевёрнутом" виде, т.е. первый символ - младший разряд, а не старший. Может из-за этого не работало? Примерчик-с, плиз.
Только начал учить паскаль. Подскажите в чем проблема.
Задача: сравнить две даты - следует ли вторая дата за первой?
Вот код:
Код:
program lol; Uses crt; var m1,m2,d1,d2,y1,y2: integer; begin Writeln('Введите первую дату'); Readln(d1,m1,y1); Writeln('Введите вторую дату'); Readln(d2,m2,y2); If d1+1=d2 then begin if m1=m2 then begin if y1=y2 then begin Writeln('Даты последовательны'); Readln; end else Writeln('Даты не следуют'); Readln; end; end; end.
Два вопроса.
1. Можно ли в одном if задать несколько условий, чтобы не городить столько?
2. В данном примере, если даты последовательны, то это выводится на экран. Если нет - прога закрывается без сообщений. Почему? Насколько я понимаю else относится только к последнему условию, а не ко всему коду. Как это исправить?
Куратор темы Статус: Не в сети Регистрация: 03.01.2004 Откуда: Питер
Билли Бонс писал(а):
Примерчик-с, плиз.
Код:
s1:='65536'; s2:='4096'; write(Divide(s1,s2));
получаем 6 вместо 16...
1555500/50 почему то равно 10
хотя 15/5=3 Добавлено спустя 12 минут, 19 секунд DarkEdem 1. пиши условия в скобках и через AND или OR, в данном случае нужен AND.
2. либо ввести логическую переменную, либо сделать один if с перечислением всех условий и else будет относится к нему.
_________________ Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения