Zadanie 1

Podaj specyfikację zadania i skonstruuj algorytm w postaci listy kroków, schematu blokowego oraz programów w językach C++ i Pascal. Dana jest liczba całkowita n. Jeżeli n jest większe lub równe 1, należy obliczyć sumę ciągu n kolejnych liczb naturalnych 1,2,...,n, w przeciwnym wypadku wyświetlić komunikat "n<1".

Specyfikacja

Wejście: Dowolna liczba całkowita n
Wyjście: Jeśli n≥1 to s - suma n kolejnych liczb naturalnych, w przeciwnym wypadku komunikat: "n<1"

Lista kroków

Krok 0. Wczytaj wartość danej n
Krok 1. Jeśli n≥1, to przypisz s = n * ( n + 1 ) / 2, wypisz s i zakończ algorytm.
Krok 2. (W tym przypadku n<1). Wypisz komunikat "n<1". Zakończ algorytm.

Schemat blokowy

center

Program w języku C++

#include <iostream>

using namespace std;
main()
{
int n, s;
cout<<"podaj n: ";
cin>>n;
if (n>=1) {s=n*(n+1)/2; cout<<"s = "<<endl;}
else cout<<"n < 1"<<endl;
return 0;
}

Program w języku Pascal

program suma
var n, s: integer;
begin
  write('podaj n: ');
  readln(n);
if n>=1 then begin s:=n*(n+1) div 2; writeln('s = ',s) end
else writeln('n < 1')
end.

Zadanie 2

Podaj specyfikacje zadania i skonstruuj algorytm w postaci schematu blokowego sprawdzający czy wprowadzona z klawiatury liczba całkowita jest parzysta.

Specyfikacja

Wejście: Dowolna liczba całkowita n
Wyjście: Jeśli liczba n jest parzysta to wyświetlić komunikat: "Liczba n jest parzysta". W przeciwnym wypadku wyświetlić komunikat: "Liczba n jest nieparzysta".

Schemat blokowy

center

Zadanie 3

Podaj specyfikację zadania i skonstruuj algorytm w postaci listy kroków i programu sprawdzający, która z wprowadzonych z klawiatury trzech różnych liczb całkowitych a, b i c jest największa.

Specyfikacja

Wejście: Dowolne trzy różne liczby całkowite a, b, c; a≠b≠c
Wyjście: Odpowiedzni komunikat mówiący, która z wprowadzonych liczb: a, b lub c jest największa.

Lista kroków

Krok 0. Wczytaj wartości danych a, b, c.
Krok 1. Jeśli a>b, to przejdź do kroku 2, w przeciwnym wypadku przejdź do kroku 3.
Krok 2. Jeśli a>c, to wypisz komunikat "Najwiekszą liczbą jest liczba a", w przeciwnym wypadku wypisz komunikat: "Największą liczbą jest liczba c" i zakończ algorytm.
Krok 3. Jeśli b>c, to wypisz komunikat: "Największą liczbą jest liczba b", w przeciwnym wypadku wypisz komunikat: "Największą liczbą jest liczba c" i zakończ algorytm.

Program w języku C++

#include <iostream>

using namespace std;
main()
{
int a, b, c;
cout<<"podaj a, b, c: ";
cin>>a>>b>>c;
if (a>b) 
	if (a>c) cout<<"Najwiekszą liczbą jest liczba a";
	else cout<<"Największą liczbą jest liczba c"<<endl;
else
	if (b>c) cout<<"Największą liczbą jest liczba b";
	else cout<<"Największą liczbą jest liczba c"<<endl;
return 0;
}

Zadanie 4

Podaj specyfikację zadania i skonstruuj algorytm w postaci schematu blokowego i programu sprawdzający, która z wprowadzonych z klawiatury czterech różnych liczb całkowitych a, b, c i d jest najmniejsza.

Specyfikacja

Wejście: Dowolne cztery różne liczby całkowite a, b, c, d; a≠b≠c≠d
Wyjście: Odpowiedni komunikat mówiący, która z wprowadzonych liczb: a, b, c lub d jest najmniejsza.

Schemat blokowy

center

Program w języku C++

#include <iostream>

using namespace std;
main()
{
int a, b, c, d;
cout<<"podaj a, b, c, d: ";
cin>>a>>b>>c>>d;
if (a<b) 
   if (a<c) 
        if (a<d) cout<<"Najmniejszą liczbą jest liczba a";
        else cout<<"Najmniejszą liczbą jest liczba d"<<endl;
   else 
       if (c<d) cout<<"Najmniejszą liczbą jest liczba c";
       else cout<<"Najmniejszą liczbą jest liczba d"<<endl;
else
    if (b<c)
        if (b<d) cout<<"Najmniejszą liczbą jest liczba b";
        else cout<<"Najmniejszą liczbą jest liczba d"<<endl;
    else 
        if (c<d) cout<<"Najmniejszą liczbą jest liczba c";
        else cout<<"Najmniejszą liczbą jest liczba d"<<endl;
return 0;
}

Zadanie 5

Na rysunku przedstawiono schemat blokowy pewnego algorytmu. Podaj wartości zmiennych x i y po wykonaniu działań, jeśli na początku wczytamy x=5, y=7. Napisz program realizujący ten algorytm

center

Odpowiedź

Po wczytaniu wartości x=5 i y=7 i wykonaniu działań, na wyjściu otrzymamy następujące wartości zmiennych:
  • x=6
  • y=2

Program w języku C++

#include <iostream>

using namespace std;
main()
{
double x, y, z;
cout<<"podaj x, y: ";
cin>>x>>y;
z=5;
x=x+2;
if (x<y) 
    {x=x*z;
    y=y-1;
    cout<<"x = "<<x<<endl;
    cout<<"y = "<<y<<endl;}
else
    if (x==y)
        {y=y-z;
        x=x-1;
        cout<<"x = "<<x<<endl;
        cout<<"y = "<<y<<endl;}
    else
        {y=y+z;
        x=x+1;
        cout<<"x = "<<x<<endl;
        cout<<"y = "<<y<<endl;}
return 0;
}

Zadanie 6

Przeanalizuj podany poniżej kod programu:

double x=0, y=1;
if (x) x++;
else if (x+y) y*=x+3;
     else if (y) x-=y*3;
x+=y;
cout<<"x = "<<x<<"\ty = "<<y<<endl;
Podaj wartości zmiennych x i y po wykonaniu podanego algorytmu. Utwórz schemat blokowy tego algorytmu.

Odpowiedź

Po wczytaniu wartości x=0 i y=1 i wykonaniu działań, na wyjściu otrzymamy następujące wartości zmiennych:
  • x=3
  • y=3

Zadanie 7

Pole trójkąta można wyznaczyć na podstawie długości jego boków a, b i c, korzystając z wzoru Herona:




Podaj specyfikację zadania i napisz program obliczający pole trójkąta za pomocą wzoru Herona. Nie zapomnij sprawdzić, czy liczba podpierwiastkowa jest nieujemna.

Specyfikacja

Wejście: Dowolne trzy dodatnie liczby rzeczywiste a, b, c
Wyjście: Jeśli trójkąt istnieje to P-pole trójkąta, w przeciwnym wypadku komunikat: "Z podanych odcinków nie można zbudować trójkąta."

Program w języku C++

#include <iostream>
#include <cmath>

using namespace std;

int main()
{
    double a, b, c, p, P;
    cout<<"Podaj a, b, c: ";
    cin>>a>>b>>c;
    p=(a+b+c)/2;
    if(sqrt(p*(p-a)*(p-b)*(p-c))<=0) cout<<"Z podanych odcinków nie można zbudować trójkąta."<<endl;
    else {P=sqrt(p*(p-a)*(p-b)*(p-c)); cout<<"P = "<<P<<endl;}
    return 0;
}