![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
CrAzY_GeNiYS |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Продвинутые Сообщений: 5 Регистрация: 22.9.2008 Город: Украина, Краматорск Учебное заведение: ДГМА Вы: студент ![]() |
В приложении я добавил само задание... Текст программы выложу чуть ниже, а сейчас объясню суть проблемы...
Не смотрите что я не сделал для 3 части (IMG:style_emoticons/default/smile.gif), уменя проблема с 1 и 2 частью (IMG:style_emoticons/default/sad.gif)... Не могу понять почему у меня не хочет выполняться первый цмкл, с тем же While... это я проверял так, вывел какуюто надпись перед и после цикла и получилось так, что 1-й цикл не хотит выполняться... вродебы всё удовлетворяет, но почему, я не понимаю (IMG:style_emoticons/default/unsure.gif) ... Помогите пожалуйста... П.с.Правда хоть это и первый курс, но я решил выпендриться и решить не так как в условии... дело в том, что мы массивы не изучали... мы изучили только эти цыклы, но ещё и if then else... Вобщем это не важно... найдите ошибку если сможите... Вот сама программа: program lab5_var13; uses crt; const xn=0.4; xk=2.8; hx=0.4; a=1.7; var x,y:real; v,i:integer; tab:array[1..7,1..2] of real; begin clrscr; writeln('vubirite sposob reshenija i postavte cifry:'); writeln('1) WHILE'); writeln('2) REPEAT'); writeln('3) FOR'); write('Variant => '); read(v); if v=1 then begin x:=xn; i:=1; writeln('nachali...'); while x<=a do begin y:=cos((x)/(25)); tab[i,1]:=x; tab[i,2]:=y; x:=x+hx; i:=i+1; end; writeln('prodolguli...'); while (x<=xk+hx)and(x>a) do begin y:=sqrt(exp(3*ln(x))+4); tab[i,1]:=x; tab[i,2]:=y; x:=x+hx; i:=i+1; end; for i:=1 to 7 do writeln('Pri X=', tab[i,1]:10:7, ' => Y=', tab[i,2]:10:7); end; if v=2 then begin x:=xn; i:=1; writeln('nachali...'); repeat y:=cos((x)/(25)); tab[i,1]:=x; tab[i,2]:=y; x:=x+hx; i:=i+1; until (x<=xk)and(x<a); writeln('kapec...'); repeat y:=sqrt(exp(3*ln(x))+4); tab[i,1]:=x; tab[i,2]:=y; x:=x+hx; i:=i+1; until (x<=xk)and(x>a); for i:=1 to 7 do writeln('Pri X=', tab[i,1]:10:7, ' => Y=', tab[i,2]:10:7); end; if v=3 then begin end; readkey end. Прикрепленные файлы ![]() |
![]() ![]() |
граф Монте-Кристо |
![]()
Сообщение
#2
|
Доцент ![]() ![]() ![]() ![]() ![]() ![]() Группа: Преподаватели Сообщений: 3 840 Регистрация: 27.9.2007 Из: Старый Оскол Город: Москва Учебное заведение: МФТИ/МАИ Вы: другое ![]() |
В цикле while всё вроде бы работает нормально,а вот repeat у Вас неправильно написан.Посмотрите,что должно означать условие после until.
Вывод результатов лучше всего писать в самом конце программы - один раз вместо трёх. К тому же Ваша программа слишком привязана к задаче,стоит немного изменить входные данные - и придётся почти заново её писать.Старайтесь делать её универсальнее. |
crazymaster |
![]()
Сообщение
#3
|
Студент ![]() ![]() Группа: Продвинутые Сообщений: 240 Регистрация: 9.3.2007 Город: Нефтеюганск Учебное заведение: ТУСУР Вы: студент ![]() |
Не могу понять почему у меня не хочет выполняться первый цмкл, с тем же While... это я проверял так, вывел какуюто надпись перед и после цикла и получилось так, что 1-й цикл не хотит выполняться... вродебы всё удовлетворяет, но почему, я не понимаю (IMG:style_emoticons/default/unsure.gif) ... Помогите пожалуйста... Потому что во втором цикле while в матрицу на теже места перезаписываются вычисления while (1) tab[i,1]:=x; tab[i,2]:=y; end while (2) tab[i,1]:=x; tab[i,2]:=y; end |
crazymaster |
![]()
Сообщение
#4
|
Студент ![]() ![]() Группа: Продвинутые Сообщений: 240 Регистрация: 9.3.2007 Город: Нефтеюганск Учебное заведение: ТУСУР Вы: студент ![]() |
Сорри, не заметил i глобальная перем. вроде должно работать
|
CrAzY_GeNiYS |
![]()
Сообщение
#5
|
Новичок ![]() Группа: Продвинутые Сообщений: 5 Регистрация: 22.9.2008 Город: Украина, Краматорск Учебное заведение: ДГМА Вы: студент ![]() |
В цикле while всё вроде бы работает нормально,а вот repeat у Вас неправильно написан.Посмотрите,что должно означать условие после until. Вывод результатов лучше всего писать в самом конце программы - один раз вместо трёх. К тому же Ваша программа слишком привязана к задаче,стоит немного изменить входные данные - и придётся почти заново её писать.Старайтесь делать её универсальнее. Да пофиг на тот Репит... я его буду делать по образу и подобию Вайл (IMG:style_emoticons/default/smile.gif)... Я просто не пойму какого **** первый цикл Вайла не хочет работать?!... мож я и правда намудрил с i, но вроде оно должно в любом случае, но оно какого-то вобще не хочет делать первый цикл (IMG:style_emoticons/default/sad.gif)... Ну три раза вместо одного вывод я сделал просто чтобы показать, что каждая часть проги работает отдельно, тоесть это не важно (IMG:style_emoticons/default/wink.gif)... Цитата стоит немного изменить входные данные - и придётся почти заново её писать либо вы не так поняли либо я (IMG:style_emoticons/default/wink.gif)... там даны определённые числа... я их в константы определил, чтобы не парить себе мозг (IMG:style_emoticons/default/smile.gif)... а если вам переписать прогу нада, введите другое значение в константах соответствующему значению... да и собственно я это знаю, просто это не есть программа такая уж нужная, чтобы её делать универсальней (IMG:style_emoticons/default/wink.gif), согласитесь со мной, что она предназначена один раз сделать и здать... её легче заново написать если понадобиться, чем редактировать это (IMG:style_emoticons/default/smile.gif)... Цитата Сорри, не заметил i глобальная перем. вроде должно работать Вот и я о том же... я полностью продумал логику... по идее оно должно в любом случае работать (IMG:style_emoticons/default/wink.gif)... но увы (IMG:style_emoticons/default/sad.gif)... Может кто ещё что скажет?... я то могу нормально переделать и сделать так как нужно... Но мне аж интересно стало, какого **** оно не работает (IMG:style_emoticons/default/smile.gif) |
creer |
![]()
Сообщение
#6
|
Студент ![]() ![]() Группа: Продвинутые Сообщений: 121 Регистрация: 28.10.2007 Город: Екатеринбург Учебное заведение: УГТУ-УПИ Вы: студент ![]() |
А почему Вы решили, что что-то не работает?
Код vubirite sposob reshenija i postavte cifry: 1) WHILE 2) REPEAT 3) FOR Variant => 1 nachali... prodolguli... Pri X= 0.4000000 => Y= 0.9998720 Pri X= 0.8000000 => Y= 0.9994880 Pri X= 1.2000000 => Y= 0.9988482 Pri X= 1.6000000 => Y= 0.9979527 Pri X= 2.0000000 => Y= 3.4641016 Pri X= 2.4000000 => Y= 4.2218479 Pri X= 2.8000000 => Y= 5.0943106 Это цикл while. На мой взгляд, вывелось то, что необходимо. |
CrAzY_GeNiYS |
![]()
Сообщение
#7
|
Новичок ![]() Группа: Продвинутые Сообщений: 5 Регистрация: 22.9.2008 Город: Украина, Краматорск Учебное заведение: ДГМА Вы: студент ![]() |
А почему Вы решили, что что-то не работает? Код vubirite sposob reshenija i postavte cifry: 1) WHILE 2) REPEAT 3) FOR Variant => 1 nachali... prodolguli... Pri X= 0.4000000 => Y= 0.9998720 Pri X= 0.8000000 => Y= 0.9994880 Pri X= 1.2000000 => Y= 0.9988482 Pri X= 1.6000000 => Y= 0.9979527 Pri X= 2.0000000 => Y= 3.4641016 Pri X= 2.4000000 => Y= 4.2218479 Pri X= 2.8000000 => Y= 5.0943106 Это цикл while. На мой взгляд, вывелось то, что необходимо. Ну ведь я же вывел одну надпись до цикла, а вторую после цикла... вот они и вывелись до и после, а междуними ничего...а то видимо результат второго цикла... |
crazymaster |
![]()
Сообщение
#8
|
Студент ![]() ![]() Группа: Продвинутые Сообщений: 240 Регистрация: 9.3.2007 Город: Нефтеюганск Учебное заведение: ТУСУР Вы: студент ![]() |
|
граф Монте-Кристо |
![]()
Сообщение
#9
|
Доцент ![]() ![]() ![]() ![]() ![]() ![]() Группа: Преподаватели Сообщений: 3 840 Регистрация: 27.9.2007 Из: Старый Оскол Город: Москва Учебное заведение: МФТИ/МАИ Вы: другое ![]() |
Цитата .. вот они и вывелись до и после, а междуними ничего... Так между ними Вы ничего и не выводите на экран (IMG:style_emoticons/default/smile.gif) |
creer |
![]()
Сообщение
#10
|
Студент ![]() ![]() Группа: Продвинутые Сообщений: 121 Регистрация: 28.10.2007 Город: Екатеринбург Учебное заведение: УГТУ-УПИ Вы: студент ![]() |
CrAzY_GeNiYS,
посмотрите как будет выводиться теперь, я дописал несколько строчек. Код if v=1 then begin x:=xn; i:=1; writeln('nachali...'); while x<=a do begin y:=cos((x)/(25)); tab[i,1]:=x; tab[i,2]:=y; writeln('Pri X=', tab[i,1]:10:7, ' => Y=', tab[i,2]:10:7); {Это дописал я, возможно станет понятнее} x:=x+hx; i:=i+1; end; writeln('prodolguli...'); while (x<=xk+hx) and (x>a) do begin y:=sqrt(exp(3*ln(x))+4); tab[i,1]:=x; tab[i,2]:=y; writeln('Pri X=', tab[i,1]:10:7, ' => Y=', tab[i,2]:10:7); {Опять я} x:=x+hx; i:=i+1; end; writeln('----------'); {Разделил на 2 части :)} for i:=1 to 7 do {Это Ваш вывод, правда цифру 7 лучше вычислить;)} writeln('Pri X=', tab[i,1]:10:7, ' => Y=', tab[i,2]:10:7); end; |
CrAzY_GeNiYS |
![]()
Сообщение
#11
|
Новичок ![]() Группа: Продвинутые Сообщений: 5 Регистрация: 22.9.2008 Город: Украина, Краматорск Учебное заведение: ДГМА Вы: студент ![]() |
Тьфу я дибил... я ж забыл, что я записую результат в таблицу, а потом уже из таблици вывожу... Всё терь понял какого оно не выводилось (IMG:style_emoticons/default/smile.gif)...
А вот теперь вопрос... Я немного отредактировал код для вывода через Репит, но оно не хочет заполнять последние 3 или 4 параметра (IMG:style_emoticons/default/sad.gif)... опять не пойму чо... Вот код: if v=2 then begin x:=xn; i:=1; repeat y:=cos((x)/(25)); tab[i,1]:=x; tab[i,2]:=y; x:=x+hx; i:=i+1; until (x<=xk)and(x<=a); repeat y:=sqrt(exp(3*ln(x))+4); tab[i,1]:=x; tab[i,2]:=y; x:=x+hx; i:=i+1; until (x<=xk)and(x>a); for i:=1 to 7 do writeln('Pri X=', tab[i,1]:10:7, ' => Y=', tab[i,2]:10:7); end; Мож я чо в Антил не так написал?... ну всмысле в условии (IMG:style_emoticons/default/smile.gif)... |
граф Монте-Кристо |
![]()
Сообщение
#12
|
Доцент ![]() ![]() ![]() ![]() ![]() ![]() Группа: Преподаватели Сообщений: 3 840 Регистрация: 27.9.2007 Из: Старый Оскол Город: Москва Учебное заведение: МФТИ/МАИ Вы: другое ![]() |
В until пишется условие,при выполнении которого цикл завершается,насколько я помню. То есть Вам нужно поменять знаки,ну и некоторые условия можно убрать.
|
CrAzY_GeNiYS |
![]()
Сообщение
#13
|
Новичок ![]() Группа: Продвинутые Сообщений: 5 Регистрация: 22.9.2008 Город: Украина, Краматорск Учебное заведение: ДГМА Вы: студент ![]() |
В until пишется условие,при выполнении которого цикл завершается,насколько я помню. То есть Вам нужно поменять знаки,ну и некоторые условия можно убрать. Тю... а я думал, что пока выполняется это условие в Until выполняется цикл (IMG:style_emoticons/default/cool.gif) ... Спасибо всем за помощь (IMG:style_emoticons/default/smile.gif) Пошол делать... Если что ещё раз спрошу (IMG:style_emoticons/default/smile.gif)... Ещё раз спасибо (IMG:style_emoticons/default/smile.gif) |
![]() ![]() |
![]() |
Текстовая версия | Сейчас: 25.5.2025, 22:18 |
Зеркало сайта Решебник.Ру - reshebnik.org.ru