Премини към съдържанието
Форумът в приложение

По-лесно сърфиране. Научи повече.

Kaldata.com - Форуми

Приложение на форума на цял екран с push известия, значки и други.

За да инсталирате това приложение на iOS и iPadOS
  1. Докоснете Иконата за споделяне в Safari
  2. Превъртете менюто и докоснете Добавяне към началния екран.
  3. Докоснете Добавяне в горния десен ъгъл.
За да инсталирате това приложение на Android
  1. Докоснете менюто с 3 точки (⋮) в горния десен ъгъл на браузъра.
  2. Докоснете Добавяне към началния екран или Инсталиране на приложение.
  3. Потвърдете, като докоснете Инсталиране.

Добре дошли!

Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

Моля, регистрирайте се за да публикувате тема и да получите пълен достъп до всички функции.

 

Умуване на задача на Паскал

Featured Replies

Здравейте колеги задачата е следната:

В магазин за електроуреди се поддържа информация за: вид на уреда, модел, производител, единична цена, количество. Да се състави програма, която поддържа файл с посочените данни с помощта на подпрограми за:

- създаване на нов файл с информация за уредите;

- регистриране на продажба на уред;

- регистриране доставка на уреди;

- пресмятане цената на наличното количество от всички уреди от даден вид;

- намиране на уреда от даден вид с най-ниска цена.

П.П. Написаното от мен е следното, но ядец не върви :cool:

Program Magazin;

Type

ured=record;

vid:string;

model:string;

proizvoditel:string;

cena:real;

kolichestvo:integer;

end;

var F:file of Ured;

procedure addured;

begin

with ured do begin

write('Vavedete vid na ureda')readln(vid);

write('Vavedete model na ureda')readln(model);

write('Vavedete proizvoditel na ureda')readln(proizvoditel);

write('Vavedete kolichesvtvo uredi')readln(kolichestvo);

end;

readln;

end;

procedure ADDprodajbA;

begin

reset(F);

SEEK(F,Filesize(F));

Repeat

 Vhod1Ured;

 if F.ured>' 'then write f.kolichestvo= '';

 close(F);

 end;

Procedure Dostavka;

begin

Rewrite(F);Close(F);

Write('failut e suzdaden');

end;

Procedure smetki;

var Br:integer;

begin

br:=0; Writeln('spisyk s nalichno kolichestvo uredi i dadenieqt vid e:');

reset (f);

While not EOF(F) do begin

Read(F,Ured);

if ured>=0

then begin

writeln(ured.vid);

ime(ured);

end;

writeln('Broy uredi= ',ured);

close (F);

end;

var nam:char;

Begin

Assign(F,'Uredi.dat');

Repeat

writeln('menu');

Writeln('1-Sazdavane na nov fail');

Writeln('2-Dobavi danni vav faila');

Writeln('3-izvedi spisak s nali4nite uredi');

writeln('0-izxod ot programata');

write('Izberete<0..3>:');Readln(nam);

case nam of

'1':dostavka;

'2':addprodajba;

'3':smetki;

else if nam<>'0'then

wtiteln('greshna komanda!');

end;

until otg='0';

end.

1. Дефиниране тип запис :

type

tured = record

vid: string[255];

model: string[255];

proizvoditel: string[255];

cena: real;

kolichestvo: integer;

end;

2. Дефиниране променлива за работа с този тип :

ured:tured;

съответно и файла :

F: file of tUred;

3. След това : всеки ред в Pascal завършва с точка и запетая ;

with ured do begin

write('Vavedete vid na ureda');

readln(ured.vid);

write('Vavedete model na ureda');

readln(ured.model);

write('Vavedete proizvoditel na ureda');

readln(ured.proizvoditel);

write('Vavedete kolichesvtvo uredi');

readln(ured.kolichestvo);

end;

Преди да четеш или пишеш във файла, трябва да го отвориш :

assign(f,'име на файла');

reset(f);

След края на опрациите с файла го затваряш :

close(f);

Хайде сега малко и ти помисли.

  • Автор

Ето какво коригирах, но без резултат знам, че имам грешки :whist:

Program Magazin;

  Type

         Tured=record;

         vid:string[255];

         model:string[255];

         proizvoditel:string[255];

         cena:real;

         kolichestvo:integer;

         end;

  var

   ured:tured

   F:file of tUred;

 procedure addured;

 begin

 with ured do begin

 write('Vavedete vid na ureda')readln(ured.vid);

 write('Vavedete model na ureda')readln(ured.model);

 write('Vavedete proizvoditel na ureda')readln(ured.proizvoditel);

 write('Vavedete kolichesvtvo uredi')readln(ured.kolichestvo);

 end;

 end;

 procedure ADDprodajbA;

 begin

 assign(f,'uredi.dat);

 reset(F);

 SEEK(F,Filesize(F));

 Repeat

 Vhod1Ured;

 if F.ured>' 'then write f.kolichestvo= '';

 close(F);

 end;

 Procedure Dostavka;

begin

 Rewrite(F);Close(F);

 Write('failut e suzdaden');

 end;

 Procedure smetki;

 var Br:integer;

begin

br:=0; Writeln('spisyk s nalichno kolichestvo uredi i dadenieqt vid e:');

reset (f);

While not EOF(F) do begin

Read(F,Ured);

if ured>=0

then begin

writeln(ured.vid);

ime(ured);

end;

writeln('Broy uredi= ',ured);

close (F);

end;

var nam:char;

Begin

Assign(F,'Uredi.dat');

Repeat

writeln('menu');

Writeln('1-Sazdavane na nov fail');

Writeln('2-Dobavi danni vav faila');

Writeln('3-izvedi spisak s nali4nite uredi');

writeln('0-izxod ot programata');

write('Izberete<0..3>:');Readln(nam);

case nam of

'1':dostavka;

'2':addprodajba;

'3':smetki;

else if nam<>'0'then

wtiteln('greshna komanda!');

end;

until otg='0';

end.

Редактирано от sympathetic (преглед на промените)

  • Автор

Почти нищо не си коригирал.

Малко по-сериозно погледни, какво съм ти написал.

Значи стана ми ясно как се отваря и затваря файла,точки и запетаите съм ги спазил, но проблема ми е в процедурите техните оформления знам, че не са вярни.

В какъв смисъл оформления ? Или имаш предвид тяхната логика ?

Например процедура за добавяне на уред:

procedure addured;

begin

  with ured do begin

    write('Vavedete vid na ureda');

    readln(ured.vid);

    write('Vavedete model na ureda');

    readln(ured.model);

    write('Vavedete proizvoditel na ureda');

    readln(ured.proizvoditel);

    write('Vavedete kolichesvtvo uredi');

    readln(ured.kolichestvo);

  end;

  assign(f,'ime na fajla');

  reset(f);

  seek(f,filesize(f));

  write(f,ured);

  close(f);

  readln;

end;

  • Автор

Може ли да ми напишеш и другите процедури как трябва да изглеждат? Не съм много запознат съжалявам, не съм много добър в програмирането това, което мога да направя сам го демонстрирах във първият си пост. sad.gif

Благодарен съм, че ми помогна!

Редактирано от sympathetic (преглед на промените)

program Project1;


type

  tured = record

    vid: string[255];

    model: string[255];

    proizvoditel: string[255];

    cena: real;

    kolichestvo: integer;

  end;


var

  F: file of tUred;

  ured: tured;

  ime: string;


// - създаване на нов файл с информация за уредите;


procedure NovFail;

begin

  write('Въведете име на файла:');

  readln(ime);

  assign(f, ime);

  rewrite(f);

  close(f);

  writeln('Файлът беше създаден !');

end;


// - регистриране на продажба на уред;


procedure Prodajba;

var

  vid: string[255];

  model: string[255];

  kolichestvo: integer;

begin

  write('Вид:');

  readln(vid);

  write('Модел:');

  readln(model);

  write('Количество:');

  readln(kolichestvo);


  assign(f, ime);

  reset(f);

  while not eof(f) do

  begin

    read(f, ured);

    if (ured.vid = vid) and (ured.model = model) then

    begin

      if ured.kolichestvo >= kolichestvo then

      begin

        ured.kolichestvo := ured.kolichestvo - kolichestvo;

        seek(f, filepos(f) - 1);

        write(f, ured);

      end;

    end else

      writeln('Няма достатъчно количесто ! Налични са ', ured.kolichestvo,

        ' броя.');

  end;

  close(f);

end;



//- регистриране доставка на уреди;


procedure Dostavka;

var

  vid: string[255];

  model: string[255];

  kolichestvo: integer;

begin

  write('Вид:');

  readln(vid);

  write('Модел:');

  readln(model);

  write('Количество:');

  readln(kolichestvo);


  assign(f, ime);

  reset(f);

  while not eof(f) do

  begin

    read(f, ured);

    if (ured.vid = vid) and (ured.model = model) then

    begin

      ured.kolichestvo := ured.kolichestvo + kolichestvo;

      seek(f, filepos(f) - 1);

      write(f, ured);

    end;

  end;

  close(f);

end;



// - пресмятане цената на наличното количество от всички уреди от даден вид;


procedure Smetki;

var

  vid: string[255];


  cena: real;

  kolichestvo: integer;

begin

  write('Вид:');

  readln(vid);


  kolichestvo := 0;

  cena := 0;


  assign(f, ime);

  reset(f);

  while not eof(f) do

  begin

    read(f, ured);

    if (ured.vid = vid) then

    begin

      cena := cena + ured.kolichestvo * ured.cena;

    end;

  end;

  close(f);


  writeln('Цената на уредите от вид ', vid, ' е : ', cena: 0: 2);

end;


// - намиране на уреда от даден вид с най-ниска цена.


procedure NajEvtin;

var

  vid: string[255];

  cena: real;

begin

  write('Вид:');

  readln(vid);


  cena := 0;


  assign(f, ime);

  reset(f);

  while not eof(f) do

  begin

    read(f, ured);

    if (ured.vid = vid) then

    begin

      if cena = 0 then

        cena := ured.cena

      else

      begin

        if ured.cena < cena then

          cena := ured.cena;

      end;

    end;

  end;

  close(f);


  writeln('Уредът от вид ', vid, ' с най-ниска цена е : ', cena: 0: 2);

end;



procedure main;

var

  nam: integer;

begin

  repeat

    writeln('Меню');

    Writeln('1-Създаване на нов файл');

    Writeln('2-Регистриране на продажба');

    Writeln('3-Регистриране на доставка');

    Writeln('4-Пресмятане цената на наличното количество от всички уреди от даден вид');

    Writeln('5-Намиране на уреда от даден вид с най-ниска цена');

    writeln('0-Изход');

    write('Изберете<0..5>:'); Readln(nam);

    case nam of

      1: NovFail;

      2: Prodajba;

      3: Dostavka;

      4: Smetki;

      5: NajEvtin;

    else if nam <> 0 then

      writeln('Грешна команда !');

    end;

  until nam = 0;

end;



begin

  Main;

end.

Пробвай !

  • Автор

Мисля, че проблема е в цената? Никъде при въвеждането не излиза да въведа цена? Или греша?

  • Автор

Промених това:

program Project1;


type

  tured = record

    vid: string[255];

    model: string[255];

    proizvoditel: string[255];

    cena: real;

    kolichestvo: integer;

  end;


var

  F: file of tUred;

  ured: tured;

  ime: string;


// - създаване на нов файл с информация за уредите;


procedure NovFail;

begin

  write('Vavedete imeto na faila:');

  readln(ime);

  assign(f, ime);

  rewrite(f);

  close(f);

  writeln('Failat e sazdaden !');

end;


// - регистриране на продажба на уред;


procedure Prodajba;

var

  vid: string[255];

  model: string[255];

  kolichestvo: integer;

  cena:real;

begin

  write('Vid:');

  readln(vid);

  write('Model:');

  readln(model);

  write('Kolichestvo:');

  readln(kolichestvo);

  write('cena:');

  readln(cena);


  assign(f, ime);

  reset(f);

  while not eof(f) do

  begin

    read(f, ured);

    if (ured.vid = vid) and (ured.model = model) then

    begin

      if ured.kolichestvo >= kolichestvo then

      begin

        ured.kolichestvo := ured.kolichestvo - kolichestvo;

        seek(f, filepos(f) - 1);

        write(f, ured);

      end;

    end else

      writeln('Nyama dostatuchno kolichestvo ! Nalichni sa ', ured.kolichestvo,

        ' broya.');

  end;

  close(f);

end;



//- регистриране доставка на уреди;


procedure Dostavka;

var

  vid: string[255];

  model: string[255];

  kolichestvo: integer;

  cena:real;

begin

  write('Vid:');

  readln(vid);

  write('Model:');

  readln(model);

  write('Kolichestvo:');

  readln(kolichestvo);

  write('Cena');

  readln(cena);


  assign(f, ime);

  reset(f);

  while not eof(f) do

  begin

    read(f, ured);

    if (ured.vid = vid) and (ured.model = model) then

    begin

      ured.kolichestvo := ured.kolichestvo + kolichestvo;

      seek(f, filepos(f) - 1);

      write(f, ured);

    end;

  end;

  close(f);

end;



// - пресмятане цената на наличното количество от всички уреди от даден вид;


procedure Smetki;

var

  vid: string[255];


  cena: real;

  kolichestvo: integer;

begin

  write('Vid:');

  readln(vid);


  kolichestvo := 0;

  cena := 0;


  assign(f, ime);

  reset(f);

  while not eof(f) do

  begin

    read(f, ured);

    if (ured.vid = vid) then

    begin

      cena := cena + ured.kolichestvo * ured.cena;

    end;

  end;

  close(f);


  writeln('Cenata na uredite ot vid ', vid, ' e : ', cena: 0: 2);

end;


// - намиране на уреда от даден вид с най-ниска цена.


procedure NajEvtin;

var

  vid: string[255];

  cena: real;

begin

  write('Vid:');

  readln(vid);


  cena := 0;


  assign(f, ime);

  reset(f);

  while not eof(f) do

  begin

    read(f, ured);

    if (ured.vid = vid) then

    begin

      if cena = 0 then

        cena := ured.cena

      else

      begin

        if ured.cena < cena then

          cena := ured.cena;

      end;

    end;

  end;

  close(f);


  writeln('Uredut ot vid ', vid, ' s nai niska cena e : ', cena: 0: 2);

end;



procedure main;

var

  nam: integer;

begin

  repeat

    writeln('Menu');

    Writeln('1-Sazdavane na nov fail');

    Writeln('2-Registrirane na prodajba');

    Writeln('3-Registrirane na dostavka');

    Writeln('4-Presmyatane cenata na nalichnoto kolichestvo ot vsichki uredi ot daden vid');

    Writeln('5-Namirane na ureda ot daden vid s nay-niska cena');

    writeln('0-Izxod');

    write('Izberete<0..5>:'); Readln(nam);

    case nam of

      1: NovFail;

      2: Prodajba;

      3: Dostavka;

      4: Smetki;

      5: NajEvtin;

    else if nam <> 0 then

      writeln('GRESHNA KOMANDA !');

    end;

  until nam = 0;

end;



begin

  Main;

end.

Но ядец... Не проработва.

Редактирано от sympathetic (преглед на промените)

Program Project1;


type

  tured = record

    vid: string[255];

    model: string[255];

    proizvoditel: string[255];

    cena: real;

    kolichestvo: integer;

  end;


var

  F: file of tUred;

  ured: tured;

  ime: string;


// - създаване на нов файл с информация за уредите;


procedure NovFail;

begin

  write('Въведете име на файла:');

  readln(ime);

  assign(f, ime);

  rewrite(f);

  close(f);

  writeln('Файлът беше създаден !');

end;


// - регистриране на продажба на уред;


procedure Prodajba;

var

  vid: string[255];

  model: string[255];

  kolichestvo: integer;

begin

  write('Вид:');

  readln(vid);

  write('Модел:');

  readln(model);

  write('Количество:');

  readln(kolichestvo);


  assign(f, ime);

  reset(f);

  while not eof(f) do

  begin

    read(f, ured);

    if (ured.vid = vid) and (ured.model = model) then

    begin

      if ured.kolichestvo >= kolichestvo then

      begin

        ured.kolichestvo := ured.kolichestvo - kolichestvo;

        seek(f, filepos(f) - 1);

        write(f, ured);

      end;

    end else

      writeln('Няма достатъчно количесто ! Налични са ', ured.kolichestvo,

        ' броя.');

  end;

  close(f);

end;



//- регистриране доставка на уреди;


procedure Dostavka;

var

  vid: string[255];

  model: string[255];

  proizvoditel: string[255];

  cena:real;

  kolichestvo: integer;

  dobaven:boolean;

begin

  write('Вид:');

  readln(vid);

  write('Модел:');

  readln(model);

  write('Количество:');

  readln(kolichestvo);


  dobaven:=false;

  assign(f, ime);

  reset(f);

  while not eof(f) do

  begin

    read(f, ured);

    if (ured.vid = vid) and (ured.model = model) then

    begin

      ured.kolichestvo := ured.kolichestvo + kolichestvo;

      seek(f, filepos(f) - 1);

      write(f, ured);

      dobaven:=true;

    end;

  end;

  if not dobaven then

    begin

  write('Производител:');

  readln(proizvoditel);

  write('Цена:');

  readln(cena);


      ured.vid:=vid;

      ured.model:=model;

      ured.proizvoditel:=proizvoditel;

      ured.kolichestvo := kolichestvo;

      ured.cena := cena;

      write(f, ured);

    end;

  close(f);

end;



// - пресмятане цената на наличното количество от всички уреди от даден вид;


procedure Smetki;

var

  vid: string[255];


  cena: real;

  kolichestvo: integer;

begin

  write('Вид:');

  readln(vid);


  kolichestvo := 0;

  cena := 0;


  assign(f, ime);

  reset(f);

  while not eof(f) do

  begin

    read(f, ured);

    if (ured.vid = vid) then

    begin

      cena := cena + ured.kolichestvo * ured.cena;

    end;

  end;

  close(f);


  writeln('Цената на уредите от вид ', vid, ' е : ', cena: 0: 2);

end;


// - намиране на уреда от даден вид с най-ниска цена.


procedure NajEvtin;

var

  vid: string[255];

  cena: real;

begin

  write('Вид:');

  readln(vid);


  cena := 0;


  assign(f, ime);

  reset(f);

  while not eof(f) do

  begin

    read(f, ured);

    if (ured.vid = vid) then

    begin

      if cena = 0 then

        cena := ured.cena

      else

      begin

        if ured.cena < cena then

          cena := ured.cena;

      end;

    end;

  end;

  close(f);


  writeln('Уредът от вид ', vid, ' с най-ниска цена е : ', cena: 0: 2);

end;



procedure main;

var

  nam: integer;

begin

  repeat

    writeln('Меню');

    Writeln('1-Създаване на нов файл');

    Writeln('2-Регистриране на продажба');

    Writeln('3-Регистриране на доставка');

    Writeln('4-Пресмятане цената на наличното количество от всички уреди от даден вид');

    Writeln('5-Намиране на уреда от даден вид с най-ниска цена');

    writeln('0-Изход');

    write('Изберете<0..5>:'); Readln(nam);

    case nam of

      1: NovFail;

      2: Prodajba;

      3: Dostavka;

      4: Smetki;

      5: NajEvtin;

    else if nam <> 0 then

      writeln('Грешна команда !');

    end;

  until nam = 0;

end;



begin

  Main;

end.



Редактирано от Ken (преглед на промените)

Добавете отговор

Можете да публикувате отговор сега и да се регистрирате по-късно. Ако имате регистрация, влезте в профила си за да публикувате от него.

Гост
Публикацията ви съдържа термини, които не допускаме! Моля, редактирайте съдържанието си и премахнете подчертаните думи по-долу. Ако замените букви от думата със звездички или друго, за да заобиколите това предупреждение, профилът ви ще бъде блокиран и наказан!
Напишете отговор в тази тема...

Разглеждащи това в момента 0

  • Няма регистрирани потребители разглеждащи тази страница.

Дарение

  • Подкрепи съществуването на форума - направи дарение
    25%
    Дарени 252.69 EUR от нужните 1,000.00 EUR

Бюлетин

Получавайте известие, когато има важна промяна или новина свързана с форума.

Профил

Навигация

Търсене

Търсене

Конфигуриране на push известия в браузъра

Chrome (Android)
  1. Докоснете иконата на катинар до адресната лента.
  2. Докоснете Разрешения → Известия.
  3. Променете предпочитанията си.
Chrome (Desktop)
  1. Кликнете върху иконата на катинар в адресната лента.
  2. Изберете Настройки на сайта.
  3. Намерете Известия и коригирайте предпочитанията си.