Росляев Опубликовано 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... Ссылка на комментарий Поделиться на другие сайты Поделиться
Росляев Опубликовано 26 октября, 2011 Автор Поделиться Опубликовано 26 октября, 2011 MASolomko, нет Ссылка на комментарий Поделиться на другие сайты Поделиться
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. Ссылка на комментарий Поделиться на другие сайты Поделиться
Росляев Опубликовано 28 октября, 2011 Автор Поделиться Опубликовано 28 октября, 2011 Paddington, для всех))) Ссылка на комментарий Поделиться на другие сайты Поделиться
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, что именно непонятно? Вроде программа очень простая. Можешь объяснить сначала основной принцип действия, а потом коментарии в коде? Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Пожалуйста, войдите, чтобы комментировать
Вы сможете оставить комментарий после входа в
Войти