Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ помогите пожалуйста решить задачу

Автор: nuts43 24.12.2007 22:26

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

Дан вектор x[8],состоящий из нулей и единиц.представить это число в десятичной системе исчисления,учитывая что x[1] соответствует старшему разряду..??? unsure.gif заранее спасибо за помощь!!

Автор: Client 24.12.2007 23:51

Т.е. если дан массив 1 1 1 1 1 1 1 1,то надо чтоб вывело 255?

Автор: nuts43 24.12.2007 23:53

Цитата(Client @ 24.12.2007 19:51) *

Т.е. если дан массив 1 1 1 1 1 1 1 1,то надо чтоб вывело 255?


честно говоря я вообще не очень разбираюсь в системиах исчисления.но видимо именно так как вы сказали, Client

Автор: compiler 24.12.2007 23:59

я думаю, должно быть как то так...

Код
function pow(const p:integer):integer;
        //возвращает степень двойки
var d,i:integer;
begin
        if p=0 then d:=1 else  begin
                d:=1; i:=1;
                while (i <= p) do begin
                        d:=d*2; inc(i);
                end;
        end;
        pow:=d;
end;
var
        b :array[1..8] of integer;
        i, int:integer;
begin
        for i:=1 to 8 do
                readln(b[i]);
        int:=0;
        for i:=7 downto 0 do
                int:=int+ b[(i+1)] * pow(i);
        writeln(int);
end.

+
обрати вниманние на ввод данных, ведь в условии не указанно это и поэтому может ты хотел реализовать по другому...

Автор: Client 25.12.2007 0:36

compiler а ты ее проверил?? Что-то не верится, что при 00000010 будет 64 (здесь считает как 01000000)mad.gif
Должно быть наоборот, ведь мы записываем число слева-направо

Автор: compiler 25.12.2007 1:30

Цитата(Client @ 24.12.2007 19:36) *
ведь мы записываем число слева-направо
Я незнаю как вы записываете. В задании про это ничего не сказанно, в условии указан только способ хранения. Мне удобно записывать так(обрати внимание на моё примечание).

замечание считаю не коректным.

Автор: Client 25.12.2007 1:36

Цитата
замечание считаю не коректным.
Это мое мнение,посто, что так более удобно ввести массив (и это вовсе не замечание)
Цитата
в условии не указанно
да, это так

Автор: nuts43 25.12.2007 4:24

огромное спасибо,заработало!!! вот полный код:

program Gushin02;
uses crt;
var
b :array[1..8] of integer;
i, int:integer;
function pow(const p:integer):integer;
var d,i:integer;
begin
if p=0 then d:=1 else begin
d:=1; i:=1;
while (i <= p) do begin
d:=d*2; inc(i);
end;
end;
pow:=d;
end;

begin clrscr;
writeln ('vvedite vector x[8]');
for i:=8 downto 1 do
read(b[i]);
int:=0;
for i:=7 downto 0 do
int:=int+ b[(i+1)] * pow(i);
writeln(int);
readln;
readkey;

end.