wyklady 2czesc, studia, 3 semestr, Programowanie


double f1(int n,double a[]);

int main()

{

int n,i;

double max,a[1000];

scanf("%d",&n);

for(i=0;i<n;i++)

scanf("%lf",&a[i]);

max=f1(n,a);

printf("max=%f\n",max);

}

double f1(int n,double a[])

{

double max;

int i;

max=a[0];

for(i=1;i<n;i++)

if(a[i]>max)max=a[i];

return max;

}

- informacja dla kompilatora

o funkcji f1

- deklaracje zmiennych

i tablicy

- czytanie ilości elementów

i elementów tablicy

- wywołanie funkcji

- drukowanie elementu

maksymalnego

- deklaracja funkcji

i parametrów formalnych

procedury

- deklaracja zmiennych funkcji

- przejęcie elementu zerowego

tablicy, jako maksymalnego

- sprawdzanie kolejnych

elementów tablicy

- przekazanie obliczonego max

do funkcji main

Zadanie obliczyć wartość wielomianu postaci:

0x01 graphic

za pomocą schematu Hornera

0x01 graphic

double horner(int m,double x,double b[]);

int main()

{

int n,i;

double x,w,a[1000];

scanf("%d",&n);

for(i=0;i<=n;i++)

scanf("%lf",&a[i]);

scanf("%lf",&x);

w=horner(n,x,a);

printf("w(%f)=%f\n",x,w);

}

double horner(int n,double x,double a[])

{

double w;

int i;

w=a[0];

for(i=1;i<=n;i++)

w = w*x + a[i];

return w;

}

Funkcje matematyczne - standardowa biblioteka math.h .

W języku C mamy dostępne następujące funkcje operujące na argumentach double:

sin(x) - sinus x,

wartość podana w radianach

cos(x) - cosinus

tan(x) - sin(x)/cos(x)

atan2(y,x) - arcus tangens y/x

pow(x,y) - xy

sqrt(x) - pierwiastek kwadratowy z x ≥ 0

fabs(x) - wartość bezwzględna z x

exp(x) - ex

log(x) - logarytm naturalny

log10(x) - logarytm dziesiętny

Zadanie. Napisać program obliczający:0x01 graphic

#include<math.h>

int main()

{

int i,n;

double a,b,c,d;

scanf("%d",&n);

for(i=1;i<=n;i++)

{

d=i;

a=2.0;

b=1.0/d;

c=pow(a,b);

printf("Pierwiastek %d-go stopnia z 2

= %18.16f\n",i,c);

}

}

Pierwiastek 1-go stopnia z 2 =

2.0000000000000000

Pierwiastek 2-go stopnia z 2 =

1.4142135623730951

Pierwiastek 3-go stopnia z 2 =

1.2599210498948732

Pierwiastek 4-go stopnia z 2 =

1.1892071150027210

Pierwiastek 5-go stopnia z 2 =

1.1486983549970351

Pierwiastek 6-go stopnia z 2 =

1.1224620483093730

Pierwiastek 7-go stopnia z 2 =

1.1040895136738123

Pierwiastek 8-go stopnia z 2 =

1.0905077326652577

Pierwiastek 9-go stopnia z 2 =

1.0800597388923061

Funkcje rekurencyjne.

W języku C funkcja może wywoływać samom siebie. Podczas wywołania rekurencyjnego sporządzana jest kopia wszystkich zmiennych używanych przez funkcję wywołującą. Następnie przekazywane są argumenty do funkcji do funkcji wywołanej. Przedstawmy obecnie rekurencyjny algorytm obliczania silni i porównajmy go z algorytmem tradycyjnym wykorzystującym pętlę.

int silnia(int n)

{

if(n>0) return n*silnia(n-1);

else return 1;

}

int main()

{

int k,r;

printf("Podaj n=");

scanf("%d",&k);

r=silnia(k);

printf("silnia(%d)=%d\n",k,r);

}

int silnia(int n);

int main()

{

int k,r;

printf("Podaj n=");

scanf("%d",&k);

r=silnia(k);

printf("silnia(%d)=%d\n",k,r);

}

int silnia(int n)

{

int i,s;

s=1;

for(i=1;i<=n;i++)

s*=i;

return s;

}

Ogólnie rekurencja nie przyspiesza działania programu ani nie zmniejsza ilości zajmowanego przez program miejsca w pamięci operacyjnej. Jednak postać rekurencyjna jest często bardziej czytelna od programu napisanego za pomocą pętli i z użyciem tablic. Zadanie odwracania ciągu znaków w tekście pokazuje, jak można zrealizować program za pomocą funkcji rekurencyjnej, jaki zwykłej pętli while.

#include<stdio.h>

int od(char a[],int k,int l)

{

char z;

if(k<l){

z=a[k];

a[k]=a[l];

a[l]=z;

od(a,k+1,l-1);

}

else return 0;

}

int main()

{

int i;

char w[1024];

i=0;

while((w[i]=getchar())!='\n')

i++;

w[i]='\0';

od(w,0,i-1);

printf("%s\n",w);

}

int od(char a[],int k,int l)

{

char z;

while(k<l)

{ z=a[k];

a[k]=a[l];

a[l]=z;

k++;

l--;

}

return 0;

}



Wyszukiwarka

Podobne podstrony:
wyklady-pwir, Studia, 6. Semestr, Przetwazanie wspolbiezne
ZZL-wyklady, Materiały STUDIA, Semestr III, Zarządzanie zasobami ludzkimi, ZZL
KIEROWANIE PROCESAMI INWESTYCYJNYMI - Notatki z wykładów - WODZU, STUDIA, semestr 5, Kierowanie Proc
Marketing (wykład ostatni), studia, semestr 3, marketing
SMiPE - Kolokwium wykład ściąga 1, STUDIA, SEMESTR IV, Statystyka matematyczna i planowanie eksperym
zarzadzanie wyklad, Edukacja, studia, Semestr VIII, Zarządzanie, zarzadzanie
wyklady-pwir, Studia, 6. Semestr, Przetwazanie wspolbiezne
Hodowle komórek i tkanek zwierzęcych wykład 1 konspekt, Studia, I semestr III rok, Praktikum z hodow
Socjologia wychowania - wyklady.x, Pedagogika - studia, I semestr - ogólna, Socjologia wychowania
psycho wykłady (1), Materiały STUDIA, Semestr VII, Psychologia zarządzania
proj, Edukacja, studia, Semestr V, Programowanie Mikrokomputerów, Ćwiczenia
SMiPE - Kolokwium wykład ściąga 2, STUDIA, SEMESTR IV, Statystyka matematyczna i planowanie eksperym
wyklady z kartografii2, Studia, 5 semestr, kartografia, egzamin
Wykład IVPNOM, STUDIA, SEMESTR I, PNOM
wyklady-pwir, Studia, 6. Semestr, Przetwazanie wspolbiezne
Zadania dodatkowe, studia wsiz, semestr 1 2, programowanie LAB wyklad, Programowanie, BFryc, 1IID, Z
Laboratorium nr 2 tablice, studia wsiz, semestr 1 2, programowanie LAB wyklad, Programowanie, BFryc,
met.bad.ped.program, Studia, Semestry, semestr IV, Metody badań pedagogicznych

więcej podobnych podstron