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

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

Автор: akaGM
Дата сообщения: 07.11.2006 21:03
rain87
ну так, в общем-то...
но, как меня учили, надо с самого начала делать хорошо, плохо -- оно само получится...

Foster18
где только такие задачи раздают...
Автор: Foster18
Дата сообщения: 07.11.2006 22:37
В ИТМО на кафедре Инженерной и Компьютерной мать её Графики.
Автор: Anjin_Kazawa
Дата сообщения: 08.11.2006 09:09
Foster18
Держи. Задача решается рекурсией, не самый красивый вариант, но лучше делать нет времени.
[more]

Код:
Uses Crt;

(*функция выводит сообщение и ждёт ввод*)
(*проверка корректности ввода*)
Function EnterAndMes( S: String ): Integer;
var R : Integer;
Err: Boolean;
Begin
Repeat
Err := False;
Write( S );
{$I-}
ReadLn( R );
{$I+}
if IOResult <> 0 then (*если ввели не целое число*)
Begin
Err := True; (*возникает ошибка преобразования*)
WriteLn( 'Bag input value. Try again.' );
end;
if R = 0 then Halt; (*ввели ноль - выход*)
Until not Err;
EnterAndMes := R;
end;

(*основная процедура рекурсии с подсчётом*)
Procedure Recurse( EndYear : Integer; (*конечная дата*)
var CurYear : Integer; (*текущая дата*)
var YearsCount: Integer (*всего высокосных лет*) );
Begin
if CurYear > EndYear then Exit; (*достигнут предел выход*)
if ( CurYear mod 4 ) = 0 then Inc( YearsCount ); (*высокосный год*)
Inc( CurYear ); (*текущий год*)
Recurse( EndYear, CurYear, YearsCount ); (*вызод процедуры*)
end;

var YearsCount, StartYear, EndYear, CurYear: Integer; (*локальные переменные*)
Begin
ClrScr;
StartYear := EnterAndMes( 'Start year (yyyy) (type 0 for exit) => ' );
EndYear := EnterAndMes( 'End year (yyyy) (type 0 for exit) => ' );
if StartYear > EndYear then Exit;
CurYear := StartYear;
YearsCount := 0;
Recurse( EndYear, CurYear, YearsCount );
(*результат*)
WriteLn( YearsCount );
end.
Автор: V ekto R
Дата сообщения: 08.11.2006 13:06
Добрый день. Обращаюсь к вам с ерундовой задачей, но застрял я что-то с ней конкретно...Графика в Паскале... Нужно построить изображение светофора по центру экрана, чтоб его длина и ширина задавались пользователем. Изображение должно быть залитым. В данный момент у меня проблема с тем, что изображение то я построил, но при вводе различных значений длины и ширины получаются разные изображения( к примеру диод сфетофора вылезает за его пределы или что то в этом роде). Пожалуйста помогите именно с этой частью - построить точное изображение по центру. Пожалуйста!!!
Автор: akaGM
Дата сообщения: 08.11.2006 13:11
V ekto R
черновик давай...
Автор: V ekto R
Дата сообщения: 08.11.2006 16:06
Вот кусок программы, m,n - ШИРИНА И ВЫСОТА СВЕТОФОРА.
.....
VAR gd,gm: integer
m,n: real;
......

INITGRAPH(gd,gm,'');
SETFILLSTYLE(1,DarkGray);
BAR(round(320-m/2), round(120+n/10), round(320+m/2), round (360-n/10));
SETFILLSTYLE(1,yellow);
SETCOLOR(yellow);
FILLELLIPSE(320,240,round(n/8),round(n/8));
SETFILLSTYLE(1,red);
SETCOLOR(red);
FILLELLIPSE(320, round(240-n/3), round(n/8), round(n/8));
SETFILLSTYLE(1,green);
SETCOLOR(green);
FILLELLIPSE(320, round(240+n/3), round(n/8), round(n/8));
READLN;
CLOSEGRAPH;
END.
Автор: akaGM
Дата сообщения: 08.11.2006 16:39


Цитата:

m,n - ШИРИНА И ВЫСОТА СВЕТОФОРА.
VAR m,n: real;

в чём, в сантиметрах, в метрах, в ангстремах?
от -1.е-16 до +1.е+16 годится?
почему не в пикселях?
Автор: akaGM
Дата сообщения: 08.11.2006 18:43
на...
писал на Дельфи, ВР под рукой нет...
переменных много для понятности...
сам добей...
[more=типа светофор]
uses Graph;
var
gd, gm: integer;
w, h: integer;
x0, y0, x1, y1, x2, y2: integer;
xellipse, yellipse, radius: integer; {координаты и радиус кругов}
dx, dy: integer;
{ getmaxx, getmaxy: integer;}
begin
w := 300; {ширина в пикселях}
h := 600; {высота}

dx := 10; {отступы в прямоугольнике по х и по у}
dy := 10;
initgraph(gd, gm, '');
{ getmaxx := clientwidth;}
{ getmaxy := clientheight}
x0 := getmaxx div 2;
y0 := getmaxy div 2;
x1 := x0 - w div 2;
y1 := y0 - h div 2;
x2 := x1 + w;
y2 := y1 + h;
xellipse := x0;
yellipse := y1 + dy;
if (w < h) then
radius := w div 3 - 2*dx
else
radius := h div 3 - 5*dy;

{проверка}
if (radius <=0) then begin
closegraph;
writeln('дурацкий у тебя светофор...');
readln;
halt;
end;

{ with Canvas do begin}
setfillstyle(1, darkgray);
bar(x1, y1, x2, y2);
{red}
inc(yellipse, 2*radius + dy);
setfillstyle(1, red);
setcolor(red);
fillellipse(xellipse, yellipse, radius, radius);
{yellow}
inc(yellipse, 2*radius + dy);
setfillstyle(1, yellow);
setcolor(yellow);
fillellipse(xellipse, yellipse, radius, radius);
{green}
inc(yellipse, 2*radius + dy);
setfillstyle(1, green);
setcolor(green);
fillellipse(xellipse, yellipse, radius, radius);
readln;
closegraph;
end.

[/more]
Автор: V ekto R
Дата сообщения: 08.11.2006 20:15
m,n - ширина и высота которые пользователь задает каждый раз при запуске программы. Ссори что сразу не написал...вот как раз с этой частью проблема. при заданных значениях - просто, а так...
Автор: akaGM
Дата сообщения: 08.11.2006 20:29
V ekto R
как?!
ты код-то видел?


Код:
write('задайте ширину вашего долбанного светофора (в пикселях) =>');
readln(m);
write('задайте высоту вашего долбанного светофора (в пикселях) =>');
readln(n);

initgraph(...)
...
Автор: rain87
Дата сообщения: 08.11.2006 23:38
akaGM

Цитата:
ну так, в общем-то... но, как меня учили, надо с самого начала делать хорошо, плохо -- оно само получится...
дык.. кто ж спорит. хорошо - это когда надёжно. по поводу массива нулевой длины - ограничений то никаких не было, так что всё законно. имхо

по поводу светофора прикололо
Автор: akaGM
Дата сообщения: 09.11.2006 14:51
rain87

Цитата:
так что всё законно

законно, законно, пусть сами разбираются...
вообще, надо завязывать народ развращать, за них всё делать...

теперь буду помогать тем, кто сам хоть что-то сделал, написал и просит помощи...


Цитата:
по поводу светофора прикололо

меня тоже, поэтому и помог...
наверняка интерфейс к гаи-экзаменам прикручивает...
гы
Автор: Flash7774
Дата сообщения: 09.11.2006 15:49
Помогите пожалуйста. Задача: дан вещественный массив размером 5х6. Упорядочить его строки по не убыванию суммы их элементов.
Посчитать сумму я вроде смог.
program massiv;
uses crt;
var l,k,i,j,m:integer;
s:integer;
c,s2:real;
A:Array [1..5,1..6] of real;
begin
clrscr;
writeln('Массив A');
for i:=1 to 5 do begin writeln;
for j:=1 to 6 do begin;
A[i,j]:=random(100);
write(' ',a[i,j]:3:2);
end;
end;
for k:=1 to 5 do begin
s2:=0;
For i:=1 to 5 do
For j:=1 to 6 do
if i=k then s2:=s2+a[i,j];
writeln;
writeln('Сумма элементов ',k, 'Строки',' ',s2:6:3);
end;

readln;
End.
А как упорядочить его строки по не убыванию суммы их элементов. Или я что-то делаю не так.
Автор: rain87
Дата сообщения: 09.11.2006 17:55
Flash7774
[more]
Код: program massiv;
uses crt;
var l,k,i,j,m:integer;
s:integer;
c,s2:real;
A:Array [1..5,1..6] of real;
sums:array[1..5]of real;
begin
clrscr;
randomize;
writeln('Массив A');
for i:=1 to 5 do begin writeln;
for j:=1 to 6 do begin;
A[i,j]:=random(100);
write(' ',a[i,j]:3:2);
end;
end;
for k:=1 to 5 do begin
sums[k]:=0;
For j:=1 to 6 do sums[k]:=sums[k]+a[k,j];
writeln;
writeln('Сумма элементов ',k, ' Строки',' ',sums[k]:6:3);
end;
for i:=1 to 5 do
for j:=1 to 5-i do
if(sums[j]>sums[j+1])then
begin
c:=sums[j];
sums[j,h=100% height=1 src="1px.gif" alt="">
Flash7774
[more]
Код:

Страницы: 1234567891011121314

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


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