Росляев Опубликовано 26 октября, 2011 Опубликовано 26 октября, 2011 Помогите, пожалуйста, написать программу на Free Pascal. 1. Дано натуральное число n и действительное число х. Вычислить: x( x - n )( x - 2 n )( x - 3 n )…( x – n^2); 2. По формуле задания №1 для действительного x>0 определить значение n для произведений, дающих в итоге значение больше 1000.
MASolomko Опубликовано 26 октября, 2011 Опубликовано 26 октября, 2011 А в формуле нет опечатки? П(x-k*n), где k = 0, 1, 2...
4543 Опубликовано 26 октября, 2011 Опубликовано 26 октября, 2011 (изменено) Росляев, написал на Delphi 7 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; Label1: TLabel; Button1: TButton; Label2: TLabel; Edit2: TEdit; Label3: TLabel; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; a,N,xxl,x:integer; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin // Задание #1 x:=StrToInt(Edit2.text); N:=StrToInt(Edit1.Text); a:=1; xxl:=x; // По сих момент должно быть понятно. while (N>=a) do // начинаем цикл что бы опеределить количество множителей. begin xxl:=xxl*(x-a*N); // Умножаме и вычисляем множители a:=a+1; // Считаем количесво повторений цикла и множитель для N end; Label1.Caption:= IntToStr(xxl); // Задание №2. Убираем последюю строчку кода(Label1.Caption:= IntToStr(xxl);) if (X>0) and (xxl>1000) then // В операторе ветвления то же непонятного мало =) ShowMessage(IntToStr(xxl)) else ShowMessage('Выввели значение X<0 или результат не превышает 1000. Ответ не может быть получен!') end; end. основная рабочая часть кода: begin // Задание #1 x:=StrToInt(Edit2.text); N:=StrToInt(Edit1.Text); a:=1; xxl:=x; // По сих момент должно быть понятно. while (N>=a) do // начинаем цикл что бы опеределить количество множителей. begin xxl:=xxl*(x-a*N); // Умножаме и вычисляем множители a:=a+1; // Считаем количесво повторений цикла и множитель для N end; Label1.Caption:= IntToStr(xxl); // Задание №2. Убираем последюю строчку кода(Label1.Caption:= IntToStr(xxl);) if (X>0) and (xxl>1000) then // В операторе ветвления то же непонятного мало =) ShowMessage(IntToStr(xxl)) else ShowMessage('Выввели значение X<0 или результат не превышает 1000. Ответ не может быть получен!') end; В Паскаль сам переделаешь заданияexe.rar Изменено 26 октября, 2011 пользователем 4543 1
Росляев Опубликовано 27 октября, 2011 Автор Опубликовано 27 октября, 2011 Вот переделал по Паскаль первую программу. Program Lab4; Uses CRT; Var a,N,xxl,x:integer; Begin Write('x='); readln(x); Write('n='); readln(N); a:=1; xxl:=x; while(N>=a) do begin xxl:=xxl*(x-a*N); a:=a+1; end; Writeln('Ответ=',xxl); ReadLn(); End. Может что-то неправильно.
Paddington Опубликовано 27 октября, 2011 Опубликовано 27 октября, 2011 Вот мой вариант.Первая программа: Program Lab1; var n,i:integer; x,s:real; begin WriteLn('Введите x'); readln(x); writeln('Введите n'); readln(n); s:=x; for i:=1 to n do s:=s*(x-i*n); WriteLn('Ответ: ', s:8:3); ReadLn(); end. Вторая программа: Program Lab2; var n,i:integer; x,s:real; begin WriteLn('Введите x'); readln(x); repeat inc(n); s:=x; for i:=1 to n do s:=s*(x-i*n); until s>=1000; Write('n=', n); ReadLn(); end. 1
4543 Опубликовано 27 октября, 2011 Опубликовано 27 октября, 2011 (изменено) Росляев, а тебе это зачем нужно? давай еще задания, мы тебе все сделаем) P.S. Условие второй програмы чесно говоря не понял, ну ладно, тут еще умные люди вроде бы сделали Изменено 27 октября, 2011 пользователем 4543
Росляев Опубликовано 27 октября, 2011 Автор Опубликовано 27 октября, 2011 4543, это для лабораторных по программированию
4543 Опубликовано 27 октября, 2011 Опубликовано 27 октября, 2011 4543, это для лабораторных по программированию Давай еще, нам то же попрактиковаться полезно
Росляев Опубликовано 28 октября, 2011 Автор Опубликовано 28 октября, 2011 Пожалуйста: Дана квадратная вещественная матрица размерности n. Найти количество отрицательных элементов, стоящих: выше главной диагонали; ниже главной диагонали.
Paddington Опубликовано 28 октября, 2011 Опубликовано 28 октября, 2011 Росляев, это задача для 4543?Код: Program R; Const n=3; Var a:array[1..n,1..n] of real; i,j:byte; pod,nad:integer; begin randomize; pod:=0; nad:=0; for i:=1 to n do begin for j:=1 to n do begin a[i,j]:=random(10000)-5000+random; Write(' ', a[i,j]:9:3); if a[i,j]<0 then if not(i=j) then if i<j then inc(nad) else inc(pod); end; WriteLn; end; WriteLn('Количество отрицательных элементов над главной диагональю: ', nad); WriteLn('Количество отрицательных элементов под главной диагональю: ', pod); end.
4543 Опубликовано 29 октября, 2011 Опубликовано 29 октября, 2011 Росляев, это задача для 4543?Код: Program R; Const n=3; Var a:array[1..n,1..n] of real; i,j:byte; pod,nad:integer; begin randomize; pod:=0; nad:=0; for i:=1 to n do begin for j:=1 to n do begin a[i,j]:=random(10000)-5000+random; Write(' ', a[i,j]:9:3); if a[i,j]<0 then if not(i=j) then if i<j then inc(nad) else inc(pod); end; WriteLn; end; WriteLn('Количество отрицательных элементов над главной диагональю: ', nad); WriteLn('Количество отрицательных элементов под главной диагональю: ', pod); end. А можешь дать подробные коментарии и объяснить принцип действия....
Paddington Опубликовано 29 октября, 2011 Опубликовано 29 октября, 2011 (изменено) 4543, что именно непонятно? Вроде программа очень простая. Изменено 29 октября, 2011 пользователем Paddington
4543 Опубликовано 29 октября, 2011 Опубликовано 29 октября, 2011 4543, что именно непонятно? Вроде программа очень простая. Можешь объяснить сначала основной принцип действия, а потом коментарии в коде?
Рекомендуемые сообщения
Пожалуйста, войдите, чтобы комментировать
Вы сможете оставить комментарий после входа в
Войти