Весь ХарцызскГлавная Весь Харцызск
Весь Харцызск
Весь Харцызск
   Логин:  Пароль:

14.04.2021 г. 4:09 

Виды Харцызска 

Виды Харцызска

Весь Харцызск 

  Главная
  Новости Харцызска

  Информация о Харцызске
  О городе
  Власти Харцызска
  История города
  Статистика города
  Статьи о городе
  Каталог предприятий
  Карта Харцызска
  Харцызск на карте Google

  Задать вопрос мэру Харцызска
  Юридическая консультация

  Форум
  Чат

  Фотоальбом
  Файлы
  Ссылки

  Телепрограмма 
  Гороскопы
  Анекдоты
  Игры

  Топ-10
  Поиск

  О нас
  Реклама на сайте
  Написать нам
  Рекомендовать нас
  Добавить в Избранное

Кто на сайте: 


В чате: 1


Реклама 


Поиск по сайту 




Реклама 


• 





Весь Харцызск :: Просмотр темы - Задачки на Pascal
 Правила форумаПравила   FAQFAQ   ПоискПоиск   ГруппыГруппы   ПользователиПользователи   ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход  


Внимание новичков!

В связи с участившимися случаями спама, у вновь зарегистрированных пользователей отключена возможность создания сообщений на форуме. Возможность писать сообщения будет включаться администратором вручную — через некоторое время после регистрации пользователя. Для включения этой функции быстрее, пишите личное сообщение администратору сайта (в сообщении напишите кратко о себе и с какой целью регистрировались на сайте).
Обратите внимание: пользователям, нарушающим п.2.1 возможность писать сообщения включаться не будет!
Просим отнестись с пониманием: это вынужденная мера.
 

Задачки на Pascal
На страницу Пред.  1, 2, 3, 4  След.
 
Начать новую тему   Ответить на тему    Список форумов Весь Харцызск -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
Archangel
Старожил
Старожил


Зарегистрирован: Aug 21, 2006
Сообщения: 386

СообщениеДобавлено: Ср Фев 17, 2010 22:17    Заголовок сообщения: Ответить с цитатой

Ваш пример тоже реализован с условием:
0<=x<=1;
0<x<=2.
И чтобы реализовать именно
0<=x<=1;
0<=x<=2.
Нужо изменить более 1-го символа в тексте программы.
Я в программе выразил минимум который соответствует условию, все остальное примочки. С проверкой да схитрил, но ведь условие задачи не нарушено. Wink
Вывод работы вашей программы:
Код:
Введите 10 чисел массива А
Введите1-й элемент       
1
Введите2-й элемент
2
Введите3-й элемент
3
Введите4-й элемент
4
Введите5-й элемент
5
Введите6-й элемент
6
Введите7-й элемент
7
Введите8-й элемент
8
Введите9-й элемент
9
Введите10-й элемент
1
x= 0.00000000000000E+000  y= 1.00000000000000E+000
x= 2.00000000000000E-001  y= 1.22140275816017E+000
x= 4.00000000000000E-001  y= 1.49182469764127E+000
x= 6.00000000000000E-001  y= 1.82211880039051E+000
x= 8.00000000000000E-001  y= 2.22554092849247E+000
x=  1.0000000000000E+000  y= 2.71828182845905E+000
x= 1.20000000000000E+000  y= 7.42967024840268E+000
x= 1.40000000000000E+000  y= 8.02496105909555E+000
x= 1.60000000000000E+000  y= 8.57904423581089E+000
x= 1.80000000000000E+000  y= 9.09945053286186E+000
x=  2.0000000000000E+000  y= 9.59166304662544E+000
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Krom
Бессмертный форумчанин
Бессмертный форумчанин


Зарегистрирован: Apr 07, 2006
Сообщения: 3370
Откуда: Моспино, Донецк, Харцызск

СообщениеДобавлено: Ср Фев 17, 2010 22:30    Заголовок сообщения: Ответить с цитатой

Archangel писал(а):
Ваш пример тоже реализован с условием:
0<=x<=1;
0<x<=2.

наверное опечатка во второй строке?

Archangel писал(а):

И чтобы реализовать именно
0<=x<=1;
0<=x<=2.
Нужо изменить более 1-го символа в тексте программы.

в принципе можно все построить на константах, которые поменять легче, чем менять в коде программы, да?

Archangel писал(а):

Я в программе выразил минимум который соответствует условию, все остальное примочки. С проверкой да схитрил, но ведь условие задачи не нарушено. Wink

Вот тут согласен)) если задача решаема, то почему бы и нет))) Иначе, постоянно улучшая можно наворотить монстра, который и видео редактировать сможет Wink

Archangel писал(а):

Вывод работы вашей программы:
Код:

x=  1.0000000000000E+000  y= 2.71828182845905E+000

вот тут я ожидал увидеть две строки....странно..
блин, жаль, что паскаль не грузится... вернее не компилится...
_________________
когда-то было "Veni, Vidi, Modero"
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Archangel
Старожил
Старожил


Зарегистрирован: Aug 21, 2006
Сообщения: 386

СообщениеДобавлено: Ср Фев 17, 2010 22:40    Заголовок сообщения: Ответить с цитатой

Krom писал(а):

вот тут я ожидал увидеть две строки....странно..

Вот потому что второй строки нет, опечатки нет.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Krom
Бессмертный форумчанин
Бессмертный форумчанин


Зарегистрирован: Apr 07, 2006
Сообщения: 3370
Откуда: Моспино, Донецк, Харцызск

СообщениеДобавлено: Ср Фев 17, 2010 22:52    Заголовок сообщения: Ответить с цитатой

Archangel писал(а):
Krom писал(а):

вот тут я ожидал увидеть две строки....странно..

Вот потому что второй строки нет, опечатки нет.

что-то я логики не понимаю...
по алгоритму ж она должна быть.. не?

хм.. очень странно
счас перегрузился в ХР, и попробовал в Паскале погонять программу
есть вторая строка с единицей
Код:

Введите 10 чисел массива А
Введите 1-й элемент = 1
Введите 2-й элемент = 2
Введите 3-й элемент = 3
Введите 4-й элемент = 4
Введите 5-й элемент = 5
Введите 6-й элемент = 4
Введите 7-й элемент = 3
Введите 8-й элемент = 6
Введите 9-й элемент = 2
Введите 10-й элемент = 3
x= 0.0000000000E+00  y= 1.0000000000E+00
x= 2.0000000000E-01  y= 1.2214027582E+00
x= 4.0000000000E-01  y= 1.4918246976E+00
x= 6.0000000000E-01  y= 1.8221188004E+00
x= 8.0000000000E-01  y= 2.2255409285E+00
x= 1.0000000000E+00  y= 2.7182818285E+00
x= 1.0000000000E+00  y= 5.7445626465E+00
x= 1.2000000000E+00  y= 6.2928530890E+00
x= 1.4000000000E+00  y= 6.7970581872E+00
x= 1.6000000000E+00  y= 7.2663608498E+00
x= 1.8000000000E+00  y= 7.7071395472E+00

а вот текст программы
Код:
program Project1;

uses crt;

const dx=0.2;

var
   A: array [1..10] of real;
   x,y: real;
   b: real;
   i: integer;


begin
{N+}
     clrscr;
b:=0;
     writeln ('Введите 10 чисел массива А');
     for i:=1 to 10 do
     begin
         write ('Введите ', i,'-й элемент = ');
         readln (A[i]);
        b:=b+A[i];
     end;

x:=0;
while (0<= x) and (x<= 2) do
begin
if (0<=x) and (x<=1) then
  begin
     y:=exp(x);
      writeln('x=',x,'  ','y=',y);
  end;
if (1<=x) and (x<=2) then
  begin
      y:=sqrt(x*b);
      writeln('x=',x,'  ','y=',y);
  end;
x:=x+dx;
end;
readln;
end.

все работает правильно)))
_________________
когда-то было "Veni, Vidi, Modero"
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Archangel
Старожил
Старожил


Зарегистрирован: Aug 21, 2006
Сообщения: 386

СообщениеДобавлено: Ср Фев 17, 2010 23:21    Заголовок сообщения: Ответить с цитатой

Маразм конечно, но вот результат отладки:
Код:
(gdb) run
Starting program: /home/archangel/programs/Pascal/prog/Project1
Введите 10 чисел массива А
Введите1-й элемент       
2                         
Введите2-й элемент       
2                         
Введите3-й элемент       
2                         
Введите4-й элемент       
2                         
Введите5-й элемент       
2                         
Введите6-й элемент       
2                         
Введите7-й элемент       
2                         
Введите8-й элемент       
2                         
Введите9-й элемент       
2                         
Введите10-й элемент       
2                         
x= 0.00000000000000E+000  y= 1.00000000000000E+000

Breakpoint 1, main () at Project1.pas:33
33      if (1<=x) and (x<=2) then       
(gdb) c                                 
Continuing.                             
x= 2.00000000000000E-001  y= 1.22140275816017E+000

Breakpoint 1, main () at Project1.pas:33
33      if (1<=x) and (x<=2) then       
(gdb) c                                 
Continuing.                             
x= 4.00000000000000E-001  y= 1.49182469764127E+000

Breakpoint 1, main () at Project1.pas:33
33      if (1<=x) and (x<=2) then       
(gdb) c                                 
Continuing.                             
x= 6.00000000000000E-001  y= 1.82211880039051E+000

Breakpoint 1, main () at Project1.pas:33
33      if (1<=x) and (x<=2) then       
(gdb) c                                 
Continuing.                             
x= 8.00000000000000E-001  y= 2.22554092849247E+000

Breakpoint 1, main () at Project1.pas:33
33      if (1<=x) and (x<=2) then       
(gdb) print x                           
$4 = 0.79999999999999993               
(gdb) c                                 
Continuing.
x=  1.0000000000000E+000  y= 2.71828182845905E+000

Breakpoint 1, main () at Project1.pas:33
33      if (1<=x) and (x<=2) then
(gdb) print x
$5 = 0.99999999999999989
(gdb) c
Continuing.

Breakpoint 1, main () at Project1.pas:33
33      if (1<=x) and (x<=2) then
(gdb) print x
$6 = 1.2
(gdb) c
Continuing.
x= 1.20000000000000E+000  y= 4.89897948556636E+000

Breakpoint 1, main () at Project1.pas:33
33      if (1<=x) and (x<=2) then
(gdb) print x
$7 = 1.3999999999999999
(gdb) c
Continuing.
x= 1.40000000000000E+000  y= 5.29150262212918E+000

Breakpoint 1, main () at Project1.pas:33
33      if (1<=x) and (x<=2) then
(gdb) print x
$8 = 1.5999999999999999
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Krom
Бессмертный форумчанин
Бессмертный форумчанин


Зарегистрирован: Apr 07, 2006
Сообщения: 3370
Откуда: Моспино, Донецк, Харцызск

СообщениеДобавлено: Чт Фев 18, 2010 0:17    Заголовок сообщения: Ответить с цитатой

Archangel писал(а):
Маразм конечно, но вот результат отладки:

прикольно...
как такое может быть....?
а если можно - приведи тут еще раз последний текст программы, из файла Project1.pas.
_________________
когда-то было "Veni, Vidi, Modero"
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Archangel
Старожил
Старожил


Зарегистрирован: Aug 21, 2006
Сообщения: 386

СообщениеДобавлено: Чт Фев 18, 2010 0:25    Заголовок сообщения: Ответить с цитатой

Вот:
Код:
program Project1;

uses crt, math;

const dx=0.2;

var
   A: array [1..10] of extended;
   x,y: real;
   b: extended;
   i: integer;


begin
     clrscr;
b:=0;
     writeln ('Введите 10 чисел массива А');
     for i:=1 to 10 do
     begin
         writeln ('Введите', i,'-й элемент');
         readln (A[i]);
        b:=b+A[i];
     end;

x:=0;
while (0<= x) and (x<= 2) do
begin
if (0<=x) and (x<=1) then
  begin
     y:=exp(x);
      writeln('x=',x,'  ','y=',y);
  end;
if (1<=x) and (x<=2) then
  begin
      y:=sqrt(x*b);
      writeln('x=',x,'  ','y=',y);
  end;
x:=x+dx;
end;
end.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Krom
Бессмертный форумчанин
Бессмертный форумчанин


Зарегистрирован: Apr 07, 2006
Сообщения: 3370
Откуда: Моспино, Донецк, Харцызск

СообщениеДобавлено: Чт Фев 18, 2010 0:52    Заголовок сообщения: Ответить с цитатой

Archangel писал(а):
Вот:
Код:
program Project1;

бьюсь головой об стол...
КАК такое может быть? Wink
по логике (по алгоритму) при наступлении события х=1 сначала срабатывает условие в строке 28 (if (0<=x) and (x<=1) then) и действия по нему, затем - сразу же - срабатывает условие в строке 33 (if (1<=x) and (x<=2) then)

Идея номер N
а сделай пожалста так, а?

Код:

if (0<=x) and (x<=1) then
  begin
     y:=exp(x);
      writeln('x1=',x,'  ','y=',y);
  end;
if (1<=x) and (x<=2) then
  begin
      y:=sqrt(x*b);
      writeln('x2=',x,'  ','y=',y);
  end;

на результате будет видно - какая карта не сыграла...Wink потому что в паскале BP7 играют обе, а в паскале FreePascal 2.4.0 - судя по-всему, только одна.
_________________
когда-то было "Veni, Vidi, Modero"
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Archangel
Старожил
Старожил


Зарегистрирован: Aug 21, 2006
Сообщения: 386

СообщениеДобавлено: Чт Фев 18, 2010 1:00    Заголовок сообщения: Ответить с цитатой

Там смотреть нечего, по результату видно, что вычисляется экспонента.
Тут весь маразм в том что на 31 строке где выводится х, он равен 1, а через две строки, на 33 он уже равен 0.99999999999999989.
Код:
x=  1.0000000000000E+000  y= 2.71828182845905E+000

Breakpoint 1, main () at Project1.pas:33
33      if (1<=x) and (x<=2) then
(gdb) print x
$5 = 0.99999999999999989

Кроме как списать на глюк в FreePascal, ничего на ум не приходит.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Krom
Бессмертный форумчанин
Бессмертный форумчанин


Зарегистрирован: Apr 07, 2006
Сообщения: 3370
Откуда: Моспино, Донецк, Харцызск

СообщениеДобавлено: Чт Фев 18, 2010 1:11    Заголовок сообщения: Ответить с цитатой

Archangel писал(а):
Там смотреть нечего, по результату видно, что вычисляется экспонента.
Тут весь маразм в том что на 31 строке где выводится х, он равен 1, а через две строки, на 33 он уже равен 0.99999999999999989.
Код:
x=  1.0000000000000E+000  y= 2.71828182845905E+000

Breakpoint 1, main () at Project1.pas:33
33      if (1<=x) and (x<=2) then
(gdb) print x
$5 = 0.99999999999999989

Кроме как списать на глюк в FreePascal, ничего на ум не приходит.

Действительно - шайтан-программа.
Не додумался я сразу переменные трассировать, а в твоей трассировке не разобрался.
Все-таки BP7 понадежней оказался.
Спасибо за интересную проблемку))
_________________
когда-то было "Veni, Vidi, Modero"
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Archangel
Старожил
Старожил


Зарегистрирован: Aug 21, 2006
Сообщения: 386

СообщениеДобавлено: Чт Фев 18, 2010 1:25    Заголовок сообщения: Ответить с цитатой

В общем разобрался, проблема была в том, что объявленная константа dx=0.2, какого-то Х, была не совсем равна 0,2, а с погрешностью в далеком знаке. Если ее сделать переменной и задать значение в теле программы, то все нормально отрабатывается.
Хотя, что странно, несмотря на погрешность, выводилось правильное значение, а вот для условия точности уже не хватало.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
goon4a
Приезжий
Приезжий


Зарегистрирован: Feb 11, 2010
Сообщения: 16

СообщениеДобавлено: Чт Фев 18, 2010 6:37    Заголовок сообщения: Ответить с цитатой

Спасибо за решение моей проблемы)) Утро на работе прошло за просмотром ваших решенийSmile только скажите теперь, что в итоге то получается, какой код окончательный? Archangel, да, у меня нет в паскале math. поэтому я не могла проверить
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Krom
Бессмертный форумчанин
Бессмертный форумчанин


Зарегистрирован: Apr 07, 2006
Сообщения: 3370
Откуда: Моспино, Донецк, Харцызск

СообщениеДобавлено: Чт Фев 18, 2010 9:23    Заголовок сообщения: Ответить с цитатой

goon4a писал(а):
Спасибо за решение моей проблемы)) Утро на работе прошло за просмотром ваших решенийSmile только скажите теперь, что в итоге то получается, какой код окончательный? Archangel, да, у меня нет в паскале math. поэтому я не могла проверить

уточни - какой Паскаль у тебя имеется?
и текст программы я бы представил так(если у тебя нету math, как и у меня)
Код:

begin
   clrscr;
   b:=0;
   writeln ('Введите 10 чисел массива А');
   for i:=1 to 10 do
   begin
     write ('Введите ', i,'-й элемент - ');
     readln (A[i]);
     b:=b+A[i];
   end;
   x:=0;
   while (0<= x) and (x<= 2) do
   begin
    if (0<=x) and (x<=1) then
     begin
      y:=exp(x);
      writeln('x=',x,'  ','y=',y);
     end;
    if (1<=x) and (x<=2) then
     begin
      y:=sqrt(x*b);
      writeln('x=',x,'  ','y=',y);
     end;
   x:=x+dx;
   end;
end.

_________________
когда-то было "Veni, Vidi, Modero"
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
goon4a
Приезжий
Приезжий


Зарегистрирован: Feb 11, 2010
Сообщения: 16

СообщениеДобавлено: Чт Фев 18, 2010 9:53    Заголовок сообщения: Ответить с цитатой

да у меня простой tp7, что первое попалось скачать. программа вроде работает и что-то считаетSmile спасибо! вечером еще посмотрю все получше
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Archangel
Старожил
Старожил


Зарегистрирован: Aug 21, 2006
Сообщения: 386

СообщениеДобавлено: Чт Фев 18, 2010 18:24    Заголовок сообщения: Ответить с цитатой

Только учтите, что вариант Krom'а, производит подсчет суммы оператором, а не функцией.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Весь Харцызск -> Программирование Часовой пояс: GMT + 2
На страницу Пред.  1, 2, 3, 4  След.
Страница 2 из 4

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001 phpBB Group

Version 2.0.6 of PHP-Nuke Port by Tom Nitzschner © 2002 www.toms-home.com
Forums ©



Наверх
О нас  :: Контакт с автором  :: Реклама на сайте  :: Рекомендовать Нас
Наверх
Khartsizsk2007 theme by Весь Харцызск
Яндекс цитирования
Все логотипы и торговые марки на этом сайте являются собственностью их соответствующих владельцев. Все материалы на сайте являются собственностью их авторов. Администрация сайта может не разделять точку зрения авторов. Использование материалов сайта без разрешения администрации сайта не допускается
© 2006 - 2016 khartsizsk.com Использование материалов разрешается при условии ссылки (для интернет-изданий - гиперссылки) на сайт «Весь Харцызск»
PHP-Nuke Copyright © 2006 by Francisco Burzi. This is free software, and you may redistribute it under the GPL. The Russiаn localizatiоn - prоjесt РhрNukе.RU
Открытие страницы: 0.05 секунды и 16 запросов к БД