Zad_dod_el_prog_2.nb

1

Zadanie 1.1. Dla dowolnej listy o elementach z przedziału H−10, 10L

i długości n równej losowo wybranej liczbie z przedziału H5, 10L, wykonać czynności : sprawdzić czy suma wszystkich elementów jest dodatnia, jeśli tak to posortować listę rosnąco, jeśli nie, to posortować listę melejąco Hwykorzystać funkcje Apply i Map oraz instrukcję warunkową If L

Przykładowy wynik :

proc@Random@Integer, 85, 10<DD

Lista wyjściowa : 8−7, −4, −3, −9, −1, 8<

Suma elementów listy : −16

Lista ostateczna : 849, 16, 9, 81, 1, 64<

proc@Random@Integer, 85, 10<DD

Lista wyjściowa : 87, 2, −1, 8, 3, 3, −8<

Suma elementów listy : 14

Lista ostateczna : 8−8, −1, 2, 3, 3, 7, 8<

Rozwiązanie.

proc@n_D := Module@8lista, suma<,

lista = Table@Random@Integer, 8−10, 10<D, 8n<D;

Print@listaD;

suma = Apply@Plus, listaD;

Print@sumaD;

If@suma > 0,

Sort@listaD,

f@x_D := x ^ 2;

Map@f, listaD

D

D

proc@Random@Integer, 85, 10<DD

8−7, −4, −3, −9, −1, 8<

−16

849, 16, 9, 81, 1, 64<

Zadanie 2.1. Dla dowolnej listy złożonej wykonać

czynności : obliczyć iloczyn elementów podlist o parzystej długości Hwykorzystać funkjcę Apply, pętlę For oraz instrukcję warunkową If L

Przykładowy wynik :

proc@882, 4, 1, −3<, 8−1, −2, 1, 3<, 89, 3, 10<<D

Iloczyn podlisty 1 jest równy : −24

Iloczyn podlisty 2 jest równy : 6

Rozwiązanie.

proc@lista_D := Module@8il<,

For@i = 1, i ≤ Length@listaD, i ++,

If@EvenQ@Length@lista@@iDDDD,

il = Apply@Times, lista@@iDDD;

Print@"Iloczyn podlisty ", i, " jest równy: ", ilD

D

D

D

Zad_dod_el_prog_2.nb

2

proc@882, 4, 1, −3<, 8−1, −2, 1, 3<, 89, 3, 10<<D

Iloczyn podlisty 1 jest równy: −24

Iloczyn podlisty 2 jest równy: 6

Zadanie 3.1. Dla dowolnej listy złożonej

wykonac czynności : jeśli ilość podlist jest parzysta,

to pierwszy element każdej podlisty podnieść do kwadratu

Hwykorzystać funkcję MapAt, pętlę For oraz instrukcję warunkową If L

Przykładowy wynik :

proc@882, 4, 1, −3<, 8−1, −2, 1, 3<<D

Lista ostateczna : 884, 4, 1, −3<, 81, −2, 1, 3<< Rozwiązanie.

proc@lista_D := Module@8<,

lista1 = lista;

If@EvenQ@Length@lista1DD,

For@i = 1, i ≤ Length@lista1D, i ++,

f@x_D := x ^ 2;

lista1@@iDD = MapAt@f, lista1@@iDD, 1DDD;

Print@lista1D

D

proc@882, 4, 1, −3<, 8−1, −2, 1, 3<<D

884, 4, 1, −3<, 81, −2, 1, 3<<

Zadanie 4.1. Dla dowolnej listy złożonej utworzyc nową listę, której elementami będą sumy poszczególnych podlist

Przykładowy wynik :

proc@880, −7, 3<, 810, −4<, 8−8, 10, 3<<D

Lista ostateczna : 8−4, 6, 5<

Rozwiązanie.

proc@lista_D := Module@8lista1 = 8<<,

For@i = 1, i ≤ Length@listaD, i ++,

AppendTo@lista1, Apply@Plus, lista@@iDDDD

D;

Print@lista1D

D

proc@880, −7, 3<, 810, −4<, 8−8, 10, 3<<D

8−4, 6, 5<