Помощь - Поиск - Пользователи - Календарь
Полная версия: Procedure,function,string,record,set Of,fail.
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
SpEctAtOr
7).Введены три массива положительных вещественных чисел А[1:5] B[1:8] C[1:6]
задается точность E:
E=alfa для элемнтов массива А;
E=betta для элементов массива В;
E=gamma для элементов массива C;
где alfa,betta,gamma -- произвольно заданные числа.
для каждого элемента каждой матрицы вычисляются значения (корень третьей степени из а) , (корень третьей степени из в) , (корень третьей степени из с) следующим итерационным алгоритмом:
1. Y0=x
2. Y1=Y0-((Y0 в кубе)-X)/3*Y0
3. при |Y1-Y0|>E, Yo=Y1; повторение с п.2;
при |Y1-Y0|<=E, Y1=Y0.
Требуется для каждого массива определить номер элемента, для которого число итераций было минимальным.
Отпечатать элементы того массива, для которого вычмсленный номер оказался наибольшим.
8).Заданы две матрицы действительных чисел А[5x5] u B[6x6]. Требуется составить программу вычисления новых матриц A' u B' по следующему алгоритму:
1. в каждой матрице роводится главная левая диагональ (сверху вниз и слева направо), в результате чего образуются две треугольные матрицы;
2. для матрицы А все элементы, расположенные в верхнем треугольнике, расположить в каждой строке в порядке убывания элементов слева направо;
3. для матрицы В требуется выполнить действия, определнные в п.2 относительно нижнего треугольника.
Программа сортировки треугольной матрицы должна быть оформлена в виде процедуры. Выходным параметром этой процедуры должна быть матрица, полученная из исходной по алгоритму, описанному выше.
9).Дан текст из слов, разделенных произвольным числом пробелов. Определить число слов, начинающихся на ту же букву, что и третье слово.
10).Дан текст из слов, разделенных произвольным числом пробелов. Распечатать слова, имеющие две подряд идущие одинаковые гласные.
11).Дан список жильцов по форме: *ФИО*год рождения*месяц*день рождения*
Распечатать в алфавитном порядке фамилии жильцов, которым к заданной дате исполнилось 18 лет. Использовать RECORD.
12).Дана таблица по форме: *ФИО*отметки о посещении 10-ти занятий (0-пропустил, 1-присутствовал)*оценки задач*
Сформировать таблицу: *ФИО*количество пропусков*средний балл*количество задач*зачёт(незачёт).
Зачёт ставится студентам, пропустившим не более 5 занятий, сделавших не менее 8 задач, в том числе №9 и №10, и имеющих не менее 4-х оценок "4" и "5". Использовать тип RECORD.
13).Дан текст из строчных латинских букв, за которыми следует точка. Напечатать все буквы, входящие в текст не менее двух раз. Использовать SET OF.
14).Из какого числа разных состоит целое положительное число N и каковы эти цифры.
15).Дан символический файл "F". Переписать компоненты файла "F" в файл "Q", заменив при этом букву "а" на букву "о", и первый и последний символ на "!".
16).Компонентами файла "F" являются целые числа

СеСиЯ ГоРиТ ... Кто сделает задачи ОТБЛАГАДАРЮ ... мой e-mail dorgunu@mail.ru
Кидать никого не собираюсь...
GLuk
1. Тогда ты не в тот раздел постишь...
2. Сам пробовал хоть одну сделать?
3. Я ща на шашлыки до понедельника, когда приеду может сделаю, без всяких денег, но ессесно лишь алгоритм, а ты делаешь практическую реализацию... smile.gif
4. И что это за маты, товарисчи?? angry.gif
Относится к kile (Хаффман) в первую очередь.
SpEctAtOr
Цитата
1. Тогда ты не в тот раздел постишь...
2. Сам пробовал хоть одну сделать?
3. Я ща на шашлыки до понедельника, когда приеду может сделаю, без всяких денег, но ессесно лишь алгоритм, а ты делаешь практическую реализацию... 
4. И что это за маты, товарисчи?? 
Относится к kile (Хаффман) в первую очередь.


smile.gif заранее спасибо smile.gif
SpEctAtOr
Я ИСПРАВЛЯЮСЬ У ВАС НА ГЛАЗАХ =) ;)
СДЕЛАЛ САМ 13 ЗАДАЧУ НА МНОЖЕСТВА, МОЖЕТ ПРОВЕРИТЕ?! МОЖЕТ БЫТЬ ЕСТЬ ЧТО-ТО ЛИШНЕЕ В РЕШЕНИИ?!
Код
program zad_13;
uses crt;
Type
A = set of'A' .. 'Z';
Var
Text:string;
mnletvh,mnletvh2:set of 'A'..'Z';
i:integer;
Procedure Print(mn:A);
Var
 let:char;
Begin
 For let:='A' to 'Z' do
  If let in mn
   then
    writeln(let)
End;
Begin
CLRSCR;
writeln('BBEDITE text ');
readln(text);
mnletvh:=[];
mnletvh2:=[];
For i:=1 to length(text) do
 if text[i] in ['A'..'Z']
  then
   if not(text[i] in mnletvh)
    then
     mnletvh:=mnletvh+[text[i]]
    else
     mnletvh2:=mnletvh2+[text[i]];
print(mnletvh2);
readkey
End.
BlackShadow
Строго и со вкусом smile.gif Только, если процедура вызывается 1 раз, то может не надо её как процедуру оформлять? А, если всё таки так хочется, то опиши её как rocedure Print(Const mn:A) - так лучше будет smile.gif
SpEctAtOr
Цитата
Я ща на шашлыки до понедельника, когда приеду может сделаю, без всяких денег, но ессесно лишь алгоритм, а ты делаешь практическую реализацию... 

huh.gif huh.gif huh.gif

Цитата
Строго и со вкусом  Только, если процедура вызывается 1 раз, то может не надо её как процедуру оформлять? А, если всё таки так хочется, то опиши её как rocedure Print(Const mn:A) - так лучше будет 


спасибо за совет...
GLuk
2Spectator:
По последней цитате что-то не догнал краями??
Ща мне пока очень хреново...
GLuk
Вот, то что сделал:
Насчет задачи с треугольной матрицей: ее я решать не буду, матрицы заданы в лоб, надеюсь догадаешься.
И в первой задаче итерационный алгоритм либо коряво написан, либо я еще пьян, либо чего-то не догоняю... blink.gif
Все задачи раскиданы по процедурам.

Код

Uses
   Crt;
Type
   FIO = record
   Name:String;
   Year:Word;
   Month:Byte;
   Day:Byte;
   end;
   {‘в㤥­вл}
   Students = record
   Name:String;
   Z:array [1..10] of Boolean;    {Џ®бҐйҐ­Ёп}
   Zz:array[1..10] of Byte;       {ЋжҐ­ЄЁ §  § ¤ зЁ}
   end;
Const
    N:LongInt = 1234567;
    S:String  = '     ';
    FIOCnt = 20;
    G:Set of Char = ['Ђ','Ћ','…','“','ќ','ћ','џ','‰','›','?'];
    Alfa  = 0.03;
    Beta  = 0.004;
    Gamma = 0.01;
Var
  F,Q:File;
  Ok:Boolean;
  i,j:LongInt;
  C:Char;
  R:array[1..FIOCnt] of FIO;
  Rr:FIO;
  Code:Integer;
  Z:array[1..FIOCnt] of Students;
  Pr,Rz:Byte;
  Sa,O4:Word;
  St:String;
  A:array[1..5] of Double;
  B:array[1..8] of Double;
  Cc:array[1..6] of Double;
  X,Y:Real;


{----------------------------------------------------------}
{?§ Є ЄЁе жЁда б®бв®Ёв 楫®Ґ зЁб«® N Ё Є®«ЁзҐбвў® нвЁе жЁда}
Procedure DigitsCount;
begin
    Str(N,S);
    WriteLn('—Ёб«® N б®бв®Ёв Ё§ ',Ord(S[0]),' жЁда - "',S,'"');
end;
{----------------------------------------------------------}

Procedure ReplaceA;
{‡ ¬Ґ­Ёвм ЎгЄўл Ђ ­  Ћ, Ё Ї®бв ўЁвм !}
begin
    Assign(F,'F');
    Reset(F,1);
    Assign(Q,'Q');
    ReWrite(Q,1);
    C:='!';
    BlockWrite(Q,C,1);
    WriteLn('ЏҐаҐ§ ЇЁблў Ґ¬ д ©«...');
    For i:=1 to FileSize(F)-2 do
    begin
         GotoXY(1,3); Write('ќ«Ґ¬Ґ­в ­®¬Ґа ',i+1);
         BlockRead(F,C,1);
         If C='A' then C:='O';
         BlockWrite(Q,C,1);
    end;
    C:='!';
    BlockWrite(Q,C,1);
    Close(F);
    Close(Q);
end;

Procedure After18;
begin
    Write(#13#10'‚ўҐ¤ЁвҐ ¤ вг ў д®а¬ вҐ („„.ЊЊ.ѓѓѓѓ) Ё«Ё, Ґб«Ё § Ї ¤«®'#13#10+
    +'­ ЎЁа вм, ­ ¦¬ЁвҐ ‚ў®¤ (Ї® 㬫з. 12.08.1985): ');
    ReadLn(S);
    If S='' then S:='12.08.1985';
    {}
    Val(Copy(S,1,Pos('.',S)-1),Rr.Day,Code);
    Delete(S,1,Pos('.',S));
    Val(Copy(S,1,Pos('.',S)-1),Rr.Month,Code);
    Delete(S,1,Pos('.',S));
    Val(S,Rr.Year,Code);
    Dec(Rr.Year,18);
    {‡ Ї®«­пҐ¬ Ї®«п}
    For i:=1 to FIOCnt do
    With R[i] do
    begin
         S[0]:=Chr(Random(3)+10);
         S[1]:=Chr(Random(32)+128); {128-159}
         For j:=2 to Ord(S[0]) do
             S[j]:=Chr(Random(15)+160); {160-175}
         Name:=S;
         Year:=Random(50)+1956;
         Month:=Random(12)+1;
         Day:=Random(25)+1;  {­  ўбпЄЁ© б«гз © :)}
    end;
    TextColor(White);
    WriteLn('‘ЇЁб®Є б®ўҐа襭­®«Ґв­Ёе:');
    TextColor(LightGray);
    For i:=1 to FIOCnt do
    begin
         Ok:=False;
         If R[i].Year<Rr.Year then Ok:=True
         else
             If R[i].Year=Rr.Year then
                If R[i].Month<Rr.Month then Ok:=True
                else
                    If R[i].Month=Rr.Month then
                       If R[i].Day<=Rr.Day then Ok:=True;
         If Ok then
         begin
              WriteLn(R[i].Name,': ',R[i].Day,':',R[i].Month,':',R[i].Year);
         end;
    end;
end;

Procedure PureStudents;
begin
    For i:=1 to FIOCnt do
    With Z[i] do
    begin
         {‘«гз ©­®Ґ "Ё¬п"}
         S[0]:=Chr(10);
         S[1]:=Chr(Random(32)+128); {128-159}
         For j:=2 to Ord(S[0]) do
             S[j]:=Chr(Random(15)+160); {160-175}
         Name:=S;
         For j:=1 to 10 do
         If Random(50)<25 then
         begin
              Z[j]:=True;
              Zz[j]:=Random(2)+3;
         end
            else
                begin
                     Z[j]:=False;
                     Zz[j]:=Random(3)+3;
                end
    end;
{‚®®ЎйҐ, Ў«пвм, гб«®ўЁҐ ¬®Ј Ўл Ё ­®а¬ «м­® ®д®а¬Ёвм #(}
{’ Ў«Ёж  : - ”?Ћ - Љ®«-ў® Їа®ЇгбЄ®ў - ЋЎйЁ© Ў «« - Љ®«-ў® § ¤ з - ‡ з/­Ґ§.}
{Љ®«-ў® аҐиҐ­­ле § ¤ з п в Є Ї®­Ё¬ о??}
{‘Є®аҐ© ўбҐЈ® ­ЁдЁЈ  ­Ґ в Є, ­® Є Є ®д®а¬Ё«, в Є Ё Ї®«гз ©...}
{‘«гз © б ¤ҐбпвЄ ¬Ё б ¬ ўла ў­Ёў ©, в ¬  Ї аг бва®зҐЄ ¤®Ў ўЁвм}
    WriteLn(& #39;ЙНННННННННННННННННЛННННННННННЛНННННННН
ННННННННЛННННННННННННННЛННННННН»');
    WriteLn('є       ”?Ћ       є Џа®ЇгбЄЁ є  ‘।­Ё© Ў ««  є Љ®«-ў® § ¤ з є ‡ зҐв є');
    WriteLn(& #39;МНННННННННННННННННОННННННННННОНННННННН
ННННННННОННННННННННННННОННННННН№');

    For i:=1 to FIOCnt do
    With Z[i] do
    begin
         S:='є '+Name+'      є ';
         Pr:=0; Rz:=0;
         Sa:=0; O4:=0;
         For j:=1 to 10 do
         begin
              If not Z[j] then Inc(Pr);
              Inc(Sa,Zz[j]);
              If Zz[j]>2 then Inc(Rz);
              If Zz[j]>=4 then Inc(O4);
         end;
         Str(Pr,St); {Љ®«-ў® Їа®ЇгбЄ®ў}
         S:=S+'   '+St+'     є';
         Str(Sa DIV 10,St); {‘।­Ё© Ў ««}
         S:=S+'      '+St+'         є';
         Str(Rz,St);  {Љ®«-ў® аҐиҐ­­ле § ¤ з}
         S:=S+'       '+St+'      є';
         If (Zz[9]>=4) and (Zz[10]>=4) and (Rz>=8) and (Pr<=5) and (O4>4) then
            S:=S+' „Ђ    є' else S:=S+' Ќ…’   є';
         WriteLn(S);
    end;
    WriteLn(& #39;ИНННННННННННННННННКННННННННННКНННННННН
ННННННННКННННННННННННННКНННННННј');
end;

Procedure AOE;
begin
    S:='„ ­ ⥪бв  Ё§    б«®ў       а §¤Ґ«Ґ­­ле         Їа®Ё§ў®«м­л¬   зЁб«®¬ Їа®ЎҐ«®ў.'+
       +' ‚뢥бвЁ            б«®ў  б    Ё¤гйЁ¬Ё Ї®¤ап¤ ¤ўг¬п Ј« б­л¬Ё. „«Ё­­®иҐҐҐ... ¦Ёў®в­®Ґ.';
    {“ЎЁа Ґ¬ "«Ёи­ЁҐ" Їа®ЎҐ«л}
    S:=S+' ';  {Џа®ЎҐ« ў Є®­жҐ бва®ЄЁ, ®Ўп§ в.}
    While Pos('  ',S)<>0 do Delete(S,Pos('  ',S),1);
    {„Ґ« Ґ¬ ЎгЄ®ўЄЁ Ў®«миЁ¬Ё}
    For i:=1 to Length(S) do
    If (Ord(S[i])>159) and (Ord(S[i])<176) then S[i]:=Chr(Ord(S[i])-32)
    else
        If (Ord(S[i])>223) and (Ord(S[i])<240) then S[i]:=Chr(Ord(S[i])-80);
    While Length(S)>1 do
    begin
         St:=Copy(S,1,Pos(' ',S)-1);
         Ok:=False;
         i:=1;
         While (i<Ord(St[0])) and (not Ok) do
         begin
              If (St[i] in G) and (St[i+1] in G) then Ok:=True;
              Inc(i);
         end;
         If Ok then
         begin
              Write(Copy(St,1,i-2));
              TextColor(White);
              Write(Copy(St,i-1,2));
              TextColor(LightGray);
              WriteLn(Copy(St,i+1,Length(S)));
         end;
         Delete(S,1,Pos(' ',S));
    end;
end;

Procedure ThirdWordA;
begin
    S:='„ ­ ⥪бв  Ё§    б«®ў       а §¤Ґ«Ґ­­ле         Їа®Ё§ў®«м­л¬   зЁб«®¬ Їа®ЎҐ«®ў.'+
       +' ЋЇаҐ¤Ґ«Ёвм зЁб«® б«®ў, ­ зЁ­ ойЁебп ­  вг ¦Ґ ЎгЄўг, зв® Ё ваҐвмҐ б«®ў®. ?и Є. ?¬г­­®¤ҐдЁжЁв.';
    {“ЎЁа Ґ¬ "«Ёи­ЁҐ" Їа®ЎҐ«л}
    S:=S+' ';  {Џа®ЎҐ« ў Є®­жҐ бва®ЄЁ, ®Ўп§ в.}
    While Pos('  ',S)<>0 do Delete(S,Pos('  ',S),1);
    {„Ґ« Ґ¬ ЎгЄ®ўЄЁ Ў®«миЁ¬Ё}
    For i:=1 to Length(S) do
    If (Ord(S[i])>159) and (Ord(S[i])<176) then S[i]:=Chr(Ord(S[i])-32)
    else
        If (Ord(S[i])>223) and (Ord(S[i])<240) then S[i]:=Chr(Ord(S[i])-80);
    {“¤ «пҐ¬ ЇҐаўлҐ ¤ў  б«®ў }
    Delete(S,1,Pos(' ',S));
    Delete(S,1,Pos(' ',S));
    C:=S[1];
    {“¤ «пҐ¬ ваҐвмҐ}
    Delete(S,1,Pos(' ',S));
    Rz:=0;
    While Length(S)>1 do
    begin
         St:=Copy(S,1,Pos(' ',S)-1);
         If St[1]=C then
         begin
              Inc(Rz);
              WriteLn(St);
         end;
         Delete(S,1,Pos(' ',S));
    end;
    WriteLn('Љ®«ЁзҐбвў® б«®ў а ў­® ',Rz);
end;

Procedure IterationCount;
{
‚ўҐ¤Ґ­л ваЁ ¬ ббЁў  Ї®«®¦ЁвҐ«м­ле ўҐйҐб⢥­­ле зЁбҐ« Ђ[1:5] B[1:8] C[1:6]
§ ¤ Ґвбп в®з­®бвм E:
               E=alfa ¤«п н«Ґ¬­в®ў ¬ ббЁў  Ђ;
               E=betta ¤«п н«Ґ¬Ґ­в®ў ¬ ббЁў  ‚;
               E=gamma ¤«п н«Ґ¬Ґ­в®ў ¬ ббЁў  C;
Ј¤Ґ alfa,betta,gamma -- Їа®Ё§ў®«м­® § ¤ ­­лҐ зЁб« .
¤«п Є ¦¤®Ј® н«Ґ¬Ґ­в  Є ¦¤®© ¬ ваЁжл ўлзЁб«повбп §­ зҐ­Ёп (Є®аҐ­м ваҐв쥩
б⥯Ґ­Ё Ё§  ) , (Є®аҐ­м ваҐв쥩 б⥯Ґ­Ё Ё§ ў) , (Є®аҐ­м ваҐв쥩 б⥯Ґ­Ё Ё§ б)
б«Ґ¤гойЁ¬ ЁвҐа жЁ®­­л¬  «Ј®аЁв¬®¬:
               1. Y0=x
               2. Y1=Y0-((Y0 ў ЄгЎҐ)-X)/3*Y0
               3. ЇаЁ |Y1-Y0|>E, Yo=Y1; Ї®ўв®аҐ­ЁҐ б Ї.2;
ЇаЁ |Y1-Y0|<=E, Y1=Y0.
’ॡгҐвбп ¤«п Є ¦¤®Ј® ¬ ббЁў  ®ЇаҐ¤Ґ«Ёвм ­®¬Ґа н«Ґ¬Ґ­в , ¤«п
Є®в®а®Ј® зЁб«® ЁвҐа жЁ© Ўл«® ¬Ё­Ё¬ «м­л¬.
ЋвЇҐз в вм н«Ґ¬Ґ­вл в®Ј® ¬ ббЁў , ¤«п Є®в®а®Ј® ўлз¬б«Ґ­­л© ­®¬Ґа
®Є § «бп ­ ЁЎ®«миЁ¬.
}

begin
    For i:=1 to 5 do A[i]:=Random(10);
    For i:=1 to 8 do B[i]:=Random(20);
    For i:=1 to 6 do Cc[i]:=Random(30);
    Sa:=0;
    A[1]:=27;
    For i:=1 to 5 do
    begin
         Y:=A[i];
         X:=Y-(Y*Y-1)/3;
         Rz:=0;
         Repeat
               Inc(Rz);
               Y:=X;
               X:=Y-((Y*Y*Y)-A[i])/3*Y;
         Until Abs(X-Y)<Alfa;
         If Rz>Sa then Sa:=Rz;
    end;
end;

Begin
    ClrScr;
    Randomize;
    DigitsCount;
    ReplaceA;
    After18;
    PureStudents;
    AOE;
    ThirdWordA;
    IterationCount;
End.
SpEctAtOr
GLuk ЋѓђЋЊЌЋ… ‘ЏЂ‘?ЃЋЋЋЋЋ!!!ЋЋЋЋЋ!ЋЋ!Ћ!Ћ!ЋЋ!Ћ!Ћ!ЋЋ!Ћ!Ћ!Ћ!Ћ!Ћ!Ћ!Ћ!!!!
ЃЋ‹њ?Ћ… ‘ЏЂ‘?ЃЋЋЋЋЋЋЋЋЋЋ!Ћ!ЋЋ!Ћ!Ћ!Ћ!ЋЋЋЋЋЋЋЋЋЋ!!!!!!!!!!ЋЋЋЋЋЋЋ!
GLuk
Это спасибо по-японски?? ;)

Добавлено позже:
А насчет 16 задачи - это из цикла додумай сам??
Altair
GLuk монстр! smile.gif
Столько нарешал.
И не лень ему было!
Повышу -ка рейтинг ему...
GLuk
Я б еще и 16-ю решил, только вот сложная она слишком... ;)
-Spectator-
Спасибо тебе нереальное!!! правда наверное долго я с этим спасибо затянул)))
но может именно благодаря тебе я дотянул до 5-го курса))) smile.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.