Здравствуйте! Поможите пожалста решить задачи по Pascal’у. В эти задачи надо внести какие то изменения, которые улучшали бы их работоспособность. Сами же задачи изначально сделаны правильно, но где то используется (я так предполагаю) не совсем правильные операторы которые необходимо заменить на более лучшие, последствием чего должно увеличится быстродействие программы. Вот сами задачи: 1) Ввести двузначное число. Определить разность его цифр. Var x, y: Integer; Begin Write (‘введите число’); Read (x); y:=x mod 10; While x>=10 do X:=x div 10; X:=x-y; Write (x); End. 2) Вычислить значение по формуле: Sinx/2Cos(в квадрате)x-Cosx-3/2*корень квадратный из x
Var X,y: Integer; Begin Write (‘введите число’); Read (y); Y:=(sin(x)/(2*sqr(cos(x))))-cos(x)-(3/2*sqrt(x)); Write
(y); End. 3) Var A,b,y: Real Begin Read (a,b); If (a+b)<1 then y:=a+b; If (a+b)>1 then y:=2*(sqr(a)+sqr(b)); If (a+b)=1 then y:=(a+b)/2; Write (y); End/ 4) Вычислить: y=1-2sin(x квадрат)-3sin(x квадрат)-4sin(x квадрат)-…-10sin(x квадрат) var y: Real; I,x: integer Begin Write (‘введите число’); Read (x); Y:=1; For I:=2 to 10 do Y:=y-I*sin (sqr(x)); Writeln (y:6:2); End. 5) Ввести строку символов. Вывести первый и последний символ. Var Stroka: String; A: integer; Begin Read (Stroka); A:= Length (Stroka); Write (Stroka[1]); Write (Stroka[A]); End. Заранее всем Вам огромнейшее спасибо! Я очень ценю Ваш труд!
Здравствуйте, Hellraiser! В первой задаче, я думаю предпочтительнее будет цикл из return - until, т.к. деление в любом случае нужно произвести хотя бы раз, и проверка условия будет производиться на один раз меньше... возможно поможет... Если в задачах нет ошибок, то возможно это опечатки - во второй задаче вводится и вычисляется Y, но скорее всего это опечатка... повысить скорость этой программы, я думаю, получится если как-то изменить выражение, т.к. известно, что вычисление функций происходит медленнее чем обычных арифметических операций. в третьей задаче будет лучше применить выбор с помощью оператора case, например так: var f: boolean; ... и вместо блока проверки условий с if : case f of (a+b)<1: y := a+b; (a+b)>1: y := 2*(sqr(a)+sqr(b)); (a+b)=1: y := (a+b)/2; end; ... В четвертой возможно тоже с выражением что-то можно
сдеать... А в пятой можно попробовать вот такой изврат :-)) Var Stroka: String; Begin Read (Stroka); Write (Stroka[1]); Write (Stroka[ord(Stroka[0])]); End. т.к. в нулевом элементе строки содержится символ, порядковый номер которого и есть длина строки. Буду рад, если хоть чем-то помог. С ув. Student.
Ответ отправлен: 15.06.2004, 22:54 Отправитель: Student Отвечает Ayl
Приветствую Вас, Hellraiser! 1. Так как число двузначное, то цикл не нужен. И программа должна выглядеть так: readln (x); writeln ((x div 10) - (x mod 10));
2. Здесь можно сыграть на однократном вычислении косинуса: y := cos (x); y := sin (x) / (2 * sqr (y)) - y - (3/2 * sqrt (x));
3. Упрощаем за счет превычисления выражения a + b: y := a + b; if y > 1 then y := 2*(sqr (a) + sqr (b)) else if y = 1 then y := y / 2;
4. Сначала вычислим sin (x^2): x := sin (sqr (x)); y := 1; for i := 2 to 10 do y := y - i * x;
5. А вот тут как раз лишнее использование переменной. Лучше так: readln (stroka); writeln (stroka [1], stroka [length (stroka)]);
Ответ отправлен: 15.06.2004, 15:05 Отправитель: Ayl Отвечает n0name
Добрый день, Hellraiser! 1) y:=x mod 10; X:=(x-y) div 10; X:=x-y Ответ отправлен: 15.06.2004, 15:40 Отправитель: n0name Отвечает Black
Доброе время суток, Hellraiser! 1) Var x1,x2,code,y:integer; s:string; begin Writeln('Vvedite chislo...'); Readln(s); val(s[1],x1,code); val(s[2],x2,code); if x1>=x2 then y:=x1-x2 else y:=x2-x1; Writeln(y); end. 2) Var x,y:real; begin Writeln('Vvedite chislo...'); Readln(x); Y:=Sin(x)/2*sqr(Cos(x))-Cos(x)-3/2*Sqrt(x); writeln(y); end. 3)norm. 4)norm. 5) var s:string; begin write('Vvedite stroku..'); Readln(s); writeln(s[1],' ',s[length(s)]); end. Ответ отправлен: 18.06.2004, 03:27 Отправитель: Black
Форма отправки вопроса
Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+
или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.