Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.90/48: Рейтинг темы: голосов - 48, средняя оценка - 4.90
0 / 0 / 0
Регистрация: 27.06.2013
Сообщений: 15
1

Составить функцию, которая определяет, сколько зерен попросил положить на N-ую клетку изобретатель шахмат

31.07.2013, 12:01. Показов 10015. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Составить функцию, которая определяет, сколько зерен попросил положить на N-ую клетку изобретатель шахмат (на 1-ую – 1 зерно, на 2-ую – 2 зерна, на 3-ю – 4 зерна, …)
Пример:
Введите номер клетки:
28
На 28-ой клетке 134217728 зерен.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.07.2013, 12:01
Ответы с готовыми решениями:

Написать функцию, которая определяет, сколько чисел в массиве A[n] отличны от последнего
Какой это язык ? Задание. Найти и исправить ошибки в коде Написать функцию, которая определяет,...

Составить программу которая определяет сколько времени в минутах потратит школьник
составить программу которая определяет сколько времени в минутах потратит школьник на дорогу из...

Составить программу, которая определяет, сколько картофеля собрала каждая бригада
В сборе картофеля принимают участие 3 бригады. Учет ведется с помощью ЭВМ. Составить программу,...

Составить программу, которая по введенному числу определяет, сколько в нем единиц
Составить программу, которая по введенному числу (от 1 до 99) определяет, сколько в нем единиц (5-...

8
Модератор
9871 / 5239 / 3306
Регистрация: 17.08.2012
Сообщений: 16,007
31.07.2013, 12:15 2
Формула известная... Если номер клетки n, то количество зёрен k=2n+1-1. только Вам это не поможет: в Pascal ABC ни один тип данных не вынесет вычислений числа k, начиная с 63 клетки. Нужно будет использовать длинную арифметику.
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
31.07.2013, 12:29 3
Вроде если 1,2,4,8... то
Если номер клетки n, то количество зёрен k=2n-1
1
Модератор
9871 / 5239 / 3306
Регистрация: 17.08.2012
Сообщений: 16,007
31.07.2013, 12:45 4
Puporev, да, не сообразил. Тогда можно извратиться через extended... anohin, вот так:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
program CBoard;
 
var k, p: extended;
    i, j: byte;
 
begin
  write('Enter cell number: ');
  readln(j);
  p := 1;
  k := 1;
  for i := 1 to j - 1 do
    begin
      p := p * 2;
      k := k + p;
    end;
  writeln('Quantity of grains: ', k:20:0);
  readln;
end.
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
31.07.2013, 12:48 5
Цитата Сообщение от Cyborg Drone Посмотреть сообщение
Тогда можно извратиться через extended
В Паскаль АВС нет этого типа...
0
Модератор
9871 / 5239 / 3306
Регистрация: 17.08.2012
Сообщений: 16,007
31.07.2013, 12:48 6
Цитата Сообщение от anohin Посмотреть сообщение
На 28-ой клетке 134217728
Нет, 268435455.
Цитата Сообщение от Puporev Посмотреть сообщение
Если номер клетки n, то количество зёрен k=2n-1
Нет. 2n-1.
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
31.07.2013, 12:51 7
1=2^0=1
2=2^1=2
3=2^2=4
..........
28=2^27=134217728
0
Модератор
9871 / 5239 / 3306
Регистрация: 17.08.2012
Сообщений: 16,007
31.07.2013, 12:58 8
Ой... Что это я? Вот так вот!
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
program CBoard;
 
var k: extended;
    i: byte;
 
begin
  write('Enter cell number: ');
  readln(i);
  k := exp(i*ln(2))-1;
  writeln('Quantity of grains: ', k:20:0);
  readln;
end.
Добавлено через 4 минуты
Puporev, ах, да... Не всего на доске, а на конкретной клетке... Тогда так правильно.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
program CBoard;
 
var k: extended;
    i: byte;
 
begin
  write('Enter cell number: ');
  readln(i);
  k := exp((i-1)*ln(2));
  writeln('Quantity of grains: ', k:20:0);
  readln;
end.
Добавлено через 1 минуту
Цитата Сообщение от Puporev Посмотреть сообщение
В Паскаль АВС нет этого типа...
Я читал, что extended есть... Тогда... Что остаётся, кроме длинной арифметики?
1
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
31.07.2013, 14:13 9
С длинной арифметикой. Алгоритм тот же что и здесь
https://www.cyberforum.ru/post633985.html
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
uses crt;
const max=20;
var a:array[1..max] of byte;//массив цифр
    n,i,j,r,aa,per:byte;
begin
repeat
write('Введите номер клетки от 1 до 64 n=');
read(n);
until n in [1..64];
for i:=1 to max do
a[i]:=0;  //обнулим массив
r:=1;//одна цифра
a[max]:=1;//последняя=1
for i:=1 to n-1 do //возводим 2 в степень n-1 раз
 begin
  per:=0; //перенос
  j:=max; //конец масива
  while (j>=max-r+1)do//пока есть цифры
   begin
    aa:=a[j]*2+per;//умножаем на 2 + перенос
    a[j]:=aa mod 10;//пишем последнюю цифру числа
    per:=aa div 10; //первуюв перенос
    if (per>0)and(j=max-r+1) then inc(r);//если есть перенос и последняя цифра,
                                          // увеличим массив
    dec(j); //к следующей цифре с конца
   end;
 end;
for i:=max-r+1 to max do//выводим полученное число
write(a[i]);
end.
Добавлено через 8 минут
Цитата Сообщение от Cyborg Drone Посмотреть сообщение
Я читал, что extended есть.
У меня точно нет, ни в АВС, ни в АВС.net
В Турбо Паскале есть, но его точность 19-20 знаков и для клетки 64 выводит последние цифры 810 вместо 808
2
31.07.2013, 14:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.07.2013, 14:13
Помогаю со студенческими работами здесь

Написать функцию, которая определяет, сколько раз в стеке встречается заданный символ
Написать функцию, которая определяет, сколько раз в стеке встречается заданный символ (СИМВОЛ...

Составить программу, которая определяет сколько фигур и какого вида находятся на доске
Ребят помогите пожалуйста, буду благодарен.(ООП) На шахматной доске расставлены фигуры. Составить...

Составить функцию, которая определяет наибольший общий делитель двух натуральных
Составить функцию, которая определяет наибольший общий делитель двух натуральных и привести пример...

Применить функцию getchar в программе, которая определяет, сколько раз содержится в строке заданное слово
Всем доброго вечернего времени суток! Хочу попросить вашей помощи. Данная программа определяет...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru