Pascal Mini sklep

D3
  • Rejestracja:około 13 lat
  • Ostatnio:ponad 9 lat
  • Postów:12
0

Witam, mam napisać na zaliczenie mini sklep w pascalu. Mam problem z przypadkiem braku miejsc w tablicy oraz takiego samego elementu. Mimo że taki element już jest to on dodaje go do następnej komórki. W przypadku braku miejsc nie wywołuje procedury usuwanie.

Kopiuj
uses crt,dos;


var
kategoria: array[1..255] of string;
liczba,i:integer;
nazwa:string;


function szukanie(a:string):string;
var
c:integer;
b:string;
Begin
for i := 1 to 255 do
 Begin
   if kategoria[i] = ' ' then
  Begin
    if kategoria[i] = a then
    Begin
    szukanie:='blad';
    break;
     end

      else if kategoria[i] <> a then
    Begin



    szukanie:='ok';
     break;


     end

   else if i <255 then
    Begin

    Writeln('Nie ma wolnego miejsca');


    szukanie :='brak miejsca';





    End;
    End;
    End;



End;


procedure usuwanie(liczba:integer);
        Begin


        kategoria[liczba]:=' ';

        End;

procedure dodawanie(a:string);
        Begin

        kategoria[i]:= nazwa;

        End;




  Begin
     clrscr;
  for i:= 1 to 255 do
   Begin
    kategoria[i] := '  ';
    End;

    kategoria[1]:='warzywa';
  Writeln('Podaj nazwe kategori ktora chcesz dodac');
  Readln(nazwa);
  szukanie(nazwa);
   if szukanie(nazwa) = 'ok' then
   Begin
   dodawanie(nazwa);
   End;

    if szukanie(nazwa) = 'brak miejsca' then
   Begin
     Writeln('podaj numer komorki, ktora chcesz usunac');
        Readln(liczba);
   usuwanie(liczba);
   End;


  for i:= 1 to 5 do
  Begin
  Writeln(i,' ',kategoria[i]);
  End;


   Repeat until keypressed;

End.
edytowany 1x, ostatnio: Demonical Monk
Patryk27
<code=delphi>tutaj kod</code> to po pierwsze, a po drugie przeformatuj ten kod na coś normalnego; tego się po prostu nie da czytać.
Demonical Monk
Poprawiłem <code></code>.
0

CZY TAK TO NIE WYGLĄDA CZYTELNIEJ?

Kopiuj
uses
  crt,
  dos;

var
  kategoria: array[1..255] of string;
  liczba, i: integer;
  nazwa:     string;


  function szukanie(a: string): string;
  var
    c: integer;
    b: string;
  begin
    for i := 1 to 255 do
    begin
      if kategoria[i] = ' ' then
      begin
        if kategoria[i] = a then
        begin
          szukanie := 'blad';
          break;
        end

        else if kategoria[i] <> a then
        begin

          szukanie := 'ok';
          break;

        end

        else if i < 255 then
        begin

          Writeln('Nie ma wolnego miejsca');


          szukanie := 'brak miejsca';

        end;
      end;
    end;

  end;


  procedure usuwanie(liczba: integer);
  begin

    kategoria[liczba] := ' ';

  end;

  procedure dodawanie(a: string);
  begin

    kategoria[i] := nazwa;

  end;




begin
  clrscr;
  for i := 1 to 255 do
  begin
    kategoria[i] := '  ';
  end;

  kategoria[1] := 'warzywa';
  Writeln('Podaj nazwe kategori ktora chcesz dodac');
  Readln(nazwa);
  szukanie(nazwa);
  if szukanie(nazwa) = 'ok' then
  begin
    dodawanie(nazwa);
  end;

  if szukanie(nazwa) = 'brak miejsca' then
  begin
    Writeln('podaj numer komorki, ktora chcesz usunac');
    Readln(liczba);
    usuwanie(liczba);
  end;


  for i := 1 to 5 do
  begin
    Writeln(i, ' ', kategoria[i]);
  end;


  repeat
  until keypressed;

end.
D3
  • Rejestracja:około 13 lat
  • Ostatnio:ponad 9 lat
  • Postów:12
0

Nie zrozumiałem o co chodzi.

1

Nie zrozumiałem o co chodzi.

To czas najwyższy zająć się czymś prostszym, niektórzy koledzy polecają szydełkowanie...

D3
  • Rejestracja:około 13 lat
  • Ostatnio:ponad 9 lat
  • Postów:12
0

A ty przy okazji nie mógłbyś pomóc? Twój cel to najeżdżanie na osoby mniej inteligentne od twojego intelektu?

AN
  • Rejestracja:ponad 14 lat
  • Ostatnio:5 miesięcy
  • Postów:125
0

Przeanalizuj funkcję szukanie.
Najpierw sprawdzasz czy jest pusta, a potem jak jest to czy jest równa zadanej wartości a jeśli nie jest to zwracasz 'ok'.
Równie dobrze możesz całość zastąpić szukanie = 'ok' i wyjdzie to samo.

0

Twój cel to najeżdżanie na osoby mniej inteligentne od twojego intelektu?

Jesteś mniej inteligentny od mojego intelektu? Spoko, ja tobie nie kazałem...
Tak, to mój jedyny cel, szukam osoby która zada głupie pytanie i usiłuje jej początkowo pomóc formatując kod za nią bo może czegoś się nauczy, ale w odpowiedzi otrzymuje tekst 'nie rozumiem', no to sorry, chyba nie oczekujesz poważnej odpowiedzi, co nie?

A ty przy okazji nie mógłbyś pomóc?

Przecież już ci usiłowałem pomóc poprawnie zadać pytanie tak żebym mógł na to patrzeć, ale ty zamiast zrozumieć to że twój kod jest brzydko sformatowany (wcięcia to u ciebie jakiś żart), mówisz że nie rozumiesz. I oczekujesz tego, że skoro mimo mojej pomocy nie poprawisz swojego kodu, tak żeby ładnie wyglądał (bo u mnie jest jeszcze dużo niepotrzebnych spacji chociażby), to magicznie będę chciał tobie pomóc?
Jakie pytanie, taka odpowiedź. popracuj nad pytaniem (i jeszcze udowodnij że masz jakąś wiedzę a nie jesteś obibokiem który nie czyta tutoriali) to ja popracuję nad odpowiedzią.

D3
  • Rejestracja:około 13 lat
  • Ostatnio:ponad 9 lat
  • Postów:12
0

Wyskrobałem coś nowego, przez pewien czas działała mi funkcja sprawdzenie, lecz teraz nie działa znów.

Kopiuj
uses crt,dos;


var
kategoria: array[1..255] of string;
produkty: array[1..255, 1..4] of string;
klienci: array[1..255, 1..2] of string;
dostawcy: array[1..255, 1..2] of string;
liczba,i:integer;
nazwa:string;
znak:char;


function szukanie(a:string):string;
var
c:integer;
b:string;
 Begin
  for i := 1 to 256 do
  Begin
   if kategoria[i] = ' ' then
    Begin
     if i<256 then
      Begin
       szukanie:='ok';
       break;
      end;
    end



  else if kategoria[i] <> ' ' then
    Begin
      if kategoria[i] <> a then
       Begin
        szukanie:='ok';
       End;
    End

 else if kategoria[i] = ' ' then
    Begin
     if i>256 then
      Begin
       szukanie:='brak wolnych miejsc';
       break;
      end;
    end;
  end;
 end;
 
procedure menu;
 begin
  clrscr;
  writeln('1: Tworzenie bazy danych');
  writeln('2: Przegladanie bazy danych');
  writeln('3: Dopisywanie danych');
  writeln('4: Usuwanie ');
  writeln('5: Wyjscie');
 end;


procedure usuwanie(liczba:integer);
        begin
         kategoria[liczba]:=' ';
        end;

procedure dodawanie(a:string);
        begin
         kategoria[i]:= nazwa;
        end;

procedure wyswietlenie;
        Begin
          for i:= 1 to 10 do
           Begin
            Writeln(i,' ',kategoria[i]);
           End;
        End;

  Begin
   clrscr;
   for i:= 1 to 255 do
    Begin
     kategoria[i] := ' ';
    End;
      menu;
       Repeat
       znak:=readkey;
       if znak = '1' then
        Begin
         clrscr;
         Writeln('Podaj nazwe kategori ktora chcesz dodac');
         Readln(nazwa);
         szukanie(nazwa);
         if szukanie(nazwa) = 'ok' then
          Begin
           dodawanie(nazwa);
          End;
          if szukanie(nazwa) = 'brak wolnych miejsc' then
           Begin
            Writeln('podaj numer komorki, ktora chcesz usunac');
            Readln(liczba);
            usuwanie(liczba);
           End;
          if szukanie(nazwa) = 'blad' then
           Begin
            Writeln('istnieje w bazie');
           End;
          Writeln('8 - powort do menu');
         znak:=readkey;
          if znak = '8' then
           Begin
            menu;
           End;
        End;
        if znak = '2' then
          Begin
           clrscr;
           wyswietlenie;
          End;
        if znak = '4' then
          Begin
           clrscr;
           Writeln('Podaj numer komorki');
           Readln(liczba);
           usuwanie(liczba);
          End;

   until znak = '5';

End.



Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.