Часовой пояс: UTC + 3 часа




Куратор(ы):   Lord_of_Darkness   



Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 985 • Страница 21 из 50<  1 ... 18  19  20  21  22  23  24 ... 50  >
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 
Прилепленное (важное) сообщение

Убедительная просьба ко всем, кто выкладывает исходники:
1. Обязательно пользуйтесь тэгом code (иначе очень трудно читать)
2. Старайтесь делать отступы

Если вы хотите чтобы вам помогли в написании программы, внятно излагайте задание!

Прежде чем задать вопрос, воспользуйтесь учебником


Возможно, что нужная вам программа уже написана, поэтому советую просмотреть список здесь и здесь

Отредактировано куратором: Lord_of_Darkness. Дата: 07.07.2006 19:36



Партнер
 

Куратор темы
Статус: Не в сети
Регистрация: 03.01.2004
Откуда: Питер
stupid user
№1 а поюзать поиск по теме?

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 раз.

 

Member
Статус: Не в сети
Регистрация: 08.12.2005
Откуда: Питер!
Во, отлично :beer:
Да я делаю сам, что могу.. просто забыл :tooth:


 

Куратор темы
Статус: Не в сети
Регистрация: 03.01.2004
Откуда: Питер
MW!
линии

Код:
uses crt;
var
 x1, x2, x3, x4, y1,
 y2, y3, y4, k1, k2,
 b1, b2, xc, yc : real;
begin
  clrscr;
  writeln('Line1 (x1,y1) (x2,y2)');
  write('x1 = ');
  readln(x1);
  write('y1 = ');
  readln(y1);
  write('x2 = ');
  readln(x2);
  write('y2 = ');
  readln(y2);
  writeln('Line2 (x3,y3) (x4,y4)');
  write('x3 = ');
  readln(x3);
  write('y3 = ');
  readln(y3);
  write('x4 = ');
  readln(x4);
  write('y4 = ');
  readln(y4);

  if x2-x1 = 0 then k1:=0
  else k1:=(y2-y1)/(x2-x1);

  if x4-x3 = 0 then k2:=0
  else k2:=(y4-y3)/(x4-x3);

  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.


вот иллюстрация
#77#77

и расчет файл MathCAD 11
Добавлено спустя 9 минут, 28 секунд
stupid user сам то попробуй сделать, основной код уже написан, нужно всего ничего, а модуль тоже просто делается. Надо же учится когданибудь. Если что не получится или будут вопрос - помогу, а писать программы за всех уже честно надоело, тем более такие простые.

_________________
Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)


 

Member
Статус: Не в сети
Регистрация: 08.12.2005
Откуда: Питер!
Lord_of_Darkness
Респект!!! Супер!! Большое человеческое спасибо! :applause: :shock: :up:


 

Member
Статус: Не в сети
Регистрация: 13.08.2004
написал следующее:
Код:
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;

begin
write (max);
readln;
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)


 

Member
Статус: Не в сети
Регистрация: 13.01.2006
Откуда: Rostov-On-Don
Lord_of_Darkness Огромное спасибо. Выручил! :beer:

_________________
It`s Better To Reign In Hell Than Serve In Heaven.


 

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


1. Одна дискета соит 11р 50к. Коробка содердит 12 дискет и стоит 114р. 50 к. Ящик содержит 12 коробок и стоит 1255р. Надо купить N дискет заплатив за это меньшую стоимость.

2. Даны два цел. числа, известно что одно из них является делителем другого. Найти результат деления, читывая то что числа могут быть до 50 знаков. И использование стандартных операций не возможно.
Добавлено спустя 8 минут, 48 секунд
И если можно еще вот такую. результаты должны быть в таблице

http://luga.at.tut.by/untitled.PNG

П. 3.12 Заменил на ссылку. Lord_of_Darkness
Отредактировано куратором: Lord_of_Darkness. Дата: 13.10.2006 0:09


 

Куратор темы
Статус: Не в сети
Регистрация: 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)


 

Куратор темы
Статус: Не в сети
Регистрация: 03.01.2004
Откуда: Питер
Luga

№1

Код:
uses crt;
const
  BoxFDDCnt = 12; //Дискет в коробке
  CaseFDDCnt = 12; // Коробок в ящике
  FDDCost = 11.5;
  FDDBoxCost = 114.5;
  FDDCaseCost = 1255.0;

var
  N, m, FDD, BoxFDD, CaseFDD: integer;

begin
  clrscr;
  write('Floppy count N = ');
  readln(N);
  CaseFDD := N div (CaseFDDCnt*BoxFDDCnt);
  BoxFDD := (N - CaseFDD*CaseFDDCnt*BoxFDDCnt) div BoxFDDCnt;
  FDD := N - CaseFDD*CaseFDDCnt*BoxFDDCnt - BoxFDD*BoxFDDCnt;
  writeln(CaseFDD,' FDD Cases, ',BoxFDD,' FDD Boxes, and ',FDD,' FDD''s');
  write('Cost = ',CaseFDD*FDDCaseCost+BoxFDD*FDDBoxCost+FDD*FDDCost:10:2,'RUR');
  readln;
end.

_________________
Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)


Последний раз редактировалось Lord_of_Darkness 26.10.2006 19:03, всего редактировалось 1 раз.

 

Member
Статус: Не в сети
Регистрация: 01.06.2003
Откуда: Pskov
Luga писал(а):
2. Даны два цел. числа, известно что одно из них является делителем другого. Найти результат деления, читывая то что числа могут быть до 50 знаков. И использование стандартных операций не возможно.


http://sources.ru/pascal/math/longar.htm

Цитата:
Арифметика с длинными числами

Олег Бунин
27.07.1996

Выдранные из 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


Лови для pascal - rsatest.pas


Тут, правда, паскаль идет вперемешку с асмом. :)

_________________
ПС: [13-06-2006] Идеальный скриншот BIOS'а ? Запросто ! // K.V.


 

Member
Статус: Не в сети
Регистрация: 24.12.2005
Длинная арифметика... :) А что хотя бы страницу назад перелистнуть слабо? ;)
http://forums.overclockers.ru/viewtopic.php?p=2927274#2927274


 

Lord_of_Darkness изви плиз, но не смотря на то что вроде бы дали инфу для написаниця программы деления одного 50 числа значного на другое, я программу не напишу, как будет время помоги плиз. Спасибо.


 

Member
Статус: Не в сети
Регистрация: 08.12.2005
Откуда: Питер!
Народ, выручайте... нужна помощь в написании прог, не успеваю сделать всё сам :weep: :insane:
1) #77:rip:#77
-
-
2) #77:gun:#77
-
-
3) #77:grob:#77
:bow:


 

Куратор темы
Статус: Не в сети
Регистрация: 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)


 

Member
Статус: Не в сети
Регистрация: 24.12.2005
Lord_of_Darkness писал(а):
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)


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 985 • Страница 21 из 50<  1 ... 18  19  20  21  22  23  24 ... 50  >
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan