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

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

Kaldata.com - Форуми

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

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

Добре дошли!

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

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

 

малко помощ за програма на Паскал

Featured Replies

Та мъчи ме задачка на паскал от курсовата ми работа.Ето го и условието:

 

За група студенти са зададени име, ЕГН, факултетен № ,
оценки по 10 дисциплини , среден успех. Да се създаде
програма , използваща подпрограми за:
 

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

• изчисляване на средния успех на всеки един от студентите;
• извеждане на фак. № и средния успех на всеки студент (мъж).

 

program kurs_file;
 
Type tipstudent=record
name: String[30];
egn: String[9];
fnum: String[6];
ocenka:Array[1..10] of byte;
end;
var FS:File of tipstudent;
m:Integer;
imefail:string[20];
C:integer;
 
{vavejdane na danni za studenta}
Procedure addstud(var st:tipstudent);
 
var i:integer;
Begin
With st do begin
write('Vyvedi ime:'); readln(name);
if(name='exit')then exit;
write('Vyvedi EGN:'); readln(egn);
write('Vyvedi F.N.:'); readln(fnum);
writeln('Vyvedi 10 ocenki:');
for i:=1 to 10 do read(ocenka);
end;
readln;
end;
 
{izchislqvane na sredniq uspeh}
Function srus(st:tipstudent):real;
 
var i,s:integer;
Begin
s:=0;
for i:=1 to 10 do s:=s+st.ocenka;
srus:=s/10;
end;
 
{otpe4atvane na edin student}
Procedure wrtst(st:tipstudent);
 
var i:integer;
b:string[1];
begin
with st do begin
writeln('Ime:',name);
writeln('EGN:',egn);
writeln('F.N.:',fnum);
writeln('Ocenki:');
for i:=1 to 10 do write(ocenka,' '); writeln;
writeln('Izchislqvane na sreden uspeh? y/n');
readln(B);
if(b='y')then writeln('Sreden uspeh:',srus(st):4:2);
writeln;
end;
end;
 
{otpe4atvane na celiq fail}
Procedure prall;
 
var st:tipstudent;
 
Begin
Reset(fs);
While not EOF(fs) do
begin
Read(fs,st);
wrtst(st);
end;
close(fs);
end;
 
{syzdavane na prazen fail}
Procedure newfile;
 
var i:integer;
 
Begin
Rewrite(fs);
Close(fs);
Writeln('Failyt e syzdaden!');
end;
 
{dobavqne na studenti kym faila}
 
Procedure addstudetofile;
 
var st:tipstudent;
 
Begin
Writeln('Vavedi ime ili exit za krai');
reset(fs); seek(fs,filesize(fs));
Repeat
addstud(st);
if st.name<>'exit' then write(fs,st);
until st.name= 'exit';
close(fs);
end;
 
Begin
Write('zadaite imeto na faila:');
Readln(ImeFail);
Assign(fs,ImeFail);
Repeat
Writeln(' ':20,'Meniu na izpalnqvanite operaii:');
Writeln(' ':20,'1- suzdavane na nov fail');
Writeln(' ':20,'2- informaciq za grupa studenti bez da se vavejda sr. uspeh');
Writeln(' ':20,'3- izchislqvane na sredniq uspeh na vseki edin ot studentite');
Readln©;
Case C of
1:newfile;
2:addstudetofile;
3:prall;
end;
until C=0
End.
 
 
Това е кода без последната подточка.Моля някой ако е възможно да ми оформи последната процедура, а именно извеждане на фак. номер и среден успех на мъжете като има предвид, че пола трябва да се разбере от предпоследната цифра в ЕГН-то(четна цифра- мъж, нечетна цифра- жена).Благодаря предварително!!!

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

  • Автор

Поне някой би ли ми казал дали може да се промени следния код, така че да не се използва библиотеката CRT и в частност командата ReadKey, защото аз пробвах само да я изтрия от кода, но програмата ме изхвърля след като въведа данните за необходимия брой студенти?

 

program EB_file;
 
uses
  crt;
 
type
  scr = array[1..10] of 2..6;
 
  stud = record
    Name: string;
    personal_id: string[10];
    fac_num: string[6];
    scores: scr;
    avr: real;
  end;
 
var
  fp: file of stud;
  student: stud;
  j, i, gender, scs: integer;
  ch: char;
  gender_digit: string[1];
  filename: string;
 
  procedure ReadStudent;
  begin
    Write('Name of student: ');
    readln(student.Name);
    if length(student.Name) > 0 then
    begin
      Write('Faculty number: ');
      readln(student.fac_num);
      Write('Personal ID: ');
      readln(student.personal_id);
      for j := 1 to 10 do
      begin
        Write('Discipline ', j, ' score: ');
        readln(student.scores[j]);
      end;
    end;
  end;
 
  procedure CreateFile;
  begin
    Write('Enter filename: ');
    readln(filename);
    Assign(fp, filename);
    rewrite(fp);
    repeat
      ReadStudent;
      if length(student.Name) > 0 then
        Write(fp, student);
    until length(student.Name) = 0;
    Close(fp);
  end;
 
  function Average(var scores: scr): real;
  var
    s: real;
  begin
    s := 0;
    for j := 1 to 10 do
      s := s + scores[j];
    Average := s / 10;
  end;
 
  procedure AverageScore;
  begin
    reset(fp);
    for i := 0 to FileSize(fp) - 1 do
    begin
      seek(fp, i);
      Read(fp, student);
      student.avr := Average(student.scores);
      seek(fp, i);
      Write(fp, student);
    end;
    Close(fp);
  end;
 
  procedure WriteStudent;
  begin
    Writeln('Faculty number: ', student.fac_num, ', average score: ', student.avr: 4: 2);
  end;
 
  procedure Report;
  begin
    reset(fp);
    Writeln('Male only students reported:');
    Writeln('----------------------------');
    while not EOF(fp) do
    begin
      Read(fp, student);
      gender_digit := Copy(student.personal_id, 9, 1);
      Val(gender_digit, gender, scs);
      if ((scs = 0) and (gender mod 2 = 0)) then
        WriteStudent;
    end;
    Close(fp);
  end;
 
begin
  CreateFile;
  AverageScore;
  Report;
  ch := ReadKey;
end.
  • Автор

От опитите ми по първия код стигнах до тук:

program kurs_file;Type tipstudent=recordname: String[30];egn: String[9];fnum: String[6];ocenka:Array[1..10] of byte;end;var FS:File of tipstudent;m,scs,gender:Integer;imefail:string[20];C:integer;gender_digit:string[1];{vavejdane na danni za studenta}Procedure addstud(var st:tipstudent);var i:integer;BeginWith st do beginwrite('Vyvedi ime:'); readln(name);if(name='exit')then exit;write('Vyvedi EGN:'); readln(egn);write('Vyvedi F.N.:'); readln(fnum);writeln('Vyvedi 10 ocenki:');for i:=1 to 10 do read(ocenka[i]);end;readln;end;{izchislqvane na sredniq uspeh}Function srus(st:tipstudent):real;var i,s:integer;Begins:=0;for i:=1 to 10 do s:=s+st.ocenka[i];srus:=s/10;end;{otpe4atvane na edin student}Procedure wrtst(st:tipstudent);var i:integer;b:string[1];beginwith st do beginwriteln('Ime:',name);writeln('EGN:',egn);writeln('F.N.:',fnum);writeln('Ocenki:');for i:=1 to 10 do write(ocenka[i],' '); writeln;writeln('Izchislqvane na sreden uspeh? y/n');readln(B);if(b='y')then writeln('Sreden uspeh:',srus(st):4:2);writeln;end;end;{otpe4atvane na celiq fail}Procedure prall;var st:tipstudent;BeginReset(fs);While not EOF(fs) dobeginRead(fs,st);wrtst(st);end;close(fs);end;{syzdavane na prazen fail}Procedure newfile;var i:integer;BeginRewrite(fs);Close(fs);Writeln('Failyt e syzdaden!');end;{dobavqne na studenti kym faila}Procedure addstudetofile;var st:tipstudent;BeginWriteln('Vavedi ime ili exit za krai');reset(fs); seek(fs,filesize(fs));Repeataddstud(st);if st.name<>'exit' then write(fs,st);until st.name= 'exit';close(fs);end;{Izvejda sr. uspeh i fak. nom. samo na mujete}procedure report(var st:tipstudent);beginreset(fs);writeln('samo muje:');writeln('------------------');while not EOF (fs) dobeginRead(fs,st);gender_digit:=copy(st.egn, 9, 1);val(gender_digit, gender, scs);if ((scs=0) and (gender mod 2 = 0)) thenwrtst(st);end;close(fs);end;BeginWrite('zadaite imeto na faila:');Readln(ImeFail);Assign(fs,ImeFail);RepeatWriteln(' ':20,'Meniu na izpalnqvanite operaii:');Writeln(' ':20,'1- suzdavane na nov fail');Writeln(' ':20,'2- informaciq za grupa studenti bez da se vavejda sr. uspeh');Writeln(' ':20,'3- izchislqvane na sredniq uspeh na vseki edin ot studentite');writeln(' ':20,'4- razpechatka za mujete');Readln(C);Case C of1:newfile;2:addstudetofile;3:prall;4:report;end;until C=0End.

Но не иска да ми го компилира и ми изкарва грешка:Error: Wrong number of parameters specified for call to "report"

Но не иска да ми го компилира и ми изкарва грешка:Error: Wrong number of parameters specified for call to "report"

В описанието горе функцията репорт приема един параметър от тип tipstudent. В case който е в главното тяло я извиквате без параметри. Като гледам кода на report, изобщо не е необходим такъв параметър - вие го използвате като локална променлива. Махнете параметъра и го преместете като локална променлива в тялото на функцията (която вече ще е процедура - бррр, това винаги ме е дразнело в Pascal, к'во значение има, дали има или няма параметър, че чак нова ключова дума да слагат...)
  • Автор

В описанието горе функцията репорт приема един параметър от тип tipstudent. В case който е в главното тяло я извиквате без параметри. Като гледам кода на report, изобщо не е необходим такъв параметър - вие го използвате като локална променлива. Махнете параметъра и го преместете като локална променлива в тялото на функцията (която вече ще е процедура - бррр, това винаги ме е дразнело в Pascal, к'во значение има, дали има или няма параметър, че чак нова ключова дума да слагат...)

 

Благодаря ти много, всичко заспа! :)

  • 3 години по-късно...

Някой да помага имам курсова на паскал :

за група студенти са зададени име егн  фак номер оценките по 10 дисциплини среден успех  да се създаде програма  използвуваща подпрограми за: 

Създаване на фаил  с информация за  групата  студенти без  да се вавежда  средния успех 

Изчисляване на средния успех  на всеки един  от студентите

Намиране броя на антоновците  които не са родени  на антонов ден  

Архивирана тема

Темата е твърде стара и е архивирана. Не можете да добавяте нови отговори в нея, но винаги можете да публикувате нова тема, в която да продължи дискусията. Регистрирайте се или влезте във вашия профил за да публикувате нова тема.

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

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

Дарение

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

Бюлетин

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

Профил

Навигация

Търсене

Търсене

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

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