Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 01.10.2013, 00:02   #1 (permalink)
tsss
Новичок
 
Регистрация: 30.09.2013
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Две задачи на Паскале

Всем добрый вечер,прошу помощи)
не могу разобраться,что не так с программами.
Задание 1.
S=1+1/5^2+1/5^3+...
Найти значение S до указанной точности.
Мое решение :program v2;
var z,s:real;
n,E:integer;
begin
writeln('vvedite E');
readln(E);
n:=1;
z:=1/5;
while abs(z)>=E do
begin
S:=1+Z;
z:=1/(exp (E)*ln (5));
writeln('vot i vse',s,s:2:3);
readln
end;
end.

Задание 2.
В векторе x(n) поменять местами последний и максимальный элементы
program massiv;
const mmax=10;
var
h:array[1..mmax] of integer;
i,m,j:integer;
max:integer;
begin
max:=1;
writeln('vvedite kolichestvo elementov massiva');
readln(m);
for i:=1 to m do
begin
Write('h[',i,']=');
Readln(h[i]);
end;
begin
j:=h[max];
h[m]:=h[i];
h[m]:=j;
end;
for i:=1 to m do
begin
writeln (h[i]:9,'vector');
readln
end;
end.
tsss вне форума   Ответить с цитированием

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

Скорее всего тут вы найдете много полезной информации

Простые задачи в Паскале
Две задачи с массивами в Паскале
Решение задачи в паскале

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

Цитата:
Сообщение от tsss Посмотреть сообщение
не могу разобраться,что не так с программами.
По первой - а всё не так. Не понимаю, что у Вас изображает идентификатор E? Мера точности? Но как тогда понимать вот это:
z:=1/(exp (E)*ln (5));
Показатель степени? Но что за чуднОе условие выхода из цикла? И где он возрастает?
И почему "end", закрывающий цикл While..Do, поставлен после вывода результата?
И т.д. и т.п. и проч.
В общем, не программа, а какой-то бессмысленный набор символов.
Между прочим, этот ряд представляет собой бесконечно убывающую геометрическую прогрессию, и сумма его, определенная по формуле, есть
S = 1/(1-1/5) = 1.25
Это для контроля.
А теперь работающий вариант программы (точность Е вводится в виде 0.1, 0.001, 0.000005 и т.п.):
Код:
var
 z,S,E:real;
begin
 write('vvedite E: ');
 readln(E);
 z:=1;
 S:=0;
 while z>=E do
  begin
   S:=S+z;
   z:=z/5;
  end;
 writeln('vot i vse: ', S:0:5);
 readln
end.
Vladimir_S вне форума   Ответить с цитированием
Старый 01.10.2013, 10:00   #3 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Теперь - по второй.
Тут такой ужас, что я даже комментировать не берусь. Главное - абсолютно неграмотно организован обмен элементами. Впечатление, что фрагмент программы просто бездумно откуда-то скатан. Поиск максимального элемента массива отсутствует напрочь. И т.д.
Ладно, вот отлаженный вариант - разбирайтесь:
Код:
const
 mmax=10;
var
 h:array[1..mmax] of integer;
 i,m,j:integer;
 max:integer;
begin
 write('vvedite kolichestvo elementov massiva ');
 readln(m);
 for i:=1 to m do
  begin
   Write('h[',i,']= ');
   Readln(h[i]);
  end;
 Writeln;
 for i:=1 to m do write(h[i]:4);
 Writeln;
 Writeln;
 max:=1;
 for i:=2 to m do
  if h[i]>h[max] then max:=i;
 j:=h[max];
 h[max]:=h[m];
 h[m]:=j;
 for i:=1 to m do write(h[i]:4);
 readln
end.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

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


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

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




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

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