• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о проекте, чтобы узнать больше. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Снова Паскаль

Регистрация
13 Май 2011
Сообщения
49
Реакции
0
Баллы
0
Снова Паскаль

Построить алгоритм, составить и отладить программу для нахождения произведения ряда:
с точностью до очередного члена ряда < 10^-4

Program romanuk_7_2;
uses crt;
var p:comp;
el:real;
z:integer;
begin
clrscr;
p:=1;
z:=3;
el:=0;
for z:=3 to 10000 do
begin
el:=1/z;
write('el= ',el,' ');
p:=p*el;
writeln(p,' =p');
z:=z+2;
end;
writeln('p= ',p);
readln;
end.

почему то он мое произведение к нулю приравнивает,попробовал изменить тип данных у переменной "p" с "real" на "comp"( думал тчо ему не хватает, но снова вышел ноль.....вопрос:почему?
 
Построить алгоритм, составить и отладить программу для нахождения произведения ряда: с точностью до очередного члена ряда < 10^-4
Дайте, пожалуйста, ТОЧНУЮ и ПОЛНУЮ формулировку задания. Какой ряд? Откуда и почему там тройки? В общем, "вокруг да около" не устраивает.
 
Дайте, пожалуйста, ТОЧНУЮ и ПОЛНУЮ формулировку задания. Какой ряд? Откуда и почему там тройки? В общем, "вокруг да около" не устраивает.

прошу прощения, с "копи пастом" налажал)))
ряд такой:
P=1/3*1/5*1/7.....с точностью до очередного члена ряда < 10^-4
 
и заодно еще один вопрос:
Разработать программу для определения, сколько существует четырехзначных чисел, сумма цифр которых равна 10? Организуйте цикл перебора всех возможных четырехзначных чисел с проверкой суммы цифр каждого числа. Выведите на экран количество чисел, удовлетворяющих данному условию.


Program romanuk_7_3;
uses crt;
var i,k:integer;
a,b,c,d,e: real;
begin
clrscr;
k:=0;
for i:= 1000 to 9999do
begin
a:= i div 1000;
b:= i mod 1000 div 100;
c:= i mod 100 div 10;
d:= i mod 10;
e:=a+b+c+d;
if e=10 then
begin
k:=k+1;
writeln (a:4:0, b:4:0, c:4:0, d:4:0);
end;
end;
writeln ('кол-во чисел удовлетворяющих условию= 'k);
end.

тут вроде все правильно, но все 219 чисел на экран не влезают...можно ли это как-то изменить?или лучше убрать эту строку(вывода этих числе)?
 
тут вроде все правильно, но все 219 чисел на экран не влезают...можно ли это как-то изменить?или лучше убрать эту строку(вывода этих числе)?
Очень даже можно, и ничего убирать не надо, а надо грамотно вывод организовать. Вот хотел бы я знать, на кой пёс Вы здесь вещественный формат (real) привлекли? По мне так он тут ни к селу, ни к городу. И зачем выводить отдельные цифры, да еще "в разрядку"? А главное, как Вы ухитрились запустить программу с явными синтаксическими ошибками? Потому что, например, такого:
for i:= 1000 to 9999do
(без пробела между 9999 и do) ни один транслятор не пропустит.
Ладно, получите:
Код:
uses crt;
var
 i,k,a,b,c,d,e:integer;
begin
 clrscr;
 k:=0;
 for i:= 1000 to 9999 do
  begin
   a:=i div 1000;
   b:=(i mod 1000) div 100;
   c:=(i mod 100) div 10;
   d:=i mod 10;
   e:=a+b+c+d;
   if e=10 then
    begin
     k:=k+1;
     write(i:5);
    end;
  end;
 writeln;
 writeln;
 writeln('Количество чисел, удовлетворяющих условию, = ',k);
 readln
end.
 
прошу прощения, с "копи пастом" налажал))) ряд такой: P=1/3*1/5*1/7.....с точностью до очередного члена ряда < 10^-4
Воля Ваша, сударь, но в условии - явный брех. Ну вот отлаженная программа, где ограничение снижено с 10^-4 до 10^-2.
Код:
uses crt;
var
 p,el:real;
 z:integer;
begin
 clrscr;
 p:=1;
 z:=0;
 repeat
  Inc(z);
  el:=1/(2*z+1);
  write('z= ',z:2,'  ','el= ',el,'  ');
  p:=p*el;
  writeln('p= ',p);
 until el<0.01;
 readln;
end.
Если ее запустить, то результат будет такой: 50 сомножителей, при этом само произведение будет числом порядка 10^-81. А если порог поставить 10^-4, то будет 5000 сомножителей, а произведение по малости вылетит за все разумные разрядные сетки и действительно будет трансформировано компьютером в чистый ноль.
В принципе, можно попробовать решить и такую задачку, но это мало похоже на студенческое упражнение. Так что уточните.
 
Очень даже можно, и ничего убирать не надо, а надо грамотно вывод организовать. Вот хотел бы я знать, на кой пёс Вы здесь вещественный формат (real) привлекли? По мне так он тут ни к селу, ни к городу. И зачем выводить отдельные цифры, да еще "в разрядку"? А главное, как Вы ухитрились запустить программу с явными синтаксическими ошибками? Потому что, например, такого:
for i:= 1000 to 9999do
(без пробела между 9999 и do) ни один транслятор не пропустит.
Ладно, получите:

запустилась так как ошибки не было, видимо случайно пробел удалил(как это произошло....понятия не имею)за программу спасибо)
 
Воля Ваша, сударь, но в условии - явный брех. Ну вот отлаженная программа, где ограничение снижено с 10^-4 до 10^-2.

Если ее запустить, то результат будет такой: 50 сомножителей, при этом само произведение будет числом порядка 10^-81. А если порог поставить 10^-4, то будет 5000 сомножителей, а произведение по малости вылетит за все разумные разрядные сетки и действительно будет трансформировано компьютером в чистый ноль.
В принципе, можно попробовать решить и такую задачку, но это мало похоже на студенческое упражнение. Так что уточните.

ну хорошо, я скажу учителю про такой касяк)
 
Очень даже можно, и ничего убирать не надо, а надо грамотно вывод организовать. Вот хотел бы я знать, на кой пёс Вы здесь вещественный формат (real) привлекли? По мне так он тут ни к селу, ни к городу. И зачем выводить отдельные цифры, да еще "в разрядку"? А главное, как Вы ухитрились запустить программу с явными синтаксическими ошибками? Потому что, например, такого:
for i:= 1000 to 9999do
(без пробела между 9999 и do) ни один транслятор не пропустит.
Ладно, получите:
попробовал программу но он не выводит числа сумма цифр которых равна 10
и в моей программе он выводил количество таких цифр 219, а в Вашей он(паскаль) говорит что их 567....почему?
 
попробовал программу но он не выводит числа сумма цифр которых равна 10 и в моей программе он выводил количество таких цифр 219, а в Вашей он(паскаль) говорит что их 567....почему?
Уважаемый Андрей!
Я уже не раз повторял и повторю еще раз для Вас - я НЕ ВЫКЛАДЫВАЮ неотлаженных и неоттестированных программ. Вот результат работы моей программы в том виде, в каком она выложена (на крякозябры в надписи не обращайте внимание, это следствие другой кодировки кириллицы):
Ten.webp
Так что, как видите, и количество (219) показывает, и все выводит. А уж за глюки Вашей реализации Паскаля не отвечаю. Кстати, хорошо бы, наконец, узнать, каким Паскалем Вы пользуетесь, и если это АВС, то тем более не отвечаю.
 
Уважаемый Андрей!
Я уже не раз повторял и повторю еще раз для Вас - я НЕ ВЫКЛАДЫВАЮ неотлаженных и неоттестированных программ. Вот результат работы моей программы в том виде, в каком она выложена (на крякозябры в надписи не обращайте внимание, это следствие другой кодировки кириллицы):
Посмотреть вложение 82927
Так что, как видите, и количество (219) показывает, и все выводит. А уж за глюки Вашей реализации Паскаля не отвечаю. Кстати, хорошо бы, наконец, узнать, каким Паскалем Вы пользуетесь, и если это АВС, то тем более не отвечаю.

окей, спасибо, сейчас буду смотреть в чем проблема тогда)
а стоит у меня турбо паскаль 1.7(а какие они бывают я не знаю.....мне этот паскаль учитель дал)
 
я так и не понял в чем была проблема, стер программу и написал ее заново....теперь все работает нормально)
 
Назад
Сверху