Informatyka - instrukcje, Instrukcja 7, Podstawy Informatyki - Laboratorium


Podstawy Informatyki - Laboratorium

Politechnika Świętokrzyska, Wydział Elektrotechniki, Automatyki i Informatyki

Turbo Pascal

Instrukcja laboratoryjna nr 7

Opracował: dr inż. Grzegorz Słoń

listopad 2003 r.

Operacje na rekordach i przetwarzanie plików

  1. Napisać program zapisujący w pliku tekstowym liczby.txt ciąg n liczb rzeczywistych, a następnie pobierający liczby z pliku i wyświetlający je na ekranie monitora. Nie stosować zmiennych tablicowych.

program z7_1;

uses Crt;

var plik: Text;

n: integer;

{----------}

procedure Wprowadz_liczby(n:integer; var p:Text);

var i:integer;

liczba:real;

begin

Rewrite(p);

for i:=1 to n do

begin

write(i,' liczba: '); readln(liczba);

writeln(p,liczba);

end;

Close(p);

end;

{----------}

procedure Wyswietl_liczby(var p:Text);

var liczba:real;

begin

Reset(p);

while not eof(p) do

begin

readln(p,liczba);

writeln(liczba:7:3);

end;

Close(p);

end;

{----------}

procedure Koniec;

begin

writeln;

TextColor(14); writeln('Nacisnij dowolny klawisz...'); TextColor(7);

ReadKey;

end;

{----------}

begin

ClrScr;

write('Ile bedzie liczb?: '); readln(n);

Assign(plik,'liczby.txt');

Wprowadz_liczby(n,plik);

writeln;

Wyswietl_liczby(plik);

Koniec;

end.

  1. Uzupełnić program z punktu 1 o procedurę wyświetlającą tylko te liczby, których wartość jest większa od średniej arytmetycznej wszystkich liczb.

{----------}

function Srednia(var p:Text):real;

var n:integer;

liczba,s:real;

begin

n:=0; s:=0;

Reset(p);

while not eof(p) do

begin

readln(p,liczba);

n:=n+1;

s:=s+liczba;

end;

if n>0 then Srednia:=s/n

else Srednia:=s;

Close(p);

end;

{----------}

procedure Wieksze_od_sredniej(var p:Text);

var liczba,s_a:real;

begin

s_a:=Srednia(p);

Reset(p);

while not eof(p) do

begin

readln(p,liczba);

if liczba>s_a then writeln(liczba:7:3);

end;

Close(p);

end;

{----------}

  1. Dany jest zestaw informacji o n studentach: nazwisko i imię, rok urodzenia, średnia ocen. Napisać program, który umożliwi wprowadzenie tych danych do tablicy jednowymiarowej a, a następnie wyświetli na ekranie monitora dane studentów urodzonych w podanym roku.

program z7_3;

uses Crt;

type student = record

naz_im : string[30];

rok_ur : integer;

srednia : real;

end;

tab_rec = array[1..50] of student;

var a: tab_rec;

n,rok: integer;

{----------}

procedure Wprowadz_osobe(var x:student);

begin

write('Nazwisko i imie: '); readln(x.naz_im);

write('Rok urodzenia: '); readln(x.rok_ur);

write('Srednia ocen: '); readln(x.srednia);

end;

{----------}

procedure Wprowadz_dane(n:integer; var a:tab_rec);

var i:integer;

begin

for i:=1 to n do

begin

TextColor(15); writeln(i,' student:'); TextColor(7);

Wprowadz_osobe(a[i]);

end;

end;

{----------}

procedure Wyswietl_osobe(x:student);

begin

with x do

begin

write(naz_im); GoToXY(32,WhereY);

writeln(rok_ur:4,' ',srednia:4:2);

end;

end;

{----------}

procedure Wyswietl_z_roku(rok,n:integer; a:tab_rec);

var i,ile:integer;

begin

ile:=0;

for i:=1 to n do

if a[i].rok_ur=rok then begin

ile:=ile+1;

Wyswietl_osobe(a[i]);

end;

if ile=0 then writeln('Brak studentow urodzonych w roku ',rok,'.');

end;

{----------}

procedure Koniec;

begin

writeln;

TextColor(14); writeln('Nacisnij dowolny klawisz...'); TextColor(7);

ReadKey;

end;

{----------}

begin

ClrScr;

write('Ilu bedzie studentow?: '); readln(n);

Wprowadz_dane(n,a);

writeln;

write('Podaj rocznik: '); readln(rok);

Wyswietl_z_roku(rok,n,a);

Koniec

end.

  1. Zmodyfikować program z punktu 3 tak, aby do przechowywania danych wykorzystywał plik tekstowy o nazwie dane.txt (zamiast tablicy jednowymiarowej).

program z7_4;

uses Crt;

type student = record

naz_im : string[30];

rok_ur : integer;

srednia : real;

end;

plik = Text;

var p: plik;

n,rok: integer;

{----------}

procedure Wprowadz_osobe(var x:student);

begin

write('Nazwisko i imie: '); readln(x.naz_im);

write('Rok urodzenia: '); readln(x.rok_ur);

write('Srednia ocen: '); readln(x.srednia);

end;

{----------}

procedure Wprowadz_dane(n:integer; var p:plik);

var i:integer;

x:student;

begin

Rewrite(p);

for i:=1 to n do

begin

TextColor(15); writeln(i,' student:'); TextColor(7);

Wprowadz_osobe(x);

writeln(p,x.naz_im);

writeln(p,x.rok_ur);

writeln(p,x.srednia);

end;

Close(p);

end;

{----------}

procedure Wyswietl_osobe(x:student);

begin

with x do

begin

write(naz_im); GoToXY(32,WhereY);

writeln(rok_ur:4,' ',srednia:4:2);

end;

end;

{----------}

procedure Wyswietl_z_roku(rok,n:integer; var p:plik);

var i,ile:integer;

x:student;

begin

ile:=0;

Reset(p);

while not eof(p) do

begin

readln(p,x.naz_im);

readln(p,x.rok_ur);

readln(p,x.srednia);

if x.rok_ur=rok then begin

ile:=ile+1;

Wyswietl_osobe(x);

end;

end;

Close(p);

if ile=0 then writeln('Brak studentow urodzonych w roku ',rok,'.');

end;

{----------}

procedure Koniec;

begin

writeln;

TextColor(14); writeln('Nacisnij dowolny klawisz...'); TextColor(7);

ReadKey;

end;

{----------}

begin

ClrScr;

Assign(p,'dane.txt');

write('Ilu bedzie studentow?: '); readln(n);

Wprowadz_dane(n,p);

writeln;

write('Podaj rocznik: '); readln(rok);

Wyswietl_z_roku(rok,n,p);

Koniec

end.

  1. Zmodyfikować program z punktu 4 tak, aby zamiast pliku tekstowego wykorzystywał plik rekordowy o nazwie dane.dat.

program z7_5;

uses Crt;

type student = record

naz_im : string[30];

rok_ur : integer;

srednia : real;

end;

plik = file of student;

var p: plik;

n,rok: integer;

{----------}

procedure Wprowadz_osobe(var x:student);

begin

write('Nazwisko i imie: '); readln(x.naz_im);

write('Rok urodzenia: '); readln(x.rok_ur);

write('Srednia ocen: '); readln(x.srednia);

end;

{----------}

procedure Wprowadz_dane(n:integer; var p:plik);

var i:integer;

x:student;

begin

Rewrite(p);

for i:=1 to n do

begin

TextColor(15); writeln(i,' student:'); TextColor(7);

Wprowadz_osobe(x);

write(p,x);

end;

Close(p);

end;

{----------}

procedure Wyswietl_osobe(x:student);

begin

with x do

begin

write(naz_im); GoToXY(32,WhereY);

writeln(rok_ur:4,' ',srednia:4:2);

end;

end;

{----------}

procedure Wyswietl_z_roku(rok:integer; var p:plik);

var i,ile:integer;

x:student;

begin

ile:=0;

Reset(p);

while not eof(p) do

begin

read(p,x);

if x.rok_ur=rok then begin

ile:=ile+1;

Wyswietl_osobe(x);

end;

end;

Close(p);

if ile=0 then writeln('Brak studentow urodzonych w roku ',rok,'.');

end;

{----------}

procedure Koniec;

begin

writeln;

TextColor(14); writeln('Nacisnij dowolny klawisz...'); TextColor(7);

ReadKey;

end;

{----------}

begin

ClrScr;

Assign(p,'dane.dat');

write('Ilu bedzie studentow?: '); readln(n);

Wprowadz_dane(n,p);

writeln;

write('Podaj rocznik: '); readln(rok);

Wyswietl_z_roku(rok,p);

Koniec

end.

  1. Uzupełnić program z punktu 5 o procedury (lub funkcje) wykonujące następujące zadania:

    1. zmodyfikowana procedura Wprowadz_dane, nie powodująca usunięcia danych wprowadzonych wcześniej;

    2. wyświetlanie danych wszystkich studentów;

    3. wyznaczanie średniej arytmetycznej wszystkich ocen;

    4. wyznaczenie średniego wieku studentów;

    5. wyznaczenie procentowego udział liczby studentów w wieku powyżej średniej;

    6. wyświetlenie danych studentów o nazwiskach zaczynających się od wskazanej litery;

    7. znalezienie studentów: najstarszego i najmłodszego (jeśli znajdzie się kilka osób z tego samego rocznika, to należy wyświetlić dane ich wszystkich);

    8. dodawanie do już istniejącego pliku danych nowej osoby.

  2. Napisać program pełniący rolę bazy danych magazynu towarów. Dane powinny obejmować: nazwę towaru, rok produkcji, cenę jednostkową i ilość. Program powinien umożliwiać:

    1. wprowadzanie nowych danych;

    2. wyświetlanie zawartości magazynu;

    3. wyświetlanie danych na temat towaru o wskazanej nazwie i roku produkcji;

    4. usuwanie danych na temat towaru o wskazanej nazwie;

    5. wyznaczenie łącznej wartości towarów w magazynie;

    6. wyznaczenie łącznej wartości towarów o wskazanej nazwie;

    7. wyznaczenie ilości jednostek towaru o wskazanej nazwie.

str. 6/6 Turbo Pascal - Instrukcja nr 7

Turbo Pascal - Instrukcja nr 7 str. 5/6



Wyszukiwarka

Podobne podstrony:
Informatyka - instrukcje, Instrukcja 3, Podstawy Informatyki - Laboratorium
Informatyka - instrukcje, Instrukcja 13, Podstawy Informatyki - Laboratorium
Informatyka - instrukcje, Instrukcja 2, Podstawy Informatyki - Laboratorium
instrukcja 3 new, Ćwiczenia laboratoryjne z Podstaw Informatyki nr 3
Informatyka - instrukcje, Instrukcja 1 - poprawiona, Podstawy Informatyki - Laboratorium
instrukcja 3 new, Ćwiczenia laboratoryjne z Podstaw Informatyki nr 3
Informatyka - instrukcje, Instrukcja 1 - poprawiona, Podstawy Informatyki - Laboratorium
Informatyka - instrukcje, Instrukcja 9, Podstawy Informatyki - Laboratorium
Informatyka - instrukcje, Instrukcja 11, Podstawy Informatyki - Laboratorium
Informatyka - instrukcje, Instrukcja 8, Podstawy Informatyki - Laboratorium
Informatyka - instrukcje, Instrukcja 12, Podstawy Informatyki - Laboratorium
Informatyka - instrukcje, Instrukcja 10, Podstawy Informatyki - Laboratorium
Informatyka - instrukcje, Instrukcja 4, Podstawy Informatyki - Laboratorium
Informatyka - instrukcje, Instrukcja 14, Podstawy Informatyki - Laboratorium
pom nap okr zm 1, Informatyka, Podstawy miernictwa, Laboratorium
pom mocy ukl trojfaz, Informatyka, Podstawy miernictwa, Laboratorium
pom czestot, Informatyka, Podstawy miernictwa, Laboratorium
01 Podstawowe czynności laboratoryjne instrukcja

więcej podobnych podstron