Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Студент


Сообщения: 445
Благодарности: 8

Профиль | Отправить PM | Цитировать


Apis.NET
Ну не знаю я Си, хотя было бы полезно. По этой самой причине привожу тексты программ на Паскале. В принципе понять, что делает программа нетрудно, тебе остаётся только перевести в код на Си.

1.
Код: Выделить весь код
var
 *side, i, j : byte;
 *s : string;
begin
 *readln(side);
 *for i := 0 to (side-1) do begin
 * *s := '*';
 * *for j := 1 to (side - i - 1) do s := ' ' + s;
 * *for j := 1 to i do s := s + '**';
 * *writeln(s);
 *end;
end.
2. Не знаю, что ты называешь перегрузкой функций, но такие функции на Паскале могут выглядеть так:

Код: Выделить весь код
{$N+}
const Kypc = 1; {Здесь нужно вместо 1 подставить курс доллара в гривнах}

Function Griven_to_dollar(Grivens : Double) : double;
begin
 *Griven_to_dollar := Grivens / Kypc;
end;

Function Dollar_to_griven(Dollars : Double) : double;
begin
 *Dollar_to_griven := Dollars * Kypc;
end;
3.
Код: Выделить весь код
var
 *l : longint;
 *res : longint;
 *code : integer;
begin
 *val(paramstr(1), l, code); {Это просто получение параметра в переменную L}
 *res := 0;
 *while l > 0 do begin
 * *res := res*10 + (l mod 10);
 * *l := l div 10;
 *end;
 *halt(res); { Тот же return (res) в си... }
End.
4.
Вариант 1:
Код: Выделить весь код
var
 *d, u : longint;
 *l : longint;
begin
 *write('From: ');
 *readln(d);
 *write('To: ');
 *readln(u);
 *for l := d to u do
 * *if (l mod 11) = 0 then writeln(l);
end.
Вариант 2(работает быстрее):
Код: Выделить весь код
var
 *d, u : longint;
 *l : longint;
begin
 *write('From: ');
 *readln(d);
 *write('To: ');
 *readln(u);
 *if (d >= 0) and ((d mod 11) = 0) then writeln(d);
 *l := (d div 11);
 *if L < 0 then l := l * 11 else l := (l + 1) * 11;
 *while l <= u do begin
 * *writeln(l);
 * *inc(l, 11);
 *end;
end.
5. Ну это извращение, там только реализация. Сам пиши.

6.
Вариант 1(сложность алгоритма - O(N*Log(N))):
Код: Выделить весь код
var
 *i, j : integer;
 *s : boolean;
 *simple : array[0..168] of integer; {в данном диапазоне именно 168 простых чисел}
begin
 *for i := 2 to 1000 do begin
 * *s := true;
 * *for j := 1 to simple[0] do if (i mod simple[j]) = 0 then begin
 * * *s := false;
 * * *break;
 * *end;
 * *if s then begin
 * * *inc(simple[0]);
 * * *simple[simple[0]] := i;
 * *end;
 *end;
 *for i := 1 to simple[0] do writeln(simple[i]);
end.
Вариант 2(сложность алгоритма - O(N*N), зато экономит память):
Код: Выделить весь код
var
 *i, j : integer;
 *s : boolean;
begin
 *for i := 2 to 1000 do begin
 * *s := true;
 * *for j := 2 to (i - 1) do if (i mod j) = 0 then begin
 * * *s := false;
 * * *break; {прервать цикл}
 * *end;
 * *if s then writeln(i);
 *end;
end.
Maxvell
Цитата:
Треугольник Паскаля?
Слышал такое словосочетание, но не знаешь, что это такое? -

Треугольник Паскаля это примерно следующее
* * *1
* * 1 1
* *1 2 1
*1 *3 3 1
1 4 *6 *4 1
1 5 10 10 5 1

Каждое число считается как сумма двух вышестоящих. Используется при вычислении количества сочетаний (например).
Ну и для других вещей -


(Отредактировал(а) noname00.pas - 12:40 - 8 Дек., 2001)

-------
*Origin: Lots of people talking, few of them - no... (2:5020/****.**)

Это сообщение посчитали полезным следующие участники:

Отправлено: 17:55, 08-12-2001 | #7