Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 09.06.2012, 16:32   #1 (permalink)
Андрей Романюк
Member
 
Регистрация: 13.05.2011
Сообщений: 49
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Снова Паскаль

Построить алгоритм, составить и отладить программу для нахождения произведения ряда:
с точностью до очередного члена ряда < 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"( думал тчо ему не хватает, но снова вышел ноль.....вопрос:почему?
Андрей Романюк вне форума   Ответить с цитированием

Старый 09.06.2012, 16:32
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Можете обратить внимание на схожие темы, они вам помогут

Компьютер включается и выключается. И так снова и снова
И снова Паскаль
Снова усилитель
Турбо Паскаль или Фри Паскаль. Задание по теме Типизированный файл
Снова Паскаль

Старый 09.06.2012, 16:43   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Андрей Романюк Посмотреть сообщение
Построить алгоритм, составить и отладить программу для нахождения произведения ряда: с точностью до очередного члена ряда < 10^-4
Дайте, пожалуйста, ТОЧНУЮ и ПОЛНУЮ формулировку задания. Какой ряд? Откуда и почему там тройки? В общем, "вокруг да около" не устраивает.
Vladimir_S вне форума   Ответить с цитированием
Старый 09.06.2012, 16:51   #3 (permalink)
Андрей Романюк
Member
 
Регистрация: 13.05.2011
Сообщений: 49
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Цитата:
Сообщение от Vladimir_S Посмотреть сообщение
Дайте, пожалуйста, ТОЧНУЮ и ПОЛНУЮ формулировку задания. Какой ряд? Откуда и почему там тройки? В общем, "вокруг да около" не устраивает.
прошу прощения, с "копи пастом" налажал)))
ряд такой:
P=1/3*1/5*1/7.....с точностью до очередного члена ряда < 10^-4
Андрей Романюк вне форума   Ответить с цитированием
Старый 09.06.2012, 17:01   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Андрей Романюк Посмотреть сообщение
прошу прощения, с "копи пастом" налажал)))
ряд такой:
P=1/3*1/5*1/7.....с точностью до очередного члена ряда < 10^-4
Ладно, постараюсь вечером сделать - сейчас убегаю.
Vladimir_S вне форума   Ответить с цитированием
Старый 09.06.2012, 17:02   #5 (permalink)
Андрей Романюк
Member
 
Регистрация: 13.05.2011
Сообщений: 49
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Цитата:
Сообщение от Vladimir_S Посмотреть сообщение
Ладно, постараюсь вечером сделать - сейчас убегаю.
спасибо)буду ждать)
Андрей Романюк вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 09.06.2012, 17:05   #6 (permalink)
Андрей Романюк
Member
 
Регистрация: 13.05.2011
Сообщений: 49
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

и заодно еще один вопрос:
Разработать программу для определения, сколько существует четырехзначных чисел, сумма цифр которых равна 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 чисел на экран не влезают...можно ли это как-то изменить?или лучше убрать эту строку(вывода этих числе)?
Андрей Романюк вне форума   Ответить с цитированием
Старый 09.06.2012, 20:52   #7 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Андрей Романюк Посмотреть сообщение
тут вроде все правильно, но все 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.
Vladimir_S вне форума   Ответить с цитированием
Старый 09.06.2012, 21:29   #8 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Андрей Романюк Посмотреть сообщение
прошу прощения, с "копи пастом" налажал))) ряд такой: 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 сомножителей, а произведение по малости вылетит за все разумные разрядные сетки и действительно будет трансформировано компьютером в чистый ноль.
В принципе, можно попробовать решить и такую задачку, но это мало похоже на студенческое упражнение. Так что уточните.
Vladimir_S вне форума   Ответить с цитированием
Старый 09.06.2012, 21:52   #9 (permalink)
Андрей Романюк
Member
 
Регистрация: 13.05.2011
Сообщений: 49
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Цитата:
Сообщение от Vladimir_S Посмотреть сообщение
Очень даже можно, и ничего убирать не надо, а надо грамотно вывод организовать. Вот хотел бы я знать, на кой пёс Вы здесь вещественный формат (real) привлекли? По мне так он тут ни к селу, ни к городу. И зачем выводить отдельные цифры, да еще "в разрядку"? А главное, как Вы ухитрились запустить программу с явными синтаксическими ошибками? Потому что, например, такого:
for i:= 1000 to 9999do
(без пробела между 9999 и do) ни один транслятор не пропустит.
Ладно, получите:
запустилась так как ошибки не было, видимо случайно пробел удалил(как это произошло....понятия не имею)за программу спасибо)
Андрей Романюк вне форума   Ответить с цитированием
Старый 09.06.2012, 21:55   #10 (permalink)
Андрей Романюк
Member
 
Регистрация: 13.05.2011
Сообщений: 49
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Цитата:
Сообщение от Vladimir_S Посмотреть сообщение
Воля Ваша, сударь, но в условии - явный брех. Ну вот отлаженная программа, где ограничение снижено с 10^-4 до 10^-2.

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

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 13:37.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.