Instrukcje sterujące - warunki i pętle

Przykład

dodatnia.c
#include <stdio.h>
/* program sprawdza czy podana liczba jest dodatnia */
 
int main()
{
   float x;
 
   printf("Podaj liczbe: ");
   scanf("%f", &x);
 
   if( x > 0 )
      printf("Liczba %f jest wieksza od zera\n", x);
 
   return 0;
}

Operator = to operator przypisania wartości do zmiennej a operator == to operator sprawdzający, czy wartości są równe.

int x = 0;
if ( x = 1 ) printf("Czy to jest błąd?");

parzysta.c
#include <stdio.h>
/* program sprawdza czy podana liczba jest parzysta */
 
int main()
{
   int x;
 
   printf("Podaj liczbe calkowita: ");
   scanf("%d", &x);
 
   if( x % 2 == 0 )
   {
      printf("Liczba %d jest parzysta\n", x);
   }
   else
   {
      printf("Liczba %d jest nieparzysta\n", x);
   }
 
   return 0;
}

W języku C nie ma typu logicznego.
Wartość całkowita 0 jest fałszem a wartość całkowita różna od 0 - prawdą.

if ( 1 ) printf("Prawda czy fałsz?");

Dodatkowe ćwiczenia Rozszerz działanie programu z ostatniego ćwiczenia (sprawdzającego, czy liczba jest parzysta) o następujące operacje:

  • wyświetl informację, czy podana liczba jest podzielna przez 3,
  • wyświetl informację o tym, czy ostatnią cyfrą podanej liczby jest 1,
  • jeśli liczba jest większa niż 100 to wyświetl ostanie 2 cyfry liczby

Napisz program do wyznaczania miejsc zerowych równania kwadratowego $$ y = a x^2 + bx +c$$

Dane: trzy liczby rzeczywiste określające parabolę: $a$, $b$, $c$
Wynik: informacja o ilości miejsc zerowych (lub ich braku) oraz wartości miejsc zerowych $x_1$, $x_2$

Uwaga Do obliczania pierwiastka kwadratowego wykorzystaj funkcję sqrt() z biblioteki math.h.

Kompilując program korzystający z funkcji matematycznych dla kompilatora GCC należy dodać opcję -lm, np.:

cc -lm pierwiastek.c -o pierwiastek

Przykład:

 1
 2
 3
 Brak miejsc zerowych
1
-4
-4
Jedno miejsce zerowe 2.000000
1
0
-4
Dwa miejsca zerowe -2.000000 i 2.000000

Dodatkowe ćwiczenia

Do programu obliczającego pierwiastki równania kwadratowego dodaj instrukcje weryfikujące, czy rzeczywiście $f(x_1)=0$ oraz $f(x_2)=0$.

Sprawdź, czy program poprawnie wyznacza miejsca zerowe równania $y = x^2 - 6.433 x + 0.009474$ oraz $y = 0.2 x^2 - 56 x + 1$.

Jeśli występują niedokładności to popraw program w taki sposób aby je zniwelować.

Przykład:

sekwencja.c
#include <stdio.h>
/* program wyswietla sekwencje liczb calkowitych od 1 do podanej przez uzytkownika wartosci */
 
int main()
{
   int liczba;
   int i = 0; 
 
   printf("Podaj liczbe: ");
   scanf("%d", &liczba);
 
   while(i <= liczba) 
   {
      printf("%d\n",i);
      i = i + 1;
   }
 
   return 0;
}

Napisz program, który wczytuje kolejno liczby rzeczywiste aż do momentu gdy użytkownik poda wartość 0, po czym wyświetla sumę wczytanych liczb.

Dane: ciąg liczb rzeczywistych zakończonych wartością 0
Wynik: suma podanych liczb

Przykład:

 Wprowadz liczby. 
 Wartosc 0 konczy program.
 1
 2
 3
 0
 suma 6.000000
 Wprowadz liczby. 
 Wartosc 0 konczy program.
 5
 3.1
 -2.5
 0
 suma 5.600000

Napisz program o nazwie statystyka.c, który rozszerza działanie programu z ostatniego ćwiczenia w taki sposób, że dla podanego ciągu liczb wyświetla:

  • ilość wprowadzonych liczb
  • ilość liczb większych od 0
  • suma
  • wartość średnia
  • wartość minimalna
  • wartość maksymalna

Końcowa wartość 0 nie jest brana do obliczeń.

Dane: ciąg liczb rzeczywistych zakończonych wartością 0
Wynik: ilość podanych liczb, ilość liczb większych od 0, suma, średnia, wartość minimalna i maksymalna z podanych liczb

Sum,ę wartość średnią, minimalną i maksymalną wyświetl z dokładnością do 1 miejsca po przecinku.

Przykład:

5
3.1
-2.5
0
ilosc        3
dodatnie     2
suma       5.6
srednia    1.9
min       -2.5
max        5.0