Ciągi arytmetyczne


Tematy pokrewne   Podrozdziały
Przedziały liczbowe i liczby
Liczby parzyste i nieparzyste
Liczby podzielne lub niepodzielne przez zadane podzielniki
Ciągi arytmetyczne
NWD – algorytm Euklidesa
Liczby względnie pierwsze
Najmniejsza wspólna wielokrotność
Odwrotność modulo – rozszerzony algorytm Euklidesa
Liczby pierwsze – generacja przez sprawdzanie podzielności
Liczby pierwsze – generacja sitem Eratostenesa
Liczby pierwsze – generacja sitem liniowym
Liczby pierwsze – generacja sitem Atkina-Bernsteina
Czynniki pierwsze – metoda próbnych dzieleń
Czynniki pierwsze – metoda Fermata
Pierwszość liczby naturalnej – algorytmy naiwne
Pierwszość liczby naturalnej – Chiński Test Pierwszości
Pierwszość liczby naturalnej – Małe Twierdzenie Fermata
Pierwszość liczby naturalnej – test Millera-Rabina
Liniowe generatory liczb pseudolosowych
Generator pseudolosowy Park-Miller
Generator pseudolosowy Mersenne Twister
Wbudowane generatory liczb pseudolosowych
Generowanie liczb pseudolosowych
Liczby Fibonacciego
System liczbowy Fibonacciego
Całkowity pierwiastek kwadratowy
  Rozwiązanie 1
Rozwiązanie 2

 

Problem

Wygenerować n kolejnych wyrazów ciągu arytmetycznego.

 

 

Wzór na i-ty wyraz ciągu arytmetycznego jest następujący:

 

ai = a1 + (i - 1) × d

a1 – pierwszy wyraz ciągu
d  – stały przyrost
i   – numer wyrazu do wygenerowania

 

Algorytm wyznaczania n kolejnych wyrazów ciągu arytmetycznego

Wejście
n  –  liczba wyrazów ciągu do wygenerowania, n N
a  – pierwszy wyraz ciągu, a1 R
d  – przyrost, d R
Wyjście:

Kolejne wyrazy ciągu a1 a2 ... an

Zmienne pomocnicze

i – przebiega przez kolejne indeksy w przedziale <1, n>,  i N

Lista kroków:
K01: Dla i = 1,2,...,n wykonu K02
K02:     Pisz a + (i - 1) × d
K03: Zakończ

 

Program

Ważne:

Zanim uruchomisz program, przeczytaj wstęp do tego artykułu, w którym wyjaśniamy funkcje tych programów oraz sposób korzystania z nich.

 

Program odczytuje kolejno trzy liczby: n, a1 oraz d. Następnie wyświetla n kolejnych wyrazów ciągu arytmetycznego.

 

Lazarus
// Ciąg arytmetyczny
// Data   : 6.02.2011
// (C)2012 mgr Jerzy Wałaszek
//----------------------------

program prg;

var n,i : integer;
    a,d : double;

begin
  readln(n,a,d);

  for i := 1 to n do
    write(a + (i - 1) * d:9:3,' ');

  writeln;
end.
Code::Blocks
// Ciąg arytmetyczny
// Data   : 6.02.2011
// (C)2012 mgr Jerzy Wałaszek
//----------------------------

#include <iostream>
#include <iomanip>

using namespace std;

int main()
{
  int    n,i;
  double a,d;

  cout << fixed
       << setprecision(3);

  cin >> n >> a >> d;

  for(i = 1; i <= n; i++)
    cout << setw(9)
         << a + (i - 1) * d
         << " ";
  
  cout << endl;

  return 0;
}
Free Basic
' Ciąg arytmetyczny
' Data   : 6.02.2011
' (C)2012 mgr Jerzy Wałaszek
'----------------------------

Dim As Integer n,i
Dim As Double a,d

Input n,a,d

For i = 1 To n
  Print Using " #####.###";a + (i - 1) * d;
Next
Print
End
Wynik
32 1 0.57
    1.000     1.570     2.140     2.710     3.280     3.850     4.420     4.990
    5.560     6.130     6.700     7.270     7.840     8.410     8.980     9.550
   10.120    10.690    11.260    11.830    12.400    12.970    13.540    14.110
   14.680    15.250    15.820    16.390    16.960    17.530    18.100    18.670

 

Rozwiązanie dla ciągu arytmetycznego o wyrazach całkowitych.

Jeśli generowany ciąg arytmetyczny ma wyrazy całkowite, to kolejne wyrazy możemy tworzyć rekurencyjnie, tzn. mając wyraz ai, następny otrzymujemy dodając do poprzedniego przyrost d. Korzyścią jest pozbycie się operacji mnożenia, zatem wyrazy będą generowane nieco szybciej. Metoda ta nie nadaje się dla ciągów rzeczywistych, ponieważ w wyniku dodawania mogą kumulować się błędy zaokrągleń.

 

Algorytm wyznaczania n kolejnych wyrazów całkowitego ciągu arytmetycznego

Wejście
n  –  liczba wyrazów ciągu do wygenerowania, n N
a  – pierwszy wyraz ciągu, a1 Z
d  – przyrost, d Z
Wyjście:

Kolejne wyrazy ciągu a1 a2 ... an

Zmienne pomocnicze

i – przebiega przez kolejne indeksy w przedziale <1, n>,  i N

Lista kroków:
K01: Dla i = 1,2,...,n wykonu K02,K03  
K02:     Pisz a ; wypisujemy bieżący wyraz
K03:     aa + d ; wyliczamy wyraz następny
K04: Zakończ  

 

Program

Ważne:

Zanim uruchomisz program, przeczytaj wstęp do tego artykułu, w którym wyjaśniamy funkcje tych programów oraz sposób korzystania z nich.

 

Program odczytuje kolejno trzy liczby: n, a1 oraz d. Następnie wyświetla n kolejnych wyrazów ciągu arytmetycznego.

 

Lazarus
// Całkowity ciąg arytmetyczny
// Data   : 6.02.2011
// (C)2012 mgr Jerzy Wałaszek
//----------------------------

program prg;

var n,i,a,d : integer;

begin
  readln(n,a,d);

  for i := 1 to n do
  begin
    write(a:7,' ');
    inc(a,d);
  end;

  writeln;
end.
Code::Blocks
// Całkowity ciąg arytmetyczny
// Data   : 6.02.2011
// (C)2012 mgr Jerzy Wałaszek
//----------------------------

#include <iostream>
#include <iomanip>

using namespace std;

int main()
{
  int    n,i,a,d;

  cin >> n >> a >> d;

  for(i = 1; i <= n; i++)
  {
    cout << setw(7) << a << " ";
    a += d;
  }
 
  cout << endl;

  return 0;
}
Free Basic
' Całkowity ciąg arytmetyczny
' Data   : 6.02.2011
' (C)2012 mgr Jerzy Wałaszek
'----------------------------

Dim As Integer n,i,a,d

Input n,a,d

For i = 1 To n
  Print Using " #######";a;
  a += d
Next
Print
End
Wynik
20 2000 123
   2000    2123    2246    2369    2492    2615    2738    2861    2984    3107
   3230    3353    3476    3599    3722    3845    3968    4091    4214    4337

 



List do administratora Serwisu Edukacyjnego Nauczycieli I LO

Twój email: (jeśli chcesz otrzymać odpowiedź)
Temat:
Uwaga: ← tutaj wpisz wyraz  ilo , inaczej list zostanie zignorowany

Poniżej wpisz swoje uwagi lub pytania dotyczące tego rozdziału (max. 2048 znaków).

Liczba znaków do wykorzystania: 2048

 

W związku z dużą liczbą listów do naszego serwisu edukacyjnego nie będziemy udzielać odpowiedzi na prośby rozwiązywania zadań, pisania programów zaliczeniowych, przesyłania materiałów czy też tłumaczenia zagadnień szeroko opisywanych w podręcznikach.



   I Liceum Ogólnokształcące   
im. Kazimierza Brodzińskiego
w Tarnowie

©2017 mgr Jerzy Wałaszek

Dokument ten rozpowszechniany jest zgodnie z zasadami licencji
GNU Free Documentation License.