wtorek, 4 kwietnia 2017

Liczba a podniesiona do potęgi n-tej

Podstawowe pojęcia związane z potęgowaniem

a= b

n - wykładnik potęgi
a - podstawa potęgi
b - wynik potęgowania


Specyfikacja algorytmu


Dane: liczba, potega     //należą do N
           i                         // licznik pętli
           tym                   // wartość tymczasowa, do chwilowego zapamiętania wartości potęgi 
Wynik: wynik potęgowania


Lista kroków

K01: Wczytaj liczba
K02: Wczytaj potega // wykładnik potęgi
K03: Dla i=0 do potęga-1 WYKONUJ K04
K04: liczba = tym*liczba; i++;
K05: Wypisz wartość liczba


Rozwiązanie w C++
#include <iostream>
using namespace std;
int main()
{
int tym,i,liczba,potega;
cout<<"\n\tPodaj liczbe: ";
cin>> liczba;                           //Wczytywanie danych z klawiatury
tym=liczba;
cout<<"\tPodaj stopien potegi: ";
cin>> potega;
system("cls");
for(i=0;i<potega-1;i++)                 //Obliczanie potęgi za pomocą tabeli
{
  liczba=tym*liczba;
}
cout<<"\n\t"<<tym<<" do potegi "<<potega<<" wynosi "<<liczba;         //Wyświetlanie wyników
cin.ignore();
getchar();
return 0;
}

Rozwiązanie w EXCEL


W arkuszu kalkulacyjnym EXCEL zaprojektowano zestawienie, w którym użytkownik podaj potęgowaną liczbę (B4) oraz wykładnik potęgi (F4).

Uwaga! Excel liczy wartość potęgowanej liczby maksymalnie dla wykładnika o wartości 20

Następnie utworzono tabelę, w której pokazano kolejne wartości liczby z B4 podnoszone do potęgi od 1 do wartości wykładnika zapisanego w F4.
W komórce E7 wpisano formułę: =JEŻELI(D7<=$F$4;B7^D7;""), którą skopiowano aż do komórki E26.
W komórce E27 wstawiono formułę obliczająca wartość maksymalną w kolumnie E, tj. =MAX(E7:E26). Będzie ona potrzebna do wyświetlenia odpowiedzi w wierszu 9.
Otóż w komórce ... wprowadzono formułę: =WYSZUKAJ.PIONOWO(F4;D7:E26;2)
która wyświetla w odpowiedzi wyszukaną maksymalną wartość kolumny E.

Zastosowano również formatowanie warunkowe dla wartości z kolumny E wg wzoru


Opracował Marcin Sz. 




wtorek, 14 marca 2017

Czy liczba jest pierwsza?

Algorytm sprawdzający czy liczba jest liczbą pierwszą?

Najprostszy test pierwszości wygląda następująco: dla danej liczby n należy sprawdzić, czy dzieli się ona kolejno przez 2, 3, aż do n−1. Jeśli przez żadną z nich się nie dzieli, oznacza to, że jest pierwsza.

Optymalizacja
Zamiast testować wszystkie liczby do n−1, wystarczy sprawdzić podzielność n przez liczby mniejsze lub równe sqrt(n).

Lista kroków

Specyfikacja algorytmu
Wejście:
n –  liczba naturalna badana na pierwszość, n > 1

Wyjście:
TAK, jeśli n jest pierwsze lub NIE w przypadku przeciwnym.

Elementy pomocnicze:
g – granica sprawdzania podzielności p, g należy do N
i – kolejne podzielniki liczby n, i należy do N

K01         g ← [√n]
K02         Dla i = 2,3,...,g wykonuj krok K03
K03         Jeśli n % i = 0, to Wypisz "NIE" i zakończ
K04         Wypisz "TAK"
K05         Zakończ


Schemat blokowy


Program w C++

#include<iostream>
#include<cstdlib>
#include<cmath>
using namespace std;
bool czy_pierwsza (int n)
{
  if (n<2)  return false;
  int g;
  int i;
  g=sqrt(n); // sqrt - pierwiastek kwadratowy 
  for (i=2;i<=g;i++)
    if (n%i==0)     return false; 
  return true;
}
int main()
{
  int n; // sprawdzana liczba
  cout<<"Podaj liczbe: ";
  cin>>n;

  if (czy_pierwsza(n)) //lub czy_pierwsza(n)==1
    cout<<"Liczba "<<n<<" jest pierwsza"<<endl;
  else
    cout<<"Liczba "<<n<<" nie jest pierwsza"<<endl;
  return 0;
}


sobota, 11 marca 2017

Algorytm sprawdzający czy ciąg jest rosnący

Algorytm sprawdzający czy ciąg jest rosnący


Algorytm sprawdza, czy wyraz następny jest większy od poprzedniego. Jeżeli kolejny element ciągu jest większy od poprzedniego, to ciąg jest rosnący.

List kroków

K01   Wczytaj n, szukana, T[0…n-1],
K02  Licznik pętli przyjmuje wartość 0,
K03  Dla i < n-1 wykonaj krok od K04 do K06
K04 Sprawdź czy T[i] >= T[i+1],
K05   Jeśli tak to napisz „NIE”, w przeciwnym razie 
K06 Jeśli nie to i = i+1,  Wypisz „TAK”.


Schemat blokowy

Rozwiązanie w C++

#include <iostream>
using namespace std;

int main() 
{
int n; //liczba elementów ciągu
cout << "Podaj liczbe elementow: "; cin >> n;

int t[n]; //tablica t - jednowymiarowa, n-elementowa
// wprowadzenie elementów ciągu do tablicy
for (int i=0; i<n; ++i) 
{
  cout << "Podaj element nr " << (i+1) << ": ";
  cin >> t[i];
}

// sprawdzanie, czy elementy w tablicy t są posortowane rosnąco 
bool rosnace = true;
for (int i=1; i<n; ++i) if (t[i-1] >= t[i]) rosnace = false;

// wypisanie wyniku
if (rosnace) cout << "Tablica jest rosnaca!" << endl; 
else cout<<"Ciag nie jest rosnacy "<<endl;
}

Rozwiązanie w arkuszu kalkulacyjnym EXCEL
Aby rozwiązać algorytm sprawdzający czy ciąg jest rosnący zaprojektowano arkusz, w którym użytkownik musi wprowadzić wartości 5 dowolnych elementów ciągu (do komórek leżących w zakresie B8:B12). 
Następnie w kolumnie C wprowadzono formułę wykorzystującą funkcję logiczną JEŻELI, która sprawdza czy element n+1 jest większy ni jego poprzednik n. 
=JEŻELI(B9>B8;"rosnący";"nie rosnący")
W kolumnie D sprawdzana jest wartość ciągu znaków z kolumny C. Ponownie wykorzystano funkcję logiczną Jeżeli:
=JEŻELI(C8="rosnący";0;1)
W komórce I7 wprowadzono formułę obliczającą sumę wartości w kolumny D
=SUMA(D8:D12)
Ostateczny wynik, który podaje informacje czy ciąg jest rosnący wyświetlany jest w komórce D15
=JEŻELI(I7=0;"CIĄG LICZB JEST ROSNĄCY";"CIĄG LICZB NIE JEST ROSNĄCY")

Opracowała: Ada Sz.






Algorytm obliczający miejsce miejsce zerowe funkcji

Algorytm obliczający miejsce miejsce zerowe funkcji

Nazwa funkcji liniowej pochodzi stąd, iż jej wykres jest linią prostą.
Wzór funkcji liniowej: 
f(x)=ax+b

Żeby narysować wykres funkcji liniowej, wystarczy wyznaczyć dwa punkty, które do niego należą.


Współczynnik kierunkowy „a”

Funkcja liniowa jest rosnąca jeżeli a > 0.
Funkcja liniowa  jest malejąca jeżeli a < 0.
Funkcja liniowa jest stała jeżeli a = 0.


Wyraz wolny „b”
Wyraz wolny jest również wartością funkcji liniowej w punkcie 0.



Miejsce zerowe
Miejsce zerowe funkcji liniowej obliczamy przyrównując wzór funkcji do zera.
0 = f(x) <=> 0 = ax + b


Lista kroków

K01  Wczytaj a i b
K02        Jeśli a<>0 , to idź do K06
K03
                x0  := - b/a
K04   Napisz " x0 = ", x0
K05  Zakończ
K06       Jeżeli b<>0  to Napisz "Równanie ma nieskończenie wiele rozwiązań" 
              w przeciwnym razie Napisz "Brak miejsca zerowego"
K07      Zakończ


Schemat blokowy

Rozwiązanie w C++
#include<iostream>
using namespace std;
int main()
{
  float a;
  float b;
  float x;
  float y;
cout << "         Rozwiazuje rownanie liniowe\n";
cout << "                  y=ax+b\n\n\n\n\n";      
  cout << "Podaj a: ";
  cin >> a;
  cout << "Podaj b: ";
  cin >> b;
cout<<"\n--------------------------------\n\n";
  if(a!=0) 
  {
  x=-b/a; 
   cout<<"x = "<<x;
  }
else
{
if(b!=0) cout<<"Rownanie nie ma rozwiazan";
else cout<<"Rownanie ma nieskonczenie wiele rozwiazan";
}
cout<<"\n";  
  }

Rozwiązanie w arkuszu kalkulacyjnym EXCEL



Aby w arkuszu kalkulacyjnym EXCEL obliczyć miejsce zerowe funkcji należy zastosować formułę, wykorzystującą funkcję logiczną „JEŻELI”.
W komórce C11 wpisano formułę:
=JEŻELI(B6=0;JEŻELI(B7=0;"Funkcja ma nieskończenie wiele miejsc zerowych.";"Funkcja nie ma miejsc zerowych.");-B7/B6)

Opracował Mikołaj M. 


sobota, 25 lutego 2017

Algorytm obliczający iloczyn kolejnych liczb naturalnych od 1 do n

Silnia (n!) jest to iloczyn kolejnych liczb naturalnych od 1 do n.  Jest to pojęcie czysto matematyczne.  Silnię liczby naturalnej n oznaczamy symbolem n! (czytamy en silnia). Oznaczenie n! dla silni wprowadził w 1808 roku Christian Kramp.
Mamy zatem:

n!=1⋅2⋅3⋅...⋅(n−1)⋅n


Kliknij, aby zobaczyć: Tablica wartości silni
Lista kroków:
Krok 1: silnia = 1
Krok 2:WCZYTAJ n
Krok 3: i = 1
Krok 4: JEŻELI i<=n to WYKONAJ Krok 5..Krok 6 
      W przeciwnym razie WYKONAJ krok 7.
Krok 5: Silnia =Silnia * i
Krok 6: i++
Krok 7: NAPISZ ('silnia =',silnia)

Schemat blokowy 
Program w C++ 

/// program oblicza iloczyn kolejnych liczb naturalnych od 1..n

#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
    int n,i;
    long int silnia = 1;
    cout << "Podaj liczbe, dla której obliczyc silnie " << endl;
    cin >> n;
    for (i = 1; i<=n;i++)   silnia *= i;
    cout << "Silnia = "<<silnia << endl;
    return(0);
}


Rozwiązanie w Excel



Aby obliczyć iloczyn n kolejnych liczb naturalnych w arkuszu kalkulacyjnym EXCEL, należy wykonać następujące czynności:


1. Do komórki A1 wpisujemy tytuł algorytmu
2. Zakres komórek od A3:A14 wypełniamy kolejnymi liczbami naturalnymi (1..12)
3. W komórce B3 wpisujemy wartość 1 4. W komórce B4 wpisujemy formułę obliczającą wartość silni dla każdego i, wykorzystującą funkcje logiczną „Jeżeli”, w następujący sposób:
=JEŻELI(A4<=E$4;B3*A4;" ")

5. W komórce E4 formułę wykorzystująca funkcję logiczną „Wyszukaj” w następujący sposób:
WYSZUKAJ.PIONOWO(E4;A3:B100;2)

Jej zadaniem jest wyszukanie wartości największej dla obliczonej silni s.
Formułę należy skopiować do komórek z zakresu (B5:B14)

Opracował: Amadeusz P.




środa, 8 lutego 2017

Algorytm sprawdzający czy punkt P leży na prostej


Idea algorytmu sprawdzającego czy punkt P leży na prostej

Ideą algorytmu jest sprawdzenie czy wprowadzony przez nas punkt leży na danej prostej. 

Na płaszczyźnie współrzędnych prostą definiujemy w postaci ogólnej lub kierunkowej.
Postać ogólna równania prostej jest następująca:
Ax+By+C = 0
natomiast postać kierunkowa to:
y = kx+b 


Aby  sprawdzić czy punkt należy do danej prostej należy sprawdzić jego odległość od prostej, którą oznaczamy literą d.  Jeśli d=0 to oznacza, że podany przez nas punkt znajduje się na prostej.

Wartość d obliczamy wzorem



ZADANIE 

Algorytm sprawdzi czy punkt P = (x0,y0) leży na prostej o równaniu ogólnym 3x+4y-4 = 0.

Lista kroków

Krok 0. Wczytaj wartości danych x0 i y0.
Krok 1. Wykonaj działanie, które obliczy odległość od prostej według powyższego wzoru
             d=abs(3*x0+4*y0-4)/sqrt(pow(3.0,2)+pow(4.0,2)) 
Krok 2.  Jeśli d=0 to wypisz: "punkt należy do prostej".
Krok 3. Jeśli d≠0 to wypisz: "punkt nie należy do prostej".

Krok 4. Zakończ algorytm.

Schemat blokowy



Program w C++

//algorytm sprawdzający, czy punkt P leży na prostej 3x+4y–4 = 0
#include <iostream>
#include <cmath>
using namespace std;

bool szukaj (double x0, double y0)  //funkcja szukaj
{
 double d=abs(3*x0+4*y0-4)/sqrt(pow(3.0,2)+pow(4.0,2)); // oblicza odległość punktu P od prostej
 if (d==0) return true;
 else return false;
}
int main()
{
 double x0, y0;     
 cout<<"podaj wspolrzedne punktu: ";
 cin>>x0>>y0;  
 if (szukaj(x0,y0)) // sprawdzenie warunku, czy odległość punktu P od prostej równa się 0
  cout<<"punkt P=("<<x0<<";"<<y0<<") lezy na prostej 3x+4y-4=0"<<endl;   
  else 
  cout<<"punkt P=("<<x0<<";"<<y0<<") nie lezy na prostej 3x+4y-4=0"<<endl;   
 return 0;    
}



Rozwiązanie w Excel


Aby sprawdzić czy punkt P leży na prostej 3x+4y = 0 należy zaprojektować tabelę:
1. Do komórki B1 wpisujemy tytuł algorytmu
2. W komórkach B4 i B5 wprowadzamy wartość punktu x0 i y0 
3. W komórce B8 formułę wykorzystująca funkcję logiczną JEŻELI” w następujący sposób:


=JEŻELI(MODUŁ.LICZBY(3*B4+4*B5-4)/PIERWIASTEK(25)=0;
                 "punkt leży na prostej";"punkt nie leży na prostej")

Moduł.liczby - zwraca wartość bezwzględną liczby 
Pierwiastek - zawraca pierwiastek kwadratowy  liczby



Opracowała: Sylwia B.

ALGORYTM OBLICZAJĄCY SUMĘ n KOLEJNYCH LICZB NATURALNYCH

ALGORYTM OBLICZAJĄCY SUMĘ n KOLEJNYCH LICZB NATURALNYCH 

Jest to rodzaj algorytmu, w którym wszystkie instrukcje wykonywane są kolejno, bez konieczności rozpatrywania warunków.

Kolejność wykonywanych operacji w algorytmach tego typu jest zawsze taka sama i nie zależy od wczytywanych danych wejściowych. 
Schemat blokowy jest strukturą liniową, bez rozgałęzień. Program zaś zawiera wyłącznie operacje wejścia-wyjścia oraz instrukcje przypisania.



Specyfikacja:
Dane: Liczba naturalna: n>0.
Wynik: Suma n kolejnych liczb naturalnych większych od 0: s.
Lista kroków:
Krok 0. Wczytaj wartość danej n.
Krok 1. Przypisz s=[n(n+1)]/2.
Krok 2. Wypisz wynik s. Zakończ algorytm.

Schemat blokowy:

Program w C++:
//program oblicza sumę kolejnych liczb naturalnych: 1,2,...,n
#include <iostream>
using namespace std;
main ()
{
int n,s;  //n-liczby naturalne; s-suma
cout<<"podaj n: ";
cin>>n; 
s=n*(n+1)/2; //algorytm oblicza sumę kolejnych liczb naturalnych ze wzoru
cout<<"s = "<<s<<endl; 
return 0;
}

Rozwiązanie w Excel:


  1. Do komórki A1 wprowadzamy tytuł algorytmu tj. ALGORYTM OBLICZAJĄCY SUMĘ n KOLEJNYCH LICZB NATURLANYCH: 1, 2, …, n (n>0)
  2. Do komórki B3 wpisujemy  n=
  3. Do komórki B5 wpisujemy  s=; 
  4. Do komórki C3 (odpowiednia wartość dla n, którą wybieramy z klawiatury)
  5. W komórce C5 wpisujemy formułę obliczającą sumę n kolejnych liczb naturalnych  =C3*(C3+1)/2


Opracowała: Beata T.