Przykładowerozwiązania. 1. Napisz program, w którym przy użyciu instrukcji case będzie możliwy następujący wybór: 1-wypelnia tablice jednowymiarową liczbami pseudolosowymi z zakresu od 0 do 100 2- wypisuje liczby z tablicy na ekranie 3- zapisuje liczby do pliku o nazwie pliktab.txt 4- odczytuje liczby z pliku o nazwie pliktab.txt 5- kooczy działanie Punkty od 1-4 mają byd osobnymi procedurami. Instrukcja wyboru ma się powtarzad dopóki nie wywołamy zakooczenia działania (punt 5). Zadanie 1. program tablos; uses crt; const n=5; vartab:array[1..n] of integer; m:integer; procedure wyptab; var i:integer; randomize; tab[i]:=random(100); procedure pisztab; var i:integer; writeln(i,'=',tab[i]); procedure zapisztab; varplik:text; i:integer; assign(plik,'pliktab.txt'); writeln(plik,tab[i]);
procedure odczyttab; varplik:text; wpis:string; assign(plik,'pliktab.txt'); reset(plik); repeat readln(plik,wpis); writeln(wpis); until eof(plik); writeln('wybierz dzialaniedotyczace tablicy'); writeln('1-wypelnianie, 2-wypisanie, 3-zapis, 4-odczyt, 5-wyjscie'); repeat readln(m); case m of 1:wyptab; 2:pisztab; 3:zapisztab; 4:odczyttab; 5:halt; until m=5; 2. Napisz program, który obliczy pierwiastki równania kwadratowego o postaci ax 2 + bx + c = 0. Program ma wczytad a,b,c i na tej podstawie obliczyd: = b 2 4ac, jeśli > 0 to x 1 = b x 2 = b+,,dwa różne pierwiastki- jeśli = 0 to x 1,2 = b,podwójny pierwiastek- jeśli < 0 to x 1 = b i x 2 = b+i,,dwa różne urojone pierwiastki-. Pierwiastki mają zostad zapisane do pliku pierwiastki.txt Wskazówka: W ostatnim warunku oblicz osobno b/ oraz sqrt(abs(delta))/ a pomiędzy wstaw literkę i. Zadanie 2. program rkwadratowe; usescrt;
var delta,x1,x2,xr,xu,x12,a,b,c:real; plik:text; assign(plik,'pierwiastki.txt'); writeln('ax^2+bx+c=0'); write('podaj a='); readln(a); write('podaj b='); readln(b); write('podaj c='); readln(c); delta:=sqr(b)-(4*a*c); writeln('delta=',delta:0:3); if delta>0 then x1:=(-b-sqrt(delta))/(2*a); x2:=(-b+sqrt(delta))/(2*a); writeln('rownanie ma dwa pierwiaski rzeczywiste'); writeln('x1=',x1:0:3,' x2=',x2:0:3); writeln(plik,'x1=',x1:0:3,' x2=',x2:0:3); end else if delta=0 then x12:=(-b)/(2*a); writeln('rownanie ma jeden podwojny pierwiastek rzeczywisty'); writeln('x12=',x12:0:3); writeln(plik,'x12=',x12:0:3); end else if delta<0 then xr:=(-b)/(2*a); xu:=(sqrt(abs(delta)))/(2*a); writeln('rownanie ma dwa urojone pierwiastki'); writeln('x1=',xr:0:3,' -i',xu:0:3); writeln('x2=',xr:0:3,' +i',xu:0:3); writeln(plik,'x1=',xr:0:3,' -i',xu:0:3); writeln(plik,'x2=',xr:0:3,' +i',xu:0:3);
3. Napisz program, który doda dwie macierze A *2x2+ i B *2x2+ oraz zapisze wynik do pliku macierzsumy.txt ( użyj procedur ). Zadanie 3. program sumaab; usescrt; const n=2; vara,b,c:array[1..n,1..n] of integer; i,j:integer; procedurewczytaja; write('a[',i,',',j,']='); readln(a[i,j]); procedure wczytajb; write('b[',i,',',j,']='); readln(b[i,j]); procedure sumaab; c[i,j]:=a[i,j]+b[i,j]; procedurezapisaniewyniku; varplik:text; assign(plik,'macierzsumy.txt'); writeln('c[',i,',',j,']=',c[i,j]); writeln(plik,'c[',i,',',j,']=',c[i,j]);
wczytaja; wczytajb; sumaab; zapisaniewyniku; 4. Napisz program, który oblicz silnię. Użyj funkcji. Zapisz wynik do pliku silnia.txt. Zadanie 4. program silnia; usescrt; var n:integer; plik:text; function silnia(n:integer):integer; if n=0 then silnia:=1 else silnia:=n*silnia(n-1); assign(plik,'silnia.txt'); writeln('program obliczy silnie -- n! --'); write('podaj w wartosc n='); readln(n); writeln('n!=',silnia(n)); writeln(plik,'n!=',silnia(n));
5. Napisz program, który oblicz n-ty wyraz ciągu w postaci: Zadanie 5. a 1 = 1 a n = a n 1 + 2 Użyj funkcji. Zapisz wynik do pliku silnia.txt. program ciag; uses crt; var n:integer; plik:text; function a(n:integer):integer; if n=1 then a:=1 else a:=a(n-1)+2; assign(plik,'ciagrek.txt'); writeln('program obliczy n-ty wyraz ciagu'); write('podaj wartosc n='); readln(n); writeln('a[',n,']=',a(n)); writeln(plik,'a[n]=',a(n));