LINUX.ORG.RU

Ночь... Учёба...


1

0

Вот так вот я устроился .... Вобщем удобно как мне кажется .... Спать почему-то не хочется, так что пишу лабы по программированию.

PS За паскаль прошу не ругать, это не я виноват, на первом курсе только на нём разрешают лабы сдавать :)

>>> Просмотр (1280x1024, 303 Kb)

На фоне предыдущего скриншота смотрится очень даже.. да и вообще мне такие скриншоты близки, вообщем зачет!

php-coder ★★★★★
()
Ответ на: комментарий от anonymous

За скрин, за паскаль и за задачки по нему - зачет!

anonymous
()

шрифт - terminus bold редактор - joe

DavidKlassen
() автор топика

В целом понравилось. За слаку респект. Только вот панелька снизу как-то оффтопична...

anonymous
()
Ответ на: комментарий от anonymous

>В целом понравилось. За слаку респект. Только вот панелька снизу как-то оффтопична...

Дома с отверстиями в стенах оффтопичны

Автор, поделишься сорсом? Меня такое заставят писать через пару недель =\

stlwrt тяфкалко gmail.com

Stalwart ★★★
()
Ответ на: комментарий от Stalwart

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

anonymous
()
Ответ на: комментарий от Stalwart

> Автор, поделишься сорсом? Меня такое заставят писать через пару недель

Халявщик. Че там писать-то?

grob ★★★★★
()

Классный скрин! Спокойные нераздражающие тона, читабельные шрифты, ничего лишнего на столе. И код тоже весьма аккуратный. Вобщем - респект!

svyatogor ★★★★★
()
Ответ на: комментарий от anonymous

Автор, респект! и зачет в одном лице =)

сразу так ностальгией повеяло.. А вроде так недавно вот тоже сидел и кропал эти if IOResult <> 1 then ... ... ... =)

удачи! Кстати, стиль программирования (вернее, структуризация) отличная!

toreo
()
Ответ на: комментарий от anonymous

> Похоже на Jed или Emacs

имхо это джо (joe)

uj2 ★★★
()
Ответ на: комментарий от anonymous

>Похоже виндузерная чумка под называнием фф гномов бьёт на повал не хуже фввмшиков

это не гном :))))))

DavidKlassen
() автор топика
Ответ на: комментарий от Fangorn

> Может имел ввиду if IOrezult <> 0 ? :)

угу.. =) Склероз идет по мозгам семимильными шагами ^_^

toreo
()
Ответ на: комментарий от valeri_ufo

Очень неплохо :)
Эх... а мне хоть и на любом языке программить но зато такую шнягу...
распаралеливание задач по графу и на 2 процессорах(лучше на n) :(
Ещё и с графикой для демонстрации.

stalkerg ★★★★★
()

Симпатично. Только нафиг тебе такой огромный свап?

smartly ★★★
()

-if (ioresult=0) and (val<=max) and (val>=min) then
- p_read := true
-else
- p_read := false
+p_read:=(IOResult=0) and (val<=max) and (val>=min)
....
-if p_read(big, 0, base - 1) = true then
+if p_read(big, 0, base - 1) then

Ещё куча несуразностей... так что лаба
(при условии, что программа работает) максимум на "4-"...
Потому как это не паскаль у вас, а бэйсик (по стилю т.н. программирования) :(

Led ★★★☆☆
()

Не круто ;-) Числа можно в виде строковых значений хранить, и в виде строк/символов с нимим работать, тогда никакого ограничения на longint не будет. Эх я когда то почти то же самое писал. Но для машины Тьюринга.

anonymous
()
Ответ на: комментарий от Led

спасибо, исправлю ..... :)

кстати на си я бы скорее всего так и написал, а с паскалем я стал осторожнее после того как он мне if ioresult then ... не откомпилировал )

DavidKlassen
() автор топика
Ответ на: комментарий от DavidKlassen

>я стал осторожнее после того как он мне if ioresult then ... не откомпилировал )

Естественно... IOResult - Integer, а if'у нужен Boolean

if Boolean(IOResult) then

откомпилирует:)

Led ★★★☆☆
()
Ответ на: комментарий от DavidKlassen

>кстати где ещё несуразнсоти ? подскажи, я исправлю )

function calc_num "коряво" написана... даже не знаю что исправить - переделывать нужно:)

Led ★★★☆☆
()
Ответ на: комментарий от DavidKlassen

вобщем так переписал но ещё не проверил ....

function calc_num(var val : longint; base : integer) : boolean; var dig : integer; begin val := 0; calc_num := false; repeat if (not p_read(dig, 0, base - 1)) or (val > (MAXLONGINT - dig)/base) then exit else val := val * base + dig; until eoln; calc_num := true; end;

DavidKlassen
() автор топика
Ответ на: комментарий от DavidKlassen

блин ........ (



function calc_num(var val : longint; base : integer) : boolean;
var
dig : integer;
begin
val := 0;
calc_num := false;
repeat
if (not p_read(dig, 0, base - 1)) or (val > (MAXLONGINT - dig)/base) then
exit
else
val := val * base + dig;
until eoln;
calc_num := true;
end;

DavidKlassen
() автор топика
Ответ на: комментарий от DavidKlassen

чуть получше:)

но:

1) зачем значение возвращать в var val, если лучше его вернуть как результат функции? (если нужно возвращать ошибку - -1)

2) во втором условии получается число с плавающей точкой (при делении), лучше заменить условие на целочисленную арифметику

Led ★★★☆☆
()
Ответ на: комментарий от Led

>1) зачем значение возвращать в var val, если лучше его вернуть как результат функции? (если нужно возвращать ошибку - -1)

я сейчас весь сорс выложу , посмотришь

>2) во втором условии получается число с плавающей точкой (при делении), лучше заменить условие на целочисленную арифметику

а какой смысл ? и как это сделать , округлить до ближайшего целого что-ли ?

DavidKlassen
() автор топика
Ответ на: комментарий от DavidKlassen

program lab_2;

uses
    crt;
    
var
    chk : char;
    P, Q : integer;
    num : longint;
    
function p_read(var val : integer; min, max : integer) : boolean;
begin
    {$I-} read(val); {$I+}
    p_read := (ioresult = 0) and (val <= max) and (val >= min);
end;

function calc_num(var val : longint; base : integer) : boolean;
var
    dig : integer;
begin
    val := 0;
    calc_num := false;
    repeat
        if (not p_read(dig, 0, base - 1)) or (val > (MAXLONGINT - dig)/base) then
        	exit
        else
            val := val * base + dig;
    until eoln;
    calc_num := true;
end;

procedure output(val : longint; base : integer);
var
    stack : array[1..31] of integer;
    ptr, i : byte;
begin
    writeln('Number Q-based scale of notation:');
    ptr := 1;
    repeat
    	stack[ptr] := val mod base;
        val := val div base;
        inc(ptr);
    until val = 0;
	for i := ptr - 1 downto 1 do
        write(stack[i], ' ');
end;

begin
    repeat
        repeat
            write('Enter P [2..10000]:  ');
        until p_read(P, 2, 10000) = true;
        repeat
            writeln('Enter the array of digits from the range of [0..', P - 1, ']');
        until calc_num(num, P) = true;
        repeat
            write('Enter Q [2..10000]:  ');
        until p_read(Q, 2, 10000) = true;
        output(num, Q);
        writeln(#10#13'To exit press ''q''');
        chk := readkey;
    until (chk = 'q') or (chk = 'Q')
end.

DavidKlassen
() автор топика
Ответ на: комментарий от DavidKlassen

DavidKlassen, очень понравилась тема icewm. как ты придал такой вид? название темы или конфиг можно на crypt at hotbox dot ru. также интересно, что с иконками.

anonymous
()
Ответ на: комментарий от anonymous

>DavidKlassen, очень понравилась тема icewm. как ты придал такой вид? название темы или конфиг можно на crypt at hotbox dot ru. также интересно, что с иконками.

это openbox, тема для WM называется Clearlooks, где брал не помню так что выкладываю сюда : http://webfile.ru/552078 , внизу у меня fbpanel, иконки я взял обычные и обесцветил в kiconedit вот и всё :)

DavidKlassen
() автор топика
Ответ на: комментарий от DavidKlassen

program lab_2;

uses CRT;

const
MaxBase=10000;
MinBase=2;
BitsPerBite=8;

var
P: Integer;
MaxDigP: Integer;
num: LongInt;

function p_read(min, max: Integer): Integer;
var V:Integer;
begin
{$I-}
Read(V);
{$I+}
if IOResult<>0 then V:=-1
else if (V>max) or (V<min) then
    begin
    WriteLn('Error number ', V, ', must be in ', min, '..', max, ' range!');
    V:=-2;
    end;
p_read:=V;
end;

function GetBase(Const S:String): Integer;
var B:Integer;
begin
repeat
    Write('Enter ', S, ' (', MinBase, '..', MaxBase, '):  ');
    B:=p_read(MinBase, MaxBase);
until B>=0;
GetBase:=B;
end;

function calc_num(base: Integer) : LongInt;
var
dig: Integer;
MaxVal: LongInt;
V: LongInt;
begin
MaxVal:=MaxLongInt div base;
V:=0;
repeat
    dig:=p_read(0, MaxDigP);
    if dig<0 then
        begin
        ReadLn;
        calc_num:=-1;
        exit;
        end;
    if V>MaxVal then
        begin
        WriteLn('Number P too long!');
        calc_num:=-2;
        exit;
        end
    else V:=V*base+dig;
until EOLn;
calc_num:=V;
end;

procedure output(V: LongInt; base: Integer);
var
stack: array [1..SizeOf(LongInt)*BitsPerBite] of Integer;
i: byte;
begin
WriteLn('Number Q-based scale of notation:');
i:=0;
repeat
    inc(i);
    stack[i]:=V mod base;
    V:=V div base;
until V=0;
for i:=i downto 1 do Write(stack[i], ' ');
WriteLn;
end;

begin
repeat
    P:=GetBase('P');
    MaxDigP:=Pred(P);
    repeat
        WriteLn('Enter the array of digits from the range of 0..', MaxDigP);
        num:=calc_num(P);
    until num>=0;
    output(num, GetBase('Q'));
    WriteLn('To exit press "q"');
until UpCase(ReadKey)='Q'
end.

Led ★★★☆☆
()
Ответ на: комментарий от Led

...хотя Integer, наверное, лучше заменить на Smallint

Led ★★★☆☆
()

Представил себе цифру '9999'. Порадовался.

MAPA3MATuK
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.