Помощь - Поиск - Пользователи - Календарь
Полная версия: помогите пожалуйста решить задачу
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
nuts43
Здравствуйте уважаемые форумчане! помогите пожалуйста решить задачу,я совсем не понимаю ее,так же как и мой друг,который в паскале более-менее разбирается.поиском пользовался,но конкретно такого не нашел.будьте добры помогите сделать, а то я совсем уже отчаялся..

Дан вектор x[8],состоящий из нулей и единиц.представить это число в десятичной системе исчисления,учитывая что x[1] соответствует старшему разряду..??? unsure.gif заранее спасибо за помощь!!
Client
Т.е. если дан массив 1 1 1 1 1 1 1 1,то надо чтоб вывело 255?
nuts43
Цитата(Client @ 24.12.2007 19:51) *

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


честно говоря я вообще не очень разбираюсь в системиах исчисления.но видимо именно так как вы сказали, Client
compiler
я думаю, должно быть как то так...
Код
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
compiler а ты ее проверил?? Что-то не верится, что при 00000010 будет 64 (здесь считает как 01000000)mad.gif
Должно быть наоборот, ведь мы записываем число слева-направо
compiler
Цитата(Client @ 24.12.2007 19:36) *
ведь мы записываем число слева-направо
Я незнаю как вы записываете. В задании про это ничего не сказанно, в условии указан только способ хранения. Мне удобно записывать так(обрати внимание на моё примечание).

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

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.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.