Zobacz pełną wersję : Program Ksiazka w Pascalu
Pisze po raz drugi poprawiłam wczesniejszy program czy ktos moze mi napisac czy to jest teraz dobrze zrobione
Zdefiniuj typ rekordowy opisujący książkę(tytuł, autor, wydawca, rok wydania). Wykorzystaj typ w prostym programie obsługującym mała bibliotekę. Program powinien umożliwiać wprowadzenie danych książek ich wypisanie i znalezienie książki o zadanym tytule. Do przechowywania opisów książek wykorzystaj tablice rekordów.
Program ksiazka;
uses crt;
type
Tksiazka=record
Autor:string;
Tytul:string;
Wydawnictwo:string;
RokWydania:integer;
end;
var
Katalog:Tksiazka;
begin
with Katalog do
begin
Write (‘Podaj autora: ‘);
Readln (Autor);
Write (‘Podaj tytul: ‘);
Readln (Tytul);
Write (‘Podaj wydawnictwo: ‘);
Readln (Wydawnictwo);
Write (‘Podaj rok wydania: ‘);
Readln (RokWydania);
Writeln (‘ksiazka: ‘,Autor:20,Tytul:20,Wydawnictwo:20,RokWydania :5);
end;
end.
Pisze po raz drugi poprawiłam wczesniejszy program czy ktos moze mi napisac czy to jest teraz dobrze zrobione
Zdefiniuj typ rekordowy opisujący książkę(tytuł, autor, wydawca, rok wydania).
(...) Do przechowywania opisów książek wykorzystaj tablice rekordów.
Program ksiazka;
uses crt;
type
Tksiazka=record
Autor:string;
Tytul:string;
Wydawnictwo:string;
RokWydania:integer;
end;
...
Hm, wygląda na to, że dostałaś tu osobistego asystenta :-)
Zatem dobrze:
Zdefiniowałaś typ rekordowy dobrze;
nie ma jeszcze tablicy;
ponadto program wczytuje jedna książkę, ale nie robi tego, co jest w temacie.
Prosiłem, żebyś używała symbolu CODE, ale po to, żeby nie stracić wcięć; spójrz na mój fragment...
Kontynuuj.
ALPHA czy mozesz mi powiedziec jak wstawic te wciecia bo ja tego niewiem jakos mi to nie wychodzi, i co s±dzisz o tym kodzie choc do konca nie dzia³a bo nie chce scompilowac
program biblioteka;
uses crt;
type
ksiazka = record
tytul: string[30];
autor : string[25];
wydawnictwo : string[25];
rok : integer;
licznik:word;
end;
var
katalog : array[1..100] of ksiazka;
l:integer;
wybor:word;
procedure wprowadz_dane(var r : ksiazka);
begin
with r do
begin
write('tytul: ');readln(tytul);
write('autor: ');readln(autor);
write('wydawnictwo: ');readln(wydawnictwo);
write('rok wydania: ');readln(rok);
writeln;
end;
end;
procedure wypisz_dane (r : ksiazka);
begin
with r do
begin
write('tytul: ');writeln(tytul);
write('autor: ');writeln(autor);
write('wydawnictwo: ');writeln(wydawnictwo);
write('rok wydania: ');writeln(rok);
end;
writeln;
end;
procedure dodaj_ksiazke;
begin
Inc(l);
writeln('nowa pozycja w katalogu; ',l);
wprowadz_dane(katalog[l]);
katalog[l].licznik:=0;
end;
procedure usun_ksiazke(numer : integer);
begin
katalog[numer]:= katalog[l];
dec(l);
end;
procedure wypisz_katalog;
var
i:integer;
begin
for i:=1 to l do
begin
writeln('pozycja katalogu nr ',i,'.');
wypisz_dane(katalog[i]);
end;
end;
function menu: integer;
var
c:char;
begin
clrscr;
writeln('program mala biblioteka');
writeln;
writeln('wybierz funkcje');
writeln('1:dodanie ksiazki');
writeln('2:wyswietlenie wszystkich pozycji');
writeln('3:usun');
writeln('4:szukaj ksiazki');
writeln('0:koniec pracy');
writeln;
repeat
c:=readkey
until c in ['0'..'4'];
menu:=ord(c)-ord('0');
end;
function szukaj(tekst:string; pozycja:integer) :integer;
var
i:integer;
begin
i:=pozycja;
while(pos(tekst, katalog[i].tytul)=0) and (i<=l) do
inc(i);
if i<=l then
szukaj :=i
else
szukaj :=-1;
end;
procedure sprawdz_ksiazki(tytul : string);
var
i:integer;
begin
write('Podaj tytul ksiazki: ');
readln(tytul);
i:=1;
repeat
i:=szukaj(tytul, i);
if i<>-1 then
begin
writeln('pozycja katalogu nr ',i,':');
wypisz_dane(katalog[i]);
inc(i);
end;
until i=-1
end;
begin
repeat
wybor:=menu;
case wybor of
1:dodaj_ksiazke;
2:begin
wypisz_katalog;
readln;
end;
3:usun_ksiazke;
4:sprawdz_ksiazki;
end;
until wybor=0;
end.
ALPHA czy mozesz mi powiedziec jak wstawic te wciecia bo ja tego niewiem jakos mi to nie wychodzi
Zakładam, że wcięcia masz wstawione w TP (choćby spacjami).
Żeby je było widać też na forum, musisz kod wstawiac w tagach CODE (jak już Alpha zuważył), czyli dokładnie zrobić tak:
[CODE]
tutaj kod programu
[/CODE]
ew. użyć tej ikonki w edytorze, która wygląda jak #.
Hm, wygląda na to, że dostałaś tu osobistego asystenta :-)
I się więcej nie wtrącam, no chyba, że Alpha pozwoli ;)
Wielkie dzieki doderic:) :kawa: :piwo: ,Tobie Alpha rowniez dziekuje za wskazówki ale chyba juz se odpuszcze ten program z książko i zajme sie innymi przedmiotami bo juz mam egzaminy i zaliczenia ale jeszcze dzis chwile nad nim posiedze :smile:
troche porawi³am ale jest problem z wyszukiwaniem reszta dzia³a mozecie mi pomóc gdzie b³±d lub czegos brak
program biblioteka;
uses crt;
type
ksiazka = record
tytul: string[30];
autor : string[25];
wydawnictwo : string[25];
rok : integer;
licznik:word;
end;
var
katalog : array[1..100] of ksiazka;
l:integer;
wybor:word;
procedure wprowadz_dane(var r : ksiazka);
begin
with r do
begin
write('tytul: ');readln(tytul);
write('autor: ');readln(autor);
write('wydawnictwo: ');readln(wydawnictwo);
write('rok wydania: ');readln(rok);
writeln;
end;
end;
procedure wypisz_dane (r : ksiazka);
begin
with r do
begin
write('tytul: ');writeln(tytul);
write('autor: ');writeln(autor);
write('wydawnictwo: ');writeln(wydawnictwo);
write('rok wydania: ');writeln(rok);
end;
writeln;
end;
procedure dodaj_ksiazke;
begin
Inc(l);
writeln('nowa pozycja w katalogu; ',l);
wprowadz_dane(katalog[l]);
katalog[l].licznik:=0;
end;
procedure usun_ksiazke;
var
numer : integer;
begin
katalog[numer]:= katalog[l];
dec(l);
end;
procedure wypisz_katalog;
var
i:integer;
begin
for i:=1 to l do
begin
writeln('pozycja katalogu nr ',i,'.');
wypisz_dane(katalog[i]);
end;
end;
function menu: integer;
var
c:char;
begin
clrscr;
writeln('program mala biblioteka');
writeln;
writeln('wybierz funkcje');
writeln('1:dodanie ksiazki');
writeln('2:wyswietlenie wszystkich pozycji');
writeln('3:usun');
writeln('4:szukaj ksiazki');
writeln('0:koniec pracy');
writeln;
repeat
c:=readkey
until c in ['0'..'4'];
menu:=ord(c)-ord('0');
end;
function szukaj(tekst:string; pozycja:integer) :integer;
var
i:integer;
begin
i:=pozycja;
while(pos(tekst, katalog[i].tytul)=0) and (i<=l) do
inc(i);
if i<=l then
szukaj :=i
else
szukaj :=-1;
end;
procedure sprawdz_ksiazki;
var
tytul : string;
i:integer;
begin
write('Podaj tytul ksiazki: ');
readln(tytul);
i:=1;
repeat
i:=szukaj(tytul, i);
if i<>-1 then
begin
writeln('pozycja katalogu nr ',i,':');
wypisz_dane(katalog[i]);
inc(i);
end;
until i=-1
end;
begin
repeat
wybor:=menu;
case wybor of
1:dodaj_ksiazke;
2:begin
wypisz_katalog;
readln;
end;
3:usun_ksiazke;
4:sprawdz_ksiazki;
end;
until wybor=0;
end.
troche porawi³am ale jest problem z wyszukiwaniem reszta dzia³a mozecie mi pomóc gdzie b³±d lub czegos brak
procedure sprawdz_ksiazki;
var
tytul : string;
i:integer;
begin
write('Podaj tytul ksiazki: ');
readln(tytul);
i:=1;
repeat
i:=szukaj(tytul, i);
if i<>-1 then
begin
writeln('pozycja katalogu nr ',i,':');
wypisz_dane(katalog[i]);
inc(i);
end;
until i=-1
{BRAKUJE dok³adnie tutaj}
end;
Zauwa¿, ¿e po wyszukiwaniu od razu przechodzisz znów do menu, a wiêc ekran jest czyszczony - nie zd±¿ysz nawet zobaczyæ wyników wyszukiwania. Male "readln" czyni cuda. ;)
Natomiast co¶ chyba popsu³em, bo jak usun±³em ostatni± ksi±¿kê z katalogu, to program zwariowa³... :(
---
Ju¿ wiem co z usuwaniem: nie pytasz, któr± pozycjê usun±æ.
Dziêki doderic teraz po wstawieniu 'readln' dzia³a :brawo:
procedure sprawdz_ksiazki;
var
tytul : string;
i:integer;
begin
write('Podaj tytul ksiazki: ');
readln(tytul);
i:=1;
repeat
i:=szukaj(tytul, i);
if i<>-1 then
begin
writeln('pozycja katalogu nr ',i,':');
wypisz_dane(katalog[i]);
inc(i);
end;
until i=-1;
readln;
end;
:razz: :piwo: DZIEKI
Cieszę się, że mogłem pomóc... i powodzenia na egz.!
:tak_trzymaj:
Powered by vBulletin™ Version 4.2.2 Copyright © 2019 vBulletin Solutions, Inc. All rights reserved.