Перейти к содержанию

Задачи на Pascal/Delphi (РЕШЕНИЕ)


Рекомендуемые сообщения

Пожалуйсто помогите, я в паскале вобще не понимаю.

1. Около стены наклонно стоит палка заданной длины. Известно расстояние от стены до конца палки. Определить значение угла между полом и палкой.

2. Найти значение функции, заданной графиком.

%D2%EE%F7%E5%F7%ED%FB%E9%20%F0%E8%F1%F3%ED%EE%EA.0d20dd92d7acb91ab8d933e18944dff5.JPG

Как я понял надо программу составить!

Ссылка на комментарий

1) арккосинус(x/L) x катет, L гипотенуза

2) находим уравнение прямой проходящей через 2 точки :) (x-x1)/(x2-x1)=(y-y1)/(y2-y1)

если x<-3 то вывод("не попал :) ")

иначе если (x>=-3)и(x<=3) то вывод(смотри формулу прямой)

иначе вывод("значение функции=6");

Ссылка на комментарий

дык так неинтересно))

учись прогу писать) нафига ты учишься то?)

1)

var x,l:real;

begin

readln(x,l);

writeln(arctan(sqrt(sqr(l)-sqr(x))/x)*(180)/pi:5:2);

end.{гг вспомнил что вроде нет арккосинуса в паскале зато есть арктангенс :) путём нехитрых вычислений понимаем что тангенс это частное катетов) дальше преобразование в градусы, иначе будешь получать всё в радианах и тебе это не понравится :) }

2) имеются 2 точки (-3,0) и (3,6) формулу сверху видишь оттуда следует что x1=-3 y1=0 x2=3 y2=6 далее оставляешь y в правой части уравнения всё остальное угоняешь влевую часть и о алелуя получаем уравнение прямой)

далее код : if x<-3 then write('Акела промахнулся :)')

else if (x>=-3)and(x<=3) then write('значение уравнения равно ',{а тут формулка прямой})

else write('значение уравнения равно 6');

end.

там где формулка советую сделать форматный вывод без мантисы)

последний else равно 6 думаю и так понятно почему :)

Ссылка на комментарий

Дано натуральное число k. Напечатать k-ую цифру последовательности: 12345678910111213..., в которой выписаны подряд все натуральные числа.

помогите плз решить, мне нужно блок-схему составить, но можна проста на паскале тока без масивов и процедур там всяких паскалевских.

заранее всем спасиба)

Ссылка на комментарий
Дано натуральное число k. Напечатать k-ую цифру последовательности: 12345678910111213..., в которой выписаны подряд все натуральные числа.

создаестся строка (изначально присваеваешь строке пустое значение(прим s=''))

считываешь с клавы значение k делаешь цикл for от 1 до к

в цикле делаешь что-то подобное s=s+str(i)

затем выводишь на экран элемент s(k)

там в цикле можно и не до k но у мну щас мозга не соображают, посему более рационального решения я представить не могу.

Ссылка на комментарий

Inclodes

ты маленько не понял задание) последовательность тут идет бесконечная 1234567891011..1920..2930..3940..49.....99100...199..1000..1999......... и нужно выдать к-ую цифру этой послед-ти

Добавлено спустя 1 минуту 19 секунд:

и строки и масивы не используются, а тока циклы да деления целочисленные

Ссылка на комментарий

PapiruS

что-то типа того(синтаксис паскаля не очень помню):


function dec_cnt(t:integer):integer;
var i:integer;
begin
i=1;
while (t>=10) do
begin
t:=t div 10;
inc(i);
end
result:=i;
end;

function n_dec(t,i:integer):integer;
var
j:integer;
begin
j=dec_cnt(t)+1-i;
while (j>=0)
begin
t:=t div 10;
dec(j);
end;
result:=t mod 10;
end;

var
i,k:integer;
begin
readln(k);
i=1;
while (k>dec_cnt(i)) do
begin
k:=k-dec_cnt(i);
inc(i);
end;

writeln("Result = ",n_dec(i,k));

ps. Написал для теста на перле и попытался перевести в паскаль, сорри если что-то не так. на перле:


use strict;

sub dec_cnt{
my $t=shift;
my $i=1;
while ($t>=10)
{
$t/=10;
$i++;
}
return $i;
}

sub n_dec
{
my $t=shift;
my $i=shift;
my $j=dec_cnt($t)+1-$i;
while (--$j)
{ $t/=10;}
return $t%10;
}

my $k=<>;
my $i=1;
while ($k>dec_cnt($i))
{
$k-=dec_cnt($i);
$i++;
}
print "Result=".n_dec($i,$k);

Ссылка на комментарий
да че ты масифчик на блоксехе нарисовать не можеш то?

Это кому было-то?

Добавлено спустя 1 минуту 28 секунд:

Зачем умножаем на (180)/pi:5:2);

Переводит в градусы из радиан.

Ссылка на комментарий

Задан массив действительных чисел. Определите, сколько раз меняется знак в данной последовательности чисел, запомнить номера позиций, в которых происходит смена знака.

... пздц, стыдно :( Помогите :))))

Ссылка на комментарий

Трали-Вали,

a - заданный массив, b - массив в котором будут хранится номера позиций в которых меняется знак, j - количество изменений знака

j=0;
for (int i=0;i{
if (a[i]*a[i+1]<0)
{
b[j++]=i+1;
}
}

Ссылка на комментарий

народ нид Бэкап!



#include
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)
{ if (Edit1->Text==""){ShowMessage("Enter your nickname"); return;}
ServerSocket1->Active = true ;
Button3->Enabled = true;
Button4->Enabled = true ;
Button1->Enabled = false ;
Memo1->Lines->Add("Server Created") ;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
Edit2->Text=ClientSocket1->Address;
ClientSocket1->Active = true ;
Button2->Enabled = false ;
Button4->Enabled = true ;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ServerSocket1ClientConnect(TObject *Sender,
TCustomWinSocket *Socket)
{
Memo1->Lines->Add("Client connected");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ClientSocket1Connect(TObject *Sender,
TCustomWinSocket *Socket)
{
Memo1->Lines->Add("Connected");
}

//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{

if (ServerSocket1->Active==true)
{ServerSocket1->Socket->Connections[1]->SendText(Edit1->Text+"::"+Edit3->Text); }
else
{ ClientSocket1->Socket->SendText(Edit1->Text+"::"+Edit3->Text);}
Memo1->Lines->Add(Edit1->Text+"::"+ Edit3->Text) ;
Edit3->Text="";
}

//---------------------------------------------------------------------------
void __fastcall TForm1::ServerSocket1ClientRead(TObject *Sender,
TCustomWinSocket *Socket)
{
Memo1->Lines->Add(Socket->ReceiveText()) ;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ClientSocket1Read(TObject *Sender,
TCustomWinSocket *Socket)
{
Memo1->Lines->Add(Socket->ReceiveText()) ;
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------

Блин выдает error: list index out of bounds

Где именно я накосячил?

Ссылка на комментарий

D3V3L0p3R

ошибка говорит: "индекс ушел за пределы массива", подозреваю это о переполнении в сокетах.

Но, так как я сам лабу про чатик не сделал, могу ошибаться.

и это не паскаль, это си., хотя не суть важно.

Ссылка на комментарий

Да тут и не ноль. Сделал карочь по человечески,т.е. заново.



#include
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)
{ if (Edit1->Text==""){ShowMessage("Enter your nickname"); return;}
ServerSocket1->Active = true ;
Button3->Enabled = true;
Button4->Enabled = true ;
Button1->Enabled = false ;
Memo1->Lines->Add("Server Created") ;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
Edit2->Text=ClientSocket1->Address;
ClientSocket1->Active = true ;
Button2->Enabled = false ;
Button4->Enabled = true ;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ServerSocket1ClientConnect(TObject *Sender,
TCustomWinSocket *Socket)
{
Memo1->Lines->Add("Client connected");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ClientSocket1Connect(TObject *Sender,
TCustomWinSocket *Socket)
{
Memo1->Lines->Add("Connected");
}

//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
int i;
if (ServerSocket1->Active==true)
{ for (i=0;i<(ServerSocket1->Socket->ActiveConnections-1);i++)
{ServerSocket1->Socket->Connections[i]->SendText(Edit1->Text+"::"+Edit3->Text); } }
else
{ ClientSocket1->Socket->SendText(Edit1->Text+"::"+Edit3->Text);}
Memo1->Lines->Add(Edit1->Text+"::"+ Edit3->Text) ;
Edit3->Text="";
}

//---------------------------------------------------------------------------
void __fastcall TForm1::ServerSocket1ClientRead(TObject *Sender,
TCustomWinSocket *Socket)
{
Memo1->Lines->Add(Socket->ReceiveText()) ;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ClientSocket1Read(TObject *Sender,
TCustomWinSocket *Socket)
{
Memo1->Lines->Add(Socket->ReceiveText()) ;
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------

Ссылка на комментарий

D3V3L0p3R, мде... в том то и дело... Я как раз и говорил что не единица должна быть. Счет начинается с 0, а не с 1. Тебе ошибку и выдавало на то, что обращается к не существующему элементу.

Ссылка на комментарий
PapiruS

что-то типа того(синтаксис паскаля не очень помню):


function dec_cnt(t:integer):integer;
var i:integer;
begin
i=1;
while (t>=10) do
begin
t:=t div 10;
inc(i);
end
result:=i;
end;

function n_dec(t,i:integer):integer;
var
j:integer;
begin
j=dec_cnt(t)+1-i;
while (j>=0)
begin
t:=t div 10;
dec(j);
end;
result:=t mod 10;
end;

var
i,k:integer;
begin
readln(k);
i=1;
while (k>dec_cnt(i)) do
begin
k:=k-dec_cnt(i);
inc(i);
end;

writeln("Result = ",n_dec(i,k));

ps. Написал для теста на перле и попытался перевести в паскаль, сорри если что-то не так. на перле:


use strict;

sub dec_cnt{
my $t=shift;
my $i=1;
while ($t>=10)
{
$t/=10;
$i++;
}
return $i;
}

sub n_dec
{
my $t=shift;
my $i=shift;
my $j=dec_cnt($t)+1-$i;
while (--$j)
{ $t/=10;}
return $t%10;
}

my $k=<>;
my $i=1;
while ($k>dec_cnt($i))
{
$k-=dec_cnt($i);
$i++;
}
print "Result=".n_dec($i,$k);

можешь без процедур и функций сделать?

Добавлено спустя 2 минуты 20 секунд:

Lakers

помнишь ты решал задачу

uses crt;

var x,m1,m2:integer;

begin

clrscr;

read(x);

m1:=x;

m2:=x;

while x<>0 do

begin

if (xm1) then m2:=x;

if (x

begin

m2:=m1;

m1:=x;

end;

read(x);

end;

writeln('MIN1: ',m1);

writeln('MIN2: ',m2);

readkey;

end.

когда вводишь последовательность 1 2 0 он выдает типа: Min1=1; min2=1

как исправить?

Ссылка на комментарий

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

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



Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...