Na zajęciach obowiązuje zakaz używania zmiennych globalnych !
#include <stdio.h> /* definicja funkcji */ int silnia(int n) { int i=2; int s=1; while( i < n+1 ) { s = s * i; i = i + 1; } return s; } float parabola(float x, float a, float b, float c) { return a * x * x + x * b + c; } int main() { int liczba, s; float y; printf("Podaj liczbe: "); scanf("%d", &liczba); s = silnia(liczba); printf("Silnia z %d wynosi %d\n",liczba,s); y = parabola( 2.0, -4, 2, 3.3); return 0; }
Zaimplementuj funkcję nwd
, która dla dwóch liczb całkowitych wyznaczy najmniejszy wspólny dzielnik za pomocą algorytmu Euklidesa.
Algorytm euklidesa
Dane: liczby całkowite dodatnie a
i b
a
jest równe b
to wartość a
jest najmniejsym wspólnym dzielnikiem i zakończ algorytma > b
to zastąp a
wartością a-b
i wróć do punktu 1a < b
to zastąp b
wartością b-a
i wróć do punktu 1Napisz program, który wczyta 2 liczby całkowite dodatnie i wyświetli ich najmniejszy wspólny dzielnik.
Przykład
Podaj dwie liczby calkowite: 20 15 nwd=5
Podaj dwie liczby calkowite: 144 233 nwd=1 Podaj dwie liczby calkowite: 4673826832 47382974392 nwd=8
Zaimplementuj funkcję o nazwie potega
, która dla danych argumentów x
(wartość rzeczywista) i y (wartość całkowita) wyznacza wartość potęgi xy
.
Napisz program, który wczyta dwie liczby x
i y
a następnie korzystając z funkcji potega
wypisze wartość xy
.
Spróbuj przystosować program tak aby działał poprawnie również dla wartości y<0
.
Przykład
Podaj dwie liczby: 2 2 2.000000 do potegi 10 wynosi 4.000000
Podaj dwie liczby: 2 10 2.000000 do potegi 10 wynosi 1024
Podaj dwie liczby: 2 -10 2.000000 do potegi -5 wynosi 0.031250
Podaj dwie liczby: 4.2 10 4.2 do potegi 10 wynosi 1708019.8
Zaimplementuj funkcję o nazwie czy_jest_pierwsza
, która dla podanej liczby całkowitej n
zwraca wartość 1 jeżeli n
jest liczbą pierwszą. W przeciwnym wypadku funkcja zwraca wartość 0.
Napisz program, który wczyta dodatnią liczbę całkowitą x
i wypisze wszystkie liczby pierwsze w zakresie od 1 do x
.
Przykład
n = 10 Liczby pierwsze z zakresu od 1 do 10 1 2 3 5 7
n = 100 Liczby pierwsze z zakresu od 1 do 100 1 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
#include <stdio.h> #define MAX 100 void wczytaj(float t[], int n) { int i; printf("\nPodaaj kolejne liczby:\n"); for(i=0;i<n;i++) { printf("tab[%d]=",i); scanf("%f",&t[i]); } } int main() { int n; float tablica[MAX]; printf("Podaj rozmiar tablicy: "); scanf("%d",&n); wczytaj(tablica,n); }
Do powyższego przykładu prezentującego użycie tablicy jako argumentu funkcji dodaj:
wyswietl
, która wyświetli n
pierwszych liczb rzeczywistych z podanej tablicy zmiennych typu float
suma
, która zwraca wartość sumy elementów podanej tablicy srednia
, która zwraca wartość średnią dla danej tablicy liczb typu float
o rozmiarze n
odchylenie
, która wyznaczy wartość odchylenia standardowego liczb zawartych w tablicy maxind
, która zwróci pozycję (wartość od 0 do n-1
) największej wartości z pośród n
pierwszych elementów tablicy sortuj
, która posortuje liczby w tablicy za pomocą algorytmu przez wybieranie (wykorzystaj tu funkcję maxind
)
Napisz program, który wczyta n
liczb rzeczywistych a następnie wyświetli wartość średnią, wartość odchylenia standardowego oraz posortowaną liste liczb.
Przykład:
Ile elementow ? n = 5 t[0] = 5.3 t[1] = 2.3 t[2] = -5.4 t[3] = 3.14 t[4] = 32 Suma = 37.340000 Srednia = 7.468000 Odchylenie = 12.787060 Posortowane elementy tablicy: t[0] = -5.400000 t[1] = 2.300000 t[2] = 3.140000 t[3] = 5.300000 t[4] = 32.000000
#include<stdio.h> int globalna; void f(void) { int lokalna = 6; globalna++; printf("wewnatrz funkcji: globalna = %d\tlokalna = %d\n",globalna,lokalna); } int main() { int lokalna; printf("globalna = %d\tlokalna = %d\n",globalna,lokalna); f(); printf("globalna = %d\tlokalna = %d\n",globalna,lokalna); return 0; }
#include <stdio.h> void dodaj(int a) { static int x = 0; /* zmienna statyczna */ int y = 0; /* zmienna automatyczna */ x = x + a; y = y + a; printf("x = %d\ty = %d\n",x,y); } int main() { dodaj(1); dodaj(3); dodaj(4); dodaj(1); return 0; }
Wersja iteracyjna
int silnia(int n) { int i, s=1; for(i=1; i < n+1 ; i++) s*= i; return s; }
Wersja rekurencyjna
int rsilnia(int n) { if(n <= 1) return 1; return n*rsilnia(n-1); }
Fibonacci
(w postaci iteracyjnej lub rekurencyjnej), która wyświetla n
pierwszych elementów ciągu Fibonacciego.n > 1
Newton
, która dla podanych dwóch liczb całkowitych oblicza wartość symbolu NewtonaGauss
, która dla podanej wartości centrum (wartości średniej) i rozmycia (odchylenia standardowego) oblicza wartość funkcji Gaussan
pierwszych elementów ciągu arytmetycznego n
pierwszych elementów ciągu geometrycznegon
wypisze wszystkie liczby pierwsze od 1 do n
korzystając z sita sita Eratotenesa