Lista 6 -- Wstęp do informatyki, W. Hebisch
Uwaga: W zadaniach 1 i 2 poszczególne punkty to naprawdę oddzielne lecz podobne zadania. Prosiłbym przemyśleć wszystkie warianty, ale wystarczy napisać program dla jednego z nich.

Zadanie 1

Wzorując się na podanych przykładach napisać program który będzie kopiował swoje standartowe wejście na standartowe wyjście, przy tym:
  1. na początku każdej linii dopisze ciąg znaków "-->" (dwa minusy i znak większości), a na końcu dopisze "<--" (znak mniejszości i dwa minusy)
  2. jak wyżej, ale wypisze tylko linie zaczynające się od spacji
  3. podzieli linie zastępując dwukropek znakiem nowej linii, a koniec linii pustą linią
  4. odwróci efekt poprzedniego programu (połączy linie, oddzielając części dwukropkami)
  5. zastąpi każdą linię pliku sumą występujących w niej liczb (zakładamy że plik składa się z liczb oddzielonych spacjami)
  6. podzieli linie zastępując przecinek znakiem nowej lini, lecz znaki poprzedzone przez '\' kopiujemy bez zmiany (razem ze '\', tzn '\,' nie spowoduje podzielenia linii). Koniec linii zastępujemy pustą linią.
  7. podzieli plik na słowa, tak by każde słowo było w oddzielnej linii. Dla uproszcznia przyjąć że słowa składają się z dowolnych znaków różnych od odstępu i znaku nowej linii i są oddzielowne odstępami.
  8. usunie z linii początkowe spacje
  9. usunie z linii końcowe spacje
  10. usunie z linii początkowe i końcowe spacje
  11. wypisze tylko linie zawierające literę 'A'
  12. usunie końcowe spacje z linii zawierających literę 'A'

Zadanie 2

Napisać funkcję ktorej argumentami są liczba `n' i tablice `a', `b' i `c' liczb zmiennopozycyjnych (typu double) długości `n'. Funkcja ma w tablicy `c' umieścić
  1. sumy elementów z `a' i `b'
  2. różnice elementów z `a' i `b'
  3. iloczyny elementów z `a' i `b'
  4. maksimum elementów z `a' i `b'
  5. minimum elementów z `a' i `b'
tzn. element `c[k]' ma być wynikiem odpowiedniej operacji (sumy, różnicy, iloczynu, maksimum albo minimum) elementów `a[k]' i `b[k]'. Podobnie, ale funkcja ma mieć tylko dwie tablice (i `n') jako argumenty, wynik ma zastąpić (zniszczyć) pierwszy argument.
Napisać funkcję ktorej argumentami są liczba `n', tablica `a' liczb zmiennopozycyjnych (typu double) długości `n' i liczba `b'.
  1. Funkcja ma obliczyć ilość elementów `a' wiekszych niż `b',
  2. funkcja ma obliczyć sumę elementów `a' wiekszych niż `b',
  3. funkcja ma pomnożyć każdy element z `a' przez `b',
  4. funkcja ma zastąpić każdy element z `a' wiekszy niż `b' przez `b',
  5. funkcja ma zastąpić każdy element z `a' którego wartość bezwzględna jest większa niż `b' przez `b' lub `-b' (tak by znak elementu się nie zmienił).

Zadanie 3

Co obliczają poniższe funkcje:
  1. double fun1(double arg)
    {
    	if (arg>0) { 
    		return arg;
    	} else { 
    		retunr -arg;
    	}
    }
    
  2. unsigned int fun2(unsigned int a, unsigned int b)
    {
            unsigned int wynik=0;
            while(a>0) {
                    if(a%2) {
                            wynik = wynik + b;
                    }
                    a = (a/2);
                    b = b + b;
            }
            return wynik;
    }
    
  3. int fun3(int k, int a[], int n)
    {
            int wynik =0;
            int i;
            for(i=0; i<n; i++) {
                    if(k == a[i]) {
                            wynik = wynik + 1;
                    }
            }
            return wynik;
    }
    
  4. void fun4(int a[], int b[], int n)
    {
    	int i;
    	for(i=0; i<n; i++) {
    		a[i] = a[i] + b[i];
    	}
    }
    

Zadanie 4

Co wypiszą poniższe programy:
  1. #include <stdio.h>
    void fun(int a[])
    {
    	int tmp=a[0];
    	a[0] = a[1];
    	a[1] = tmp;
    }
    int main(void)
    {
    	int a[2]={5,2};
    	fun(a);
    	printf("%d\n", a[1]);
    	return 0;
    }
    
  2. #include <stdio.h>
    void fun(int a[])
    {
            int tmp=a[0];
            a[0] = a[1];
            a[1] = tmp;
    }
    int main(void)
    {
            int a[2]={5,2};
            fun(a);
            fun(a);
            printf("%d\n", a[0]);
            return 0;
    }
    
  3. #include <stdio.h>
    int fun(int a[])
    {
            int b;
            b=a[0]+a[1];
            return b;
    }
    int main(void)
    {
            int a[2]={5,2};
            int b = 3;
            fun(a);
            printf("%d\n", b);
            return 0;
    }
    
  4. #include <stdio.h>
    int fun(int a[])
    {
            int b;
            b=a[0]+a[1];
            return b;
    }
    int main(void)
    {
            int a[2]={5,2};
            int b = fun(a) + 3;
            printf("%d\n", b);
            return 0;
    }
    
  5. #include <stdio.h>
    int fun(int a)
    {
            a = a + 5;
            return a;
    }
    int main(void)
    {
            int a=5;
            int b=fun(a);
            printf("a=%d, b=%d\n", a, b);
            return 0;
    }
    
  6. #include <stdio.h>
    int fun(int a)
    {
            a = a + 5;
            return a;
    }
    int main(void)
    {
            int a=5;
            a=fun(a);
            printf("%d\n", a);
            return 0;
    }