Progressão aritmética em Delphi xe8
Bom Dia,
Sou novato no Delphi e na programação. Estou tentado criar um programa que calcule qualquer termo de uma progressão aritmética (Não o n-ésimo termo, mas qualquer um, ou AN). Estou com problemas de lógica e dando erros no compilador. Não vou postar muitos erros, porque estou indo na tentativa e erro.
Eis a Unit:
O último erro:
[dcc32 Error] ProgreArit.pas(44): E2010 Incompatible types: 'array[0..50] of Integer' and 'Set'
Vou ainda botar mais um Edit para dar a saída. Se Alguém puder me dar algumas luzes, agradeço imensamente.
Valew!
Sou novato no Delphi e na programação. Estou tentado criar um programa que calcule qualquer termo de uma progressão aritmética (Não o n-ésimo termo, mas qualquer um, ou AN). Estou com problemas de lógica e dando erros no compilador. Não vou postar muitos erros, porque estou indo na tentativa e erro.
Eis a Unit:
unit ProgreArit;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Edit4: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
Var
A1,An,R,N: Integer;
Meu_Array : Array [0..50] of integer;
begin
Meu_Array[0]:= A1;
A1:=StrToInt(Edit2.Text);
Meu_Array = Array [0..50] of integer := N;
N:=StrToInt(Edit3.Text);
Meu_Array[0]:= (R+1);
R:= StrToInt(Edit4.Text);
An:=StrToInt(Edit1.Text);
An:=(A1 + (N - 1) * R);
An:=Meu_Array[0.50];
end;
end.
O último erro:
[dcc32 Error] ProgreArit.pas(44): E2010 Incompatible types: 'array[0..50] of Integer' and 'Set'
Vou ainda botar mais um Edit para dar a saída. Se Alguém puder me dar algumas luzes, agradeço imensamente.
Valew!
Adriano Freitas
Curtidas 0
Respostas
Natanael Ferreira
22/09/2016
Você está tentando fazer algo parecido com este link:
https://br.answers.yahoo.com/question/index?qid=20061101103046AAOsvjE
Teste assim:
https://br.answers.yahoo.com/question/index?qid=20061101103046AAOsvjE
Teste assim:
Var
A1, An, R: Real;
Meu_Array: Array [0 .. 50] of Integer;
N: Integer;
begin
A1 := StrToInt(Edit2.Text); // Primeiro Termo
R := StrToInt(Edit4.Text); // Razao
for N := 0 to 50 do
begin
An := A1 + (N - 1) * R;
Meu_Array[N] := Trunc(An);
end;
for N := 0 to 50 do
ShowMessage(FloatToStr(Meu_Array[N]));
end;GOSTEI 0
Natanael Ferreira
22/09/2016
Correção do código:
Var
A1, An, R: Real;
Meu_Array: Array [0 .. 50] of Integer;
N: Integer;
begin
A1 := StrToInt(Edit2.Text); // Primeiro Termo
R := StrToInt(Edit4.Text); // Razao
for N := 0 to 50 do
begin
An := A1 + N * R;
Meu_Array[N] := Trunc(An);
end;
for N := 0 to 50 do
ShowMessage(FloatToStr(Meu_Array[N]));
end;GOSTEI 0
Adriano Freitas
22/09/2016
Amigo, obrigado pelo esforço, mas ainda não é isso. O que eu gostaria é de um programa que calcule qualquer termo da progressão, quando o usuário do mesmo forneça a razão, a quantidade de termos, o primeiro termo e o número do termo ou posição que ele deseja, AN.
Não sei se tem lógica mas seria isso. Se alguém ou você puder dar uma luz, valew. Mas fico grato mesmo assim.
Meu abraço!
Não sei se tem lógica mas seria isso. Se alguém ou você puder dar uma luz, valew. Mas fico grato mesmo assim.
Meu abraço!
GOSTEI 0
Natanael Ferreira
22/09/2016
Neste caso, você deve utilizar Array Dinâmico pois você não sabe quantos termos o usuário escolherá.
Coloque Edit's com os nomes:
Teste o código abaixo em um Click de um Botão:
Coloque Edit's com os nomes:
- EditPrimeiroTermo - EditRazao - EditQuantTermos - EditPosicao - EditResultado
Teste o código abaixo em um Click de um Botão:
Var
PrimeiroTermo, Razao, Posicao2: Real;
Meu_Array: Array of Integer;
N, QuantTermos, Posicao: Integer;
begin
PrimeiroTermo := StrToInt(EditPrimeiroTermo.Text); // Primeiro Termo
Razao := StrToInt(EditRazao.Text); // Razao
QuantTermos := StrToInt(EditQuantTermos.Text); // Quant. Termos
Posicao := StrToInt(EditPosicao.Text); // Posicao desejada
SetLength(Meu_Array, QuantTermos);
for N := 0 to QuantTermos - 1 do
begin
Posicao2 := PrimeiroTermo + N * Razao;
Meu_Array[N] := Trunc(Posicao2);
end;
EditResultado.Text := IntToStr(Meu_Array[Posicao - 1]);
end;GOSTEI 0