Fórum Progressão aritmética em Delphi xe8 #562724

22/09/2016

0

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:

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

Adriano Freitas

Responder

Posts

22/09/2016

Natanael Ferreira

Você está tentando fazer algo parecido com este link:
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;
Responder

Gostei + 0

22/09/2016

Natanael Ferreira

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;
Responder

Gostei + 0

22/09/2016

Adriano Freitas

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!
Responder

Gostei + 0

23/09/2016

Natanael Ferreira

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:

- 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;
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar