nyuraborova89
?>

В результате выполнения программы напечатано число 15. Какое наибольшее значение может иметь переменная S после выполнения программы? Пользователь программы вводит только натуральные числа. Var k, m, x, j, S, N: integer; Dat: array[1..100] of integer; Begin N:= 10; m := 0; S := 0; for k := 1 to N do readln(Dat[k]); for k := 1 to N do if Dat[k]>m then begin m := Dat[k]; x := 0; for j:=1 to Dat[k] do if Dat[k] mod j = 0 then x := x + 1; if x=2 then S := Dat[k]; end; writeln(m) End.

Информатика

Ответы

Aleksandr556

результа

Объяснение:

d2002
Смотри. Всё просто.

Тебе из 8 нужно перевести в двоичную, при этом у тебя дробное число. То есть у тебя есть целая часть (247) и дробная часть (16).

Нужно переводить по очереди, вначале целую часть, потом дробную, при этом при переводе целой - нужно делить, при переводе дробной - умножать, сейчас покажу алгоритм.

Вначале целую часть:
Мы делим на 2, потом пишем результат деления, а в скобочках пишем остаток.
247/2=123(1)
123/2=61(1)
61/2=30(1)
30/2=15(0)
15/2=7(1)
7/2=3(1)
3/2=1(1)

Теперь нам нужно записать то, что получилось, записывается снизу-вверх, начиная от той единички, что у нас получилась при делении 3 на 2.

Итого: 11110111 - это твоя целая часть.

Теперь дробная часть (16), мы должны приписать ноль, чтобы у нас получилось 0,16 (ведь это дробная часть). Теперь умножаем на 2 пока не получится РОВНО единица, при этом записываем в ответ 0, если у нас целая часть получается ноль и 1, если целая часть получается 1.

Сейчас поймёшь:
0,16 * 2 = 0,32 - видишь, получился ноль, поэтому мы его в ответ пишем и продолжаем умножать на 2 часть после ноля, пока не получится ровно 1.
0,32 * 2 = 0,64 - опять ноль получился, в ответ ноль записываем еще.
0,64 * 2 = 1,28 - тут уже у нас единица получилась, в ответ 1, отбрасываем 1 и опять множим на 2, пока не будет ровно единица в ответе.
0,28 * 2 = 0,56 - в ответ 0
0,56 * 2 = 1,12 - в ответ 1
0,12 * 2 = 0,24 - в ответ 0
0,24 * 2 = 0,48 - в ответ 0
0,48 * 2 = 0,96 - в ответ 0
0,96*2 = 1,92 - в ответ 1
0,92*2 = 1,84 - в ответ 1

У тебя тут такое число, в котором ты бесконечно будешь умножать и у тебя не получится никогда ровно 1(либо получится, но очень не скоро), поэтому просто спроси у учителя, до скольки знаков тебе считать. Я обычно до 5 считал всегда, но тут я тебе показал аж до 10.

Дробная часть получилась такой - 0010100011.

Теперь записываешь целую часть, что получил ранее и дробную, что вычислил сейчас. У тебя получается:

11110111,0010100011

ответ: 11110111,0010100011
elenaperemena8

1.алфавит - это множество символов, используемых при записи текста

2.Полное количество символов в алфавите называется мощностью (размером) алфавита.

3.Информационный объем текста равен произведению количества символов в тексте на вес одного символа I=K*i

4.задача

запишем условие N=64, K=100, I-?

решение: из формулы мощности алфавита найдем вес одного символа

N=2^i, 64=2^i, 2^6=2^i, i=6 бит

вычислим информационный объем: I=100*6=600 бит

5.байт,килобайт,мегабайт и гигабайт - это единицы измерения информации

6.задача

запишем условие: N=256, I=3.5 Кб, K=?

решение: вычислим вес одного символа

256=2^i, i=8 бит

выразим информационный объем в битах

I=3,5Кб=3,5*1024*8=28672 бита

посчитаем количество символов К=I/i=28672/8=3584 символа

7.задача

запишем условие: К1=К2, N1=32, N2=64, I1/I2=?

решение: вычислим вес одного символа первого алфавита

32=2^i, i1=5 бита

вычислим вес одного символа второго алфавита

64=2^i, i1=6 бит

запишем формулу для нахождения информационного объема первого алфавита I1=K1*i1

запишем формулу для нахождения информационного объема второго алфавита I2=K2*i2

поскольку количество символов в текстах одинаковое, то можно записать отношение

I1/I2=i1/i2=5/6              это и есть ответ


Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

В результате выполнения программы напечатано число 15. Какое наибольшее значение может иметь переменная S после выполнения программы? Пользователь программы вводит только натуральные числа. Var k, m, x, j, S, N: integer; Dat: array[1..100] of integer; Begin N:= 10; m := 0; S := 0; for k := 1 to N do readln(Dat[k]); for k := 1 to N do if Dat[k]>m then begin m := Dat[k]; x := 0; for j:=1 to Dat[k] do if Dat[k] mod j = 0 then x := x + 1; if x=2 then S := Dat[k]; end; writeln(m) End.
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

Герасимова107
Чунихина1586
andre6807
yusovd291
marinavg63607
sigidinv
nanasergevn
vedaikin
orbbsvsupply
Владимирович111
kapriz1999
Анатольевич1707
neblondinka19
Galina-3639220565
olg14855767