background image

06

Metodyka i techniki programowania
Obliczenia w C
mgr inż. Wojciech Szmuc

2007-11-05

Ćwiczenie 1. 

if/else

, operatory logiczne oraz porównania

1. Zaimplementuj kod:

/* TODO: wczytanie zmiennej "rzeczywista" */

/* nalezy dopisac */

int calkowita=rzeczywista;

printf("%f - liczba ", rzeczywista);
if (rzeczywista==calkowita)

/* operator porownania */

{

printf("calkowita");
printf("\n");

}
else
{

printf("rzeczywista\n");

};

2. Sprawdź co się stanie po wykasowaniu nawiasów 

{

 oraz 

}

 w powyższym kodzie.

3. Wykasuj linijkę zawierającą 

else

 oraz linijki poniżej. Sprawdź działanie programu.

4. Zamień 

==

 na 

=

 i sprawdź działanie programu – z czego ono wynika?

5. Dopisz 

;

 na końcu linijki zawierającej warunek. Jak teraz działa program?

6. Linijkę zawierającą 

if

 zmodyfikuj w następujący sposób:

if (rzeczywista==calkowita && calkowita>0)

/* warunki musza byc spelnione */
/* rownoczesnie */

oraz   zamień  

prinrf("calkowita");

  na  

printf("naturalna");

.   Sprawdź   działanie 

programu.

7. Zmodyfikuj program tak, aby rozpoznawał liczby naturalne, całkowite oraz rzeczywiste.

Zadanie

Napisz program, który sprawdzi, czy wpisany rok jest przestępny. Rok jest przestępny 
jeżeli jest podzielny przez 4 oraz niepodzielny przez 100 lub jest podzielny przez 400 

(np. 1900 nie był przestępny natomiast 2000 był przestępny).

Ćwiczenie 2. Znaki oraz stałe łańcuchowe

1. Zaimplementuj:

char znak;

/* zmienna przechowujaca znaki */

printf("Wpisz znak: ");
scanf("%c", &znak);
printf("Wpisano znak: %c\n", znak);

2. Zmodyfikuj program tak, aby wypisywał również kod ASCII wprowadzonego znaku.

3. Zmień linijkę z deklaracją zmiennej na:

const char znak='a';

Spróbuj zmienić zawartość 

znak

 w programie.

Sprawdź, czy tak samo zachowa się stały wskaźnik oraz stały wskaźnik do stałej.

4. Zaimplementuj:

char *wLancuch="napis";

/* wskaznik do stalej lancuchowej */

printf("\"wLancuch\" wskazuje na: \"%s\"", wLancuch);

5. Sprawdź rozmiar zmiennej wskaźnikowej 

wLancuch

.

Czy zmiana długości łańcucha znaków wpływa na rozmiar zmiennej wskaźnikowej?

Czy zmiana typu zmiennej wskaźnikowej powoduje zmianę jej wielkości?

6. Spróbuj pobrać łańcuch do zadeklarowanej jak w punkcie 1. zmiennej.

7. Podglądnij skompilowany program w edytorze i wyszukaj w nim łańcuch 

napis

 lub inny, 

jeżeli modyfikowana była wartość zmiennej w

Lancuch

.

Zastanów się nad otrzymanymi wynikami.

Zadanie

Napisz program, który obliczy miejsce (numer) wprowadzonej litery w alfabecie. Program 

ma działać na literach dużych oraz małych. Należy uwzględnić możliwość wprowadzenia 
innego znaku niż litera.

background image

Ćwiczenie 3. Biblioteka 

math

1. Zaimplementuj:

float y=pow(2, 5);

/* funkcja podnoszaca do potegi */

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

i sprawdź działanie programu.

2. Spróbuj   zmodyfikować   (i   sprawdzić)   kod   tak,   aby   pobierał   z   konsoli   podstawę   oraz 

wykładnik potęgi.
Dopisz linijkę 

#include <math.h>

 i spróbuj skompilować.

Spróbuj skompilować program z opcją 

-c

 (co oznacza ta opcja?).

Zastanów się na jakim etapie tworzenia programu wystąpił błąd.

Przeczytaj instrukcję funkcji 

pow

 (

man pow

).

Zastosuj się do zalecenia tam przedstawionego.

3. Dopisz   kod   umożliwiający   przedstawienie   wyniku   działania   odwrotnego   wobec 

przedstawionego   w punkcie   1.   tak   aby   uzyskać   wartość   wejściową

 

(

y x , xf

1

).

4. Sprawdź wyniki działania programu wpisując jako podstawę 

2

  a jako wykładnik: 

1

,  

0.1

0.01

0.001

0.0001

0.00001

0.000001

0.0000001

0.00000001

0.000000001

 

5. Sprawdź   wyniki   działania   programu   z   podstawą  

2000

  oraz   ostatnimi   dwoma 

wykładnikami z poprzedniego punktu.
Zastanów się z czego wynikają otrzymane rezultaty.

6. Sprawdź jakie funkcje zawiera biblioteka 

math

.

7. Zweryfikuj wartości zwracane przez te funkcje (na przykład monotoniczność w okolicach 

ekstremów).

Zadanie

Napisz program, który oblicza moduł oraz argument główny liczby zespolonej. Liczbę 
należy pobrać z konsoli (2 zmienne – 

x

 oraz 

y

).

Liczbę zespoloną w postaci algebraicznej zapisuje się jako: 

=x yi

 (interpretuje się 

jako punkt o współrzędnych 

x , y 

).

Moduł liczby zespolonej: 

z∣=

x

2

y

2

 (odległość punktu 

x , y 

 od początku układu 

współrzędnych)
Argument główny liczby zespolonej gdy 

z∣≠0

:

=

{

arccos

x

z

, y0

arccos 

x

z



2⋅ , y0

gdy 

y=0

=

{

0, 0

, x 0

gdy 

z∣=0

 nie ma określonej wartości.

 jest kątem pomiędzy osią 

Ox

 a odcinkiem łączącym punkt 

0, 0

 z 

x , y 

Przedstawiona reprezentacja liczby zespolonej (

z

,  

) może być rozpatrywana 

jako współrzędne biegunowe punktu 

x , y 

.