IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> помогите пожалуйста решить задачу, задача на системы исчисления
nuts43
сообщение 24.12.2007 18:26
Сообщение #1





Группа: Пользователи
Сообщений: 3
Пол: Мужской

Репутация: -  0  +


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

Дан вектор x[8],состоящий из нулей и единиц.представить это число в десятичной системе исчисления,учитывая что x[1] соответствует старшему разряду..??? unsure.gif заранее спасибо за помощь!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 7)
Client
сообщение 24.12.2007 19:51
Сообщение #2


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


Т.е. если дан массив 1 1 1 1 1 1 1 1,то надо чтоб вывело 255?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
nuts43
сообщение 24.12.2007 19:53
Сообщение #3





Группа: Пользователи
Сообщений: 3
Пол: Мужской

Репутация: -  0  +


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

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


честно говоря я вообще не очень разбираюсь в системиах исчисления.но видимо именно так как вы сказали, Client
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
compiler
сообщение 24.12.2007 19:59
Сообщение #4


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


я думаю, должно быть как то так...
Код
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.

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

Сообщение отредактировано: compiler - 24.12.2007 20:25


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Client
сообщение 24.12.2007 20:36
Сообщение #5


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


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

Сообщение отредактировано: Client - 24.12.2007 20:38
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
compiler
сообщение 24.12.2007 21:30
Сообщение #6


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


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

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


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Client
сообщение 24.12.2007 21:36
Сообщение #7


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


Цитата
замечание считаю не коректным.
Это мое мнение,посто, что так более удобно ввести массив (и это вовсе не замечание)
Цитата
в условии не указанно
да, это так
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
nuts43
сообщение 25.12.2007 0:24
Сообщение #8





Группа: Пользователи
Сообщений: 3
Пол: Мужской

Репутация: -  0  +


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

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.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 6:31
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"