Дорогие пользователи! С 15 декабря Форум Дети закрыт для общения. Выражаем благодарность всем нашим пользователям, принимавшим участие в дискуссиях и горячих спорах. Редакция сосредоточится на выпуске увлекательных статей и новостей, которые вы сможете обсудить в комментариях. Не пропустите!

Снова HELP. Снова информатика

ПростоЯ
Всем добра, а не как у меня...
Снова я со своей информатикой.
2.  Найти сумму и произведение первых 20 натуральных чисел, которые оканчиваются на 12. Составить программу и блок-схему решения. Задачу решить тремя способами (тремя разными циклами).
Программа с постусловием не считает произведение... Сумму считает, а произведение нет. Понимаю, что ошибка в формуле произведения, но не могу ее найти...
Помогите
Program_12;
var
A,S,I,P: Integer;
begin
  A:=12;
  P:=1;
  S:=0;
  I:=1;
  repeat
    S:=S+A;
    P:=P*A;
    A:=A+100;
    I:=I+1;
  until I>20;
  writeln (S);
  Writeln (P);
end.
Тема закрытаТема скрыта
Комментарии
36
12
Болтун
Вроде все логично. А знаки проверяли? Может в них дело?
ПростоЯ, 2 ребенкаВ ответ на Болтун
Болтун
Вроде все логично. А знаки проверяли? Может в них дело?
Проверяли вроде все. Тоже не могу понять почему не считает.Уже сил моих математических нет никаких с этой информатикой(((.
Вот поэтому и решила спросить у умных людей...
Птичка-синичка
А в чём выражается, что не считает? Я в логике проблем не вижу. Единственно, в чём может быть загвоздка - это тип integet может "не тянуть" такие большие числа, как это произведение. Попробуйте заменить тип у переменной P на longint.
ПростоЯ, 2 ребенкаВ ответ на Птичка-синичка
Птичка-синичка
А в чём выражается, что не считает? Я в логике проблем не вижу. Единственно, в чём может быть загвоздка - это тип integet может "не тянуть" такие большие числа, как это произведение. Попробуйте заменить тип у переменной P на longint.
Сумму считает, а произведение-"0"
ПростоЯ, 2 ребенкаВ ответ на Птичка-синичка
Птичка-синичка
А в чём выражается, что не считает? Я в логике проблем не вижу. Единственно, в чём может быть загвоздка - это тип integet может "не тянуть" такие большие числа, как это произведение. Попробуйте заменить тип у переменной P на longint.
Сейчас попробуем.
ПростоЯ, 2 ребенкаВ ответ на Птичка-синичка
Птичка-синичка
А в чём выражается, что не считает? Я в логике проблем не вижу. Единственно, в чём может быть загвоздка - это тип integet может "не тянуть" такие большие числа, как это произведение. Попробуйте заменить тип у переменной P на longint.
Попробовали заменить-не считает..
Болтун
Попробуйте в цикл внести writeln(P) и посмотреть как умножается в каждой интерации. Если нормально, то дело вне цикла.
ПростоЯ, 2 ребенкаВ ответ на Болтун
Болтун
Попробуйте в цикл внести writeln(P) и посмотреть как умножается в каждой интерации. Если нормально, то дело вне цикла.
Попробовала-Считает но совсем неправильно. Там и положительные и отрицательные промежуточные вычисления.
БолтунВ ответ на ПростоЯ
ПростоЯ
Попробовала-Считает но совсем неправильно. Там и положительные и отрицательные промежуточные вычисления.
История переписки2
Попробуйте тогда не P, а J например назвать
Птичка-синичка
Я протестировала Вашу программу. Там действительно переполнение. Ни один целочисленный тип столько знаков не держит. Попробуйте на первых четырех числах. Больше в интежер не влезет.
ПростоЯ, 2 ребенкаВ ответ на Птичка-синичка
Птичка-синичка
Я протестировала Вашу программу. Там действительно переполнение. Ни один целочисленный тип столько знаков не держит. Попробуйте на первых четырех числах. Больше в интежер не влезет.
ЗАРАБОТАЛО!!!))).
Птичка-синичкаВ ответ на ПростоЯ
ПростоЯ
ЗАРАБОТАЛО!!!))).
История переписки2
Вам удалось все 20 перемножить ?
ПростоЯ, 2 ребенкаВ ответ на Птичка-синичка
Птичка-синичка
Вам удалось все 20 перемножить ?
История переписки3
Нет только если I>4 работает, а с 5 еже не работает.Пусть сын сам дальше разбирается с учителем. Я считаю, что скорее всего задание составлено не корректно.
БолтунВ ответ на ПростоЯ
ПростоЯ
Нет только если I>4 работает, а с 5 еже не работает.Пусть сын сам дальше разбирается с учителем. Я считаю, что скорее всего задание составлено не корректно.
История переписки4
А какой у вас класс?
ПростоЯ, 2 ребенкаВ ответ на Болтун
Болтун
А какой у вас класс?
История переписки5
5
((
БолтунВ ответ на ПростоЯ
ПростоЯ
5
((
История переписки6
Учитель конечно переборщила с числами :D, я внизу предложила решение, но не уверена что подойдёт под возраст и класс
БолтунВ ответ на ПростоЯ
ПростоЯ
ЗАРАБОТАЛО!!!))).
История переписки2
Но задание может быть не выполнено(
Попробуйте Р:=Р×(А/100) а во writln ("P=(100^20)×", P)
БолтунВ ответ на Болтун
Болтун
Но задание может быть не выполнено(
Попробуйте Р:=Р×(А/100) а во writln ("P=(100^20)×", P)
История переписки3
Лучше даже writeln("P/(100^20)=", P)
БолтунВ ответ на Болтун
Болтун
Лучше даже writeln("P/(100^20)=", P)
История переписки4
При 100 тоже число все еще огромное, 1000 берите
БолтунВ ответ на Болтун
Болтун
При 100 тоже число все еще огромное, 1000 берите
История переписки5
И придется integer заменить на другой тип данных. Float вроде. В произведение будет нечто 0,000003597
ПростоЯ, 2 ребенкаВ ответ на Болтун
Болтун
И придется integer заменить на другой тип данных. Float вроде. В произведение будет нечто 0,000003597
История переписки6
Они даже не проходили такой тип данных.
ПростоЯ, 2 ребенкаВ ответ на Болтун
Болтун
Лучше даже writeln("P/(100^20)=", P)
История переписки4
При делении получается другой тип переменной.. Тогда наверное надо дважды задавать формулу числа с разными значениями переменных...
БолтунВ ответ на ПростоЯ
ПростоЯ
При делении получается другой тип переменной.. Тогда наверное надо дважды задавать формулу числа с разными значениями переменных...
История переписки5
Пришлось лезть в интернет. Вам подходит double. Заменить integer. Делить ни на что не понадобиться и можно спокойно i=20
ПростоЯ, 2 ребенкаВ ответ на Болтун
Болтун
Пришлось лезть в интернет. Вам подходит double. Заменить integer. Делить ни на что не понадобиться и можно спокойно i=20
История переписки6
2.21035640114483E+56
Вот что получилось.
Спасибо вам за помощь. Только я не знаю, как сын будет объяснять откуда он взял double))).
ПростоЯ, 2 ребенкаВ ответ на Болтун
Болтун
Пришлось лезть в интернет. Вам подходит double. Заменить integer. Делить ни на что не понадобиться и можно спокойно i=20
История переписки6
Подскажите, что за таблица?. Как набирали запрос... Я в этом ничегошеньки не понимаю.... Тоже скачаю, думаю, что с нашими заданиями она нам пригодится..
12