помогите пожалуйста решить задачу, задача на системы исчисления |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
помогите пожалуйста решить задачу, задача на системы исчисления |
nuts43 |
Сообщение
#1
|
Группа: Пользователи Сообщений: 3 Пол: Мужской Репутация: 0 |
Здравствуйте уважаемые форумчане! помогите пожалуйста решить задачу,я совсем не понимаю ее,так же как и мой друг,который в паскале более-менее разбирается.поиском пользовался,но конкретно такого не нашел.будьте добры помогите сделать, а то я совсем уже отчаялся..
Дан вектор x[8],состоящий из нулей и единиц.представить это число в десятичной системе исчисления,учитывая что x[1] соответствует старшему разряду..??? заранее спасибо за помощь!! |
Client |
Сообщение
#2
|
Профи Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: 20 |
Т.е. если дан массив 1 1 1 1 1 1 1 1,то надо чтоб вывело 255?
|
nuts43 |
Сообщение
#3
|
Группа: Пользователи Сообщений: 3 Пол: Мужской Репутация: 0 |
|
compiler |
Сообщение
#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 - -------------------- Спасибо!
Удачи! |
Client |
Сообщение
#5
|
Профи Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: 20 |
compiler а ты ее проверил?? Что-то не верится, что при 00000010 будет 64 (здесь считает как 01000000)
Должно быть наоборот, ведь мы записываем число слева-направо Сообщение отредактировано: Client - |
compiler |
Сообщение
#6
|
Человек Группа: Пользователи Сообщений: 1 050 Пол: Мужской Реальное имя: Станислав Репутация: 3 |
ведь мы записываем число слева-направо Я незнаю как вы записываете. В задании про это ничего не сказанно, в условии указан только способ хранения. Мне удобно записывать так(обрати внимание на моё примечание).замечание считаю не коректным. -------------------- Спасибо!
Удачи! |
Client |
Сообщение
#7
|
Профи Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: 20 |
Цитата замечание считаю не коректным. Это мое мнение,посто, что так более удобно ввести массив (и это вовсе не замечание)Цитата в условии не указанно да, это так |
nuts43 |
Сообщение
#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. |
Текстовая версия | 28.03.2024 17:45 |