Plik elementowy z danymi który wypisze osoby z w-wy

0

mam takie zadanie: dany jest plik elementowy (nazwisko, miejscowosc, wiek, stan cywilny). Program ma wypisac osoby dla danych z pliku: wiek powyzej sredniej (zad.1)-tu mam kawalek ale chyba nie dziala poprawnie.., mieszkajace w w-wie (zad.2), stanu wolnego (zad.3), o nazwiskach zaczynajacych sie na k, l lub n (zad.4). Mam juz tyle:

program nazwiska;
uses crt;
type s_c=(wolny,kawaler,zonaty,mezatka,wdowiec,wdowa,panna);
type osoba=record
nazw:string[20];
wiek:integer;
miejsc:string[20];
stan_cywilny:s_c;
end;
type lista_os=file of osoba;
var f:lista_os;
os:osoba;
sr_w:real;
wybor,ile_os:integer;
nazwa:string[10];
begin
TextBackGround(Brown);
clrscr;
TextColor(White);
repeat
clrscr;
writeln('Wybierz: ');
writeln('1-Zaloz plik');
writeln('2-Dodaj element ');
writeln('3-zad 1');
writeln('4-zad 2');
writeln('5-zad 3');
writeln('6-zad 4');
writeln('7-Wypisz dane');
writeln('8-koniec pracy');
readln(wybor);
case wybor of
1: begin
clrscr;
write('Podaj nazwe pliku: ');
readln(nazwa);
Assign(f,nazwa);
rewrite(f);
write(f,os);
close(f);
end;
2: begin
clrscr;
write('Podaj nazwe pliku: ');
readln(nazwa);
assign(f,nazwa);
Reset(f);
while not eof (f) do read (f,os);
write('Podaj nazwisko: ');
readln(os.nazw);
write('Podaj miejscowosc: ');
readln(os.miejsc);
write('Podaj wiek: ');
readln(os.wiek);
writeln('Podaj stan cywilny: ');
write('1-wolny, 2- kawaler, 3-panna, 4- zonaty, 5-mezatka, 6-wdowiec, 7-wdowa ');
readln(wybor);
case wybor of
1:os.stan_cywilny:=wolny;
2:os.stan_cywilny:=kawaler;
3:os.stan_cywilny:=panna;
4:os.stan_cywilny:=zonaty;
5:os.stan_cywilny:=mezatka;
6:os.stan_cywilny:=wdowiec;
7:os.stan_cywilny:=wdowa;
end;
write(f,os);
close(f);
end;
3:begin
clrscr;
writeln('Zadanie 1');
ile_os:=0;
sr_w:=0;
write('Podaj nazwe pliku: ');
readln(nazwa);
assign(f,nazwa);
Reset(f);
while not eof(f) do
begin
read(f,os);
sr_w:=sr_w+ os.wiek;
ile_os:=ile_os+1;
end;
sr_w:=sr_w/ile_os;
Reset(f);
while not eof (f) do
begin
read(f,os);
if os.wiek > sr_w then
begin
writeln
end;
end;
end;
4:writeln('Zadanie 2');
5:writeln('Zadanie 3');
6:writeln('Zadanie 4');
7:begin
clrscr;
writeln('');
write('Podaj nazwe pliku: ');
readln(nazwa);
assign(f,nazwa);
Reset(f);
while not eof (f) do
begin
write(f,os);
end;
close(f);
end;
8:writeln('Koniec');
end;
until (wybor=8);
end.
nie moge zrobic tych zadan. jak ktos potrafi to moze mi pomoze :D

0

może jakbyś ten kod przeformatowała i dała w znaczniki < delphi> < /delphi> (bez spacji) to by ktoś to zobaczył bo tak to nawet mi się nie chce szukać co gdzie jest

0

ale to jest w pascalu :|

0

Ale sam język w 99% taki sam.. więc <delphi></delphi>

0
efelinka napisał(a)

ale to jest w pascalu :|

ale to nie szkodzi :), zobacz kawałek przeformatowany - o ile lepiej się go "czyta"

program nazwiska;

uses 
  crt;

type 
  s_c=(wolny,kawaler,zonaty,mezatka,wdowiec,wdowa,panna);
  osoba=record
    nazw:string[20];
    wiek:integer;
    miejsc:string[20];
    stan_cywilny:s_c;
  end;
  lista_os=file of osoba;

var 
  f:lista_os;
  os:osoba;
  sr_w:real;
  wybor,ile_os:integer;
  nazwa:string[10];
0
 program nazwiska; 
uses crt; 

type s_c=(wolny,kawaler,zonaty,mezatka,wdowiec,wdowa,panna); 
type osoba=record 
       nazw:string[20]; 
       wiek:integer; 
       miejsc:string[20]; 
       stan_cywilny:s_c; 
end; 

type lista_os=file of osoba; 

var f:lista_os; 
      os:osoba; 
      sr_w:real; 
      wybor,ile_os:integer; 
      nazwa:string[10]; 

begin 
   TextBackGround(Brown); 
   clrscr; 
   TextColor(White); 
   repeat 
   clrscr; 
   writeln('Wybierz: '); 
   writeln('1-Zaloz plik'); 
   writeln('2-Dodaj element '); 
   writeln('3-zad 1'); 
   writeln('4-zad 2'); 
   writeln('5-zad 3'); 
   writeln('6-zad 4'); 
   writeln('7-Wypisz dane'); 
   writeln('8-koniec pracy'); 
      readln(wybor); 
      
case wybor of 
    
1: begin 
          clrscr; 
           write('Podaj nazwe pliku: '); 
           readln(nazwa); 
           Assign(f,nazwa); 
           rewrite(f); 
           write(f,os); 
           close(f); 
        end; 
    
2: begin 
      clrscr; 
      write('Podaj nazwe pliku: '); 
      readln(nazwa); 
      assign(f,nazwa); 
       Reset(f); 
            while not eof (f) do read (f,os); 
              write('Podaj nazwisko: '); 
                    readln(os.nazw); 
              write('Podaj miejscowosc: '); 
                     readln(os.miejsc); 
              write('Podaj wiek: '); 
                     readln(os.wiek); 
              writeln('Podaj stan cywilny: '); 
              write('1-wolny, 2- kawaler, 3-panna, 4- zonaty, 5-mezatka, 6-wdowiec, 7-wdowa '); 
                      readln(wybor);   
                          case wybor of 
                             1:os.stan_cywilny:=wolny; 
                             2:os.stan_cywilny:=kawaler; 
                             3:os.stan_cywilny:=panna; 
                             4:os.stan_cywilny:=zonaty; 
                             5:os.stan_cywilny:=mezatka; 
                             6:os.stan_cywilny:=wdowiec; 
                             7:os.stan_cywilny:=wdowa; 
                       end; 
                 write(f,os); 
                 close(f); 
        end; 

3:begin 
     clrscr; 
     writeln('Zadanie 1'); 
     ile_os:=0; 
     sr_w:=0; 
     write('Podaj nazwe pliku: '); 
        readln(nazwa); 
        assign(f,nazwa); 
         Reset(f); 
               while not eof(f) do 
                 begin 
                    read(f,os); 
                    sr_w:=sr_w+ os.wiek;  
                    ile_os:=ile_os+1; 
                 end; 
              sr_w:=sr_w/ile_os; 
              Reset(f); 
                 while not eof (f) do 
                   begin 
                     read(f,os); 
                     if os.wiek > sr_w then 
                        begin 
                         writeln 
                        end; 
                    end; 
            end; 

4:writeln('Zadanie 2'); 

5:writeln('Zadanie 3'); 

6:writeln('Zadanie 4'); 

7:begin 
      clrscr; 
       writeln(''); 
       write('Podaj nazwe pliku: '); 
       readln(nazwa); 
       assign(f,nazwa); 
       Reset(f); 
          while not eof (f) do 
          begin 
             write(f,os); 
         end; 
     close(f); 
  end; 

8:writeln('Koniec'); 
   end; 
   until (wybor=8); 
end. 
0

Ewelina (zakładam, że tak masz na imię), przy pisaniu postu w razie wątpliwości używaj też Podglądu, przy przycisku Wyślij :)

0

No i możesz edytować swoje posty :P

zad 1
wszystko pięknie ładni tylko wypadało by jednak coś wypisać :P

if os.wiek > sr_w then 
begin 
  writeln 
end;

zad 2
tak jak w 1 tylko bez liczenia średniej i warunek if os.miejsc='warszawa' then

zad 3
tak jak 2

zad 3
warunek if os.nazw[1] in ('k', 'l', 'n') then

0

i ile razy jeszcze to napiszesz ?
nawiasy kwadratowe [; ] mają być

if os.nazw[1] in ['k', 'l', 'n'] then writeln(os.nazw);

0
efelinka napisał(a)

hmm.. ten 3 warunek, osoby z nazwiskami na 'k' 'l' 'n' jest niedobry.. wyskakuje "operands types do not match operator"...

  1. nawiasy mi się pomyliły, powinno być w kwadratowych, czyli in ['k', 'l', 'n']
  2. nie śmieć - pousuwaj niepotrzebne dwa posty (edycja/usuń post)

1 użytkowników online, w tym zalogowanych: 0, gości: 1