Студентам с лабораторными сюда (архивная - 2015)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by _Great_, 20 Jun 2007.

Thread Status:
Not open for further replies.
  1. r0

    r0 Elder - Старейшина

    Joined:
    17 Jul 2005
    Messages:
    450
    Likes Received:
    149
    Reputations:
    147
    Прямоугольная плоскость задана координатами (x1,y1) - левая верх. точка и (x2,y2) - правая нижняя.
    По границе ползет "удав" со скоростью V. Внутри области движется точка с скорость v1. Она начинает свое движение вниз от границы области на заданном расстоянии S от левого верхнего угла под углом A к нижней линии области. Точка движется, отражаясь от стенок, до тех пор пока не столкнется с "удавом". Обьекты начинают движение одновременно. При стократном столкновении программа завершает работу, оповещая пользователя.
    Реализовать: Pascal
     
  2. ~Lexx~

    ~Lexx~ Elder - Старейшина

    Joined:
    30 Sep 2006
    Messages:
    195
    Likes Received:
    28
    Reputations:
    0
    лень грузить студию - получи на пасе


    Code:
    Begin
    readln(R);
    x:=0;
    N:=0;
    (*Суммируем в первой четверти - в конце домножаем на 4 :-) *)
    while x<R do begin 
             y:=0; 
             while y<=R do begin 
                   if (sqr(R) = (sqr(x) + sqr(y))) then  N:=N+1;
                   y:=y+1;
             end;
             x:=x+1;
    end;
    
    N:=N*4;
    
    writeln(N);
    end.
    
    конечно это банальная отиска - можно еще дописать ограничения области перебора- чтобы не снуляперебирать, а начиная с некоторой точки, отстоящей от нуля. НО будет пахать и так.
     
    #62 ~Lexx~, 23 Oct 2007
    Last edited: 25 Oct 2007
  3. .:baclan:.

    .:baclan:. New Member

    Joined:
    21 Nov 2006
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    нужна лаба на С: Сортировка с помощью включения используя метод деления пополам,
    Пирамидальная сортировка. по возрастанию.
    Необходимо написать программу, которая должна:
    1. Создавать не менее 3х массивов так, чтобы их длины соотносились как N, N+a, N+2a. (Например, 1000, 3000 и 5000).
    Чем больше массивов вы будете рассматривать – тем лучше.
    2. Каждый из массивов необходимо заполнить произвольными (случайными) значениями.
    При заполнении массивов необходимо придерживаться одной тактики, поскольку способ заполнение может иметь определенное значение.
    Например, можно заполнить массив из 1000 элементов случайными числами от 1 до 5 или же от 1 до 10000 – скорее всего производительность алгоритмов сортировки будет отличаться.
    3. Сохранить исходные массивы в файле или файлах (в текстовом виде).
    4. Для каждого из исходных массивов, а также отсортированного в прямом порядке и отсортированного в обратном порядке, каждым из предложенных методов выполнить сортировку. Необходимо вычислить число сравнений, число перемещений и время работы каждого алгоритма, в каждом случае.
    5. Результаты выполнения п.4. должны выводиться на экран или сохраняться в файле в таблице (таблицах):

    Число сравнений / число перемещений / время
    N Способ №1 Способ №2
    Исходный массив Отсортированный массив Обратно отсортированный Исходный массив Отсортированный массив Обратно отсортированный
    N
    N+a
    N+2a
    N+3a

    6. Результаты сортировки исходных массивов сохранить в файле (файлах), в текстовом виде.
    7. Необходимо представить результаты в виде графика (графиков)
    8. Необходимо быть готовым обосновать полученные результаты
    9. Любые эксперименты, усовершенствования и творческий подход будут приветствоваться!
    10. Необходимо ориентироваться в исходном коде программы и быть готовым ответить на дополнительные вопросы.
    11. Необходимо подготовить и представить отчет о работе. В отчете должны быть представлены краткие описания используемых алгоритмов, должно быть приведено краткое описание работы программы и анализ полученных результатов.

    очсрочно!те до 23:00 26.10.2007г

    сроки неожиданно продлились до 3.11. помогите плз
     
    #63 .:baclan:., 25 Oct 2007
    Last edited: 29 Oct 2007
  4. Woland

    Woland New Member

    Joined:
    22 Oct 2007
    Messages:
    4
    Likes Received:
    1
    Reputations:
    0
    Проблемка с Visual Basic 6.0

    Значить такой код на кнопочке.
    Code:
    Private Sub Cmd1_Click()
    Dim i, j As Integer
    Dim N, M As Integer
    Dim Coun(), Film(), Mucs() As String
    N = InputBox("Ââåäèòå êîëè÷åñòâî ñòðàí")
    M = InputBox("?")
    ReDim Coun(1 To N, 1 To M), Film(1 To N, 1 To M), Mucs(1 To N, 1 To M)
    For i = 0 To N - 1
    For j = 0 To M * 2
    If j = 0 Then
    Coun(i, j) = InputBox("Coun" & i)
    [COLOR=Red]List1[/COLOR](i).List(j) = Coun(i, j)
    ElseIf (i / 2) - Fix(i / 2) = 0 Then
    Film(i, j) = InputBox("Film" & i)
    List2(i).List(j) = Film(i, j)
    Else
    Mucs(i, j) = InputBox("Mucs" & i)
    List3(i).List(j) = Mucs(i, j)
    End If
    Next j
    Next i
    End Sub
    
    и выдает ошибку на List1 в чем проблема?
     
  5. FRik07

    FRik07 New Member

    Joined:
    27 Oct 2007
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    Разграничегие доступа

    Всех приветствую. Вопрос вот в чем: задали в универе лабу: написать программу под Win для добавления учетных записей в системе и назначения им (группам) прав. Как такое реализовывется? Где об этом почитать? Если можно, пример..

    p.s. по возможности написать руткит для работы программы не с админскими правами.
     
  6. TTyck

    TTyck Elder - Старейшина

    Joined:
    12 Nov 2005
    Messages:
    91
    Likes Received:
    41
    Reputations:
    11
    Многоразрядные числа представлены в виде одномерного массива. Необходимо:
    - реализовать операцию возведения многозначного числа в степень;
    - реализовать операцию умножения многозначного числа на многозначное число;
    Неоходимо реализовать на Pascal'e.
    Заранее спасибо)
     
  7. helat

    helat Elder - Старейшина

    Joined:
    22 Jan 2007
    Messages:
    166
    Likes Received:
    45
    Reputations:
    5
    http://www.kursovik.com/programming/109011.html


    Расчет количества дней между датами

    Программа расчитывает количество дней между двумя датами, заданных тремя чслами - год, месяц, день.
    Расчет ведется по всем правилам, с учетом високосных годов.

    нужен сабж на паскале (Pascal)
     
  8. Dumkopff

    Dumkopff Elder - Старейшина

    Joined:
    5 Apr 2006
    Messages:
    60
    Likes Received:
    25
    Reputations:
    0
    helat
    Code:
    
    program data;
    
    uses crt;
    label escape,asd,dsa,contin;
    var
    m1:array[1..12] of integer;
    m2:array[1..12] of integer;
    a:array[1..3] of longint;
    b:array[1..3] of longint;
    err:boolean;
    cd:char;
    i:byte;
    razn,d1,d2,mo1,mo2,y1,y2:longint;
    begin
    clrscr;
    writeln('Input first date');
    writeln('Day');
    read(a[1]);
    writeln('Month');
    read(a[2]);
    writeln('Year');
    read(a[3]);
    writeln('Input second date');
    writeln('Day');
    read(b[1]);
    writeln('Month');
    read(b[2]);
    writeln('Year');
    read(b[3]);
    
    for i:=1 to 12 do
    begin
    
    if (i=1) or (i=3) or (i=5) or (i=7) or (i=8) or (i=10) or (i=12) then
    begin
    m1[i]:=31;
    m2[i]:=31;
    end
    else
    begin
    m1[i]:=30;
    m2[i]:=30;
    end;
    end;
    
    if a[3]/4=int(a[3]/4) then m1[2]:=29 else m1[2]:=28;
    if b[3]/4=int(b[3]/4) then m2[2]:=29 else m2[2]:=28;
    
    clrscr;
    if (a[1]<=0) or (b[1]<=0) or (a[2]<=0) or (b[2]<=0) or (a[3]<=0) or (b[3]<=0) then err:=true;
    if (a[2]>12) or (b[2]>12) then err:=true;
    if a[1]>m1[a[2]] then err:=true;
    if b[1]>m2[b[2]] then err:=true;
    if err=true then
    begin
    writeln('Error! Please check your data.');
    goto escape;
    end;
    
    if a[3]>b[3] then
    dsa:
    begin
    d1:=a[1];
    mo1:=a[2];
    y1:=a[3];
    d2:=b[1];
    mo2:=b[2];
    y2:=b[3];
    goto contin;
    end;
    
    if b[3]>a[3] then
    asd:
    begin
    d1:=b[1];
    d2:=a[1];
    mo1:=b[2];
    mo2:=a[2];
    y1:=b[3];
    y2:=a[3];
    goto contin;
    end;
    
    if b[3]=a[3] then
    begin
    if a[2]>b[2] then goto dsa;
    if b[2]>a[2] then goto asd;
    if b[2]=a[2] then
    begin
    if a[1]>b[1] then goto dsa;
    if a[1]<b[1] then goto asd;
    end;
    end;
    
    contin:
    
    razn:=0;
    repeat
    if y2/4=int(y2/4) then m1[2]:=29 else m1[2]:=28;
    razn:=razn+1;
    if (d2<=m1[mo2]) and (mo2<=12)  then d2:=d2+1;
    
    if (d2>m1[mo2]) and (mo2<12) then
    begin
    mo2:=mo2+1;
    d2:=1;
    end;
    if (d2>m1[mo2]) and (mo2=12) then
    begin
    y2:=y2+1;
    d2:=1;
    mo2:=1;
    end;
    until (d1=d2) and (mo1=mo2) and (y1=y2);
    escape:
    writeln('Difference');
    writeln(razn);
    writeln('days');
    cd:=readkey;
    end.
    
    не самая удачная реализация, но считает прально. =\
     
    1 person likes this.
  9. helat

    helat Elder - Старейшина

    Joined:
    22 Jan 2007
    Messages:
    166
    Likes Received:
    45
    Reputations:
    5
    прога то считает.но очень мудрёная.
    у кого что ещё есть?
    мб через юлианский день высчитывать
     
  10. G1yuK

    G1yuK Elder - Старейшина

    Joined:
    25 May 2007
    Messages:
    41
    Likes Received:
    9
    Reputations:
    0
    когда то сам искал, нужно было помочь человеку с задачкой, вот через Юлианский день
    Code:
    Program Jules;
    {
      All of the explanation needed is the source.
    
      "May this routine make all your code run faster"
                                - Programmer's Prayer
    }
    
    
    Type
      Str3 = string[3];  {for a month name}
      str9 = string[9];
    Var
      Date1,Date2    : string[12]; {the dates to compare}
      Number_of_days : integer;    {Number of days between the two dates}
    
    Function Number_of_Month (Month : str3) : integer;
    {Returns the sequential number of the month; Jan=1 & Dec = 12}
    Var
      Temp : integer;
      Dates : string[36];
    Begin
      {Notice how I scan the string. Less code than a case!}
      Dates := 'JanFebMarAprMayJunJulAugSepOctNovDec';
      Number_of_Month := round((pos(Month,Dates)-1)/3) +1;
    End;
    
    function Since_Beginning (month,day,year : integer) : integer;
    var
       DayCount  : integer;   {Holds the number of days}
       Temp      : integer;   {Just a temporary holding integer}
       Num_Leaps : integer;   {Holds the number of leap years}
    Begin
      Num_Leaps := 0;
      DayCount  := 0;
      Writeln;
      Writeln('Scanning ',month,'/',day,'/',year,' ...');
      for Temp := 1 to year do   {Gets the number of leap years}
        If (temp mod 4) = 0 then Num_Leaps := Num_Leaps + 1;
      Writeln('Found ',num_leaps,' leap years occuring');
      DayCount := (year * 365) + Num_Leaps;  {calcs year & leap year}
      Writeln('Making ',abs(daycount),' days in ',year,' YEARS');
      DayCount := DayCount + Day; {adds in days}
      Writeln('Plus ',day,' days makes ',abs(daycount),
              ' days in YEAR + DAY');
    
      For Temp := 1 to Month-1 do
    {
     Couldn't help but put a large case here.
     The number is the number of days in that month. Feb is 28 because
     the leap year counter takes the leap year into effect
    }
      Begin
        Case Temp of
          1 : DayCount := DayCount + 31; {jan}
          2 : DayCount := DayCount + 28; {feb}
          3 : DayCount := DayCount + 31; {mar}
          4 : DayCount := DayCount + 30; {apr}
          5 : DayCount := DayCount + 31; {may}
          6 : DayCount := DayCount + 30; {jun}
          7 : DayCount := DayCount + 31; {jul}
          8 : DayCount := DayCount + 31; {aug}
          9 : DayCount := DayCount + 30; {sep}
         10 : DayCount := DayCount + 31; {oct}
         11 : DayCount := DayCount + 30; {nov}
         12 : DayCount := DayCount + 31; {dec}
        end; {case of temp}
      end; {for loop}
      Since_Beginning := DayCount;
      Writeln('Plus ',month,' months makes ',abs(daycount),
              ' days since 00/00/00');
    end; {function SINCE_BEGINNING}
    
    
    Function Days_Elapsed (date1,date2 : str9) : integer;
    Var
      Month1,Day1,Year1,
      Month2,Day2,Year2 : integer; {sets of dates}
      Temp1,Temp2       : integer; {for the VAL function}
    Begin
      Month1 := Number_of_Month(Copy(date1,4,3));  {gets the month number}
      Month2 := Number_of_Month(Copy(date2,4,3));  {gets the month number}
      Val(copy(date1,1,2),Day1,Temp2);      {get everything into numerics}
      Val(copy(date2,1,2),Day2,Temp2);      { "        "      "      "   }
      Val(copy(date1,8,2),year1,temp2);     { "        "      "      "   }
      Val(copy(date2,8,2),year2,temp2);     { "        "      "      "   }
      Val(copy(date1,8,2),year1,temp2);     { "        "      "      "   }
      Val(copy(date2,8,2),year2,temp2);     { "        "      "      "   }
      Days_Elapsed := Since_Beginning(month2,day2,year2) -
                      Since_Beginning(month1,day1,year1);
                      {The difference of the two numbers}
    end;
    
    Begin {Main}
      Date1 := '27 Jan 64';  {My birthday}
      Date2 := '20 Nov 85';  {When I last edited this program}
      ClrScr;                {If you want originality, call an author...}
      Writeln('JULES   -  Finds the number of days between two dates ',
              'using a JULIAN manner.');
      Writeln('Author  -  David Strickler');
      Writeln('Address -  FIDO 101/45  [Midnight DEC]');
      Writeln;
      Writeln('This program shows a pretty good way to find the number');
      Writeln('of days between two dates. It is reasonably fast and');
      Writeln('has a mininum of source code to it. Please use it as');
      Writeln('you wish. The only right I claim, is that is it officialy');
      Writeln('in the Public Domain.');
      Writeln;
      {Call the main function. Very neat & clean. Two in, one out}
      Number_of_Days := Days_Elapsed(date1,date2);
      Writeln('Number of days between ',date1,' and ',date2,' is ',
               Number_of_days);
    End.
    
    http://pascal.sources.ru/datetime/jules.htm


    Плюс ко всему прочему большой набор исходников для работы с Date на Pascal
    http://pascal.sources.ru/datetime/index.htm
     
  11. TOLIA

    TOLIA Elder - Старейшина

    Joined:
    20 Aug 2007
    Messages:
    54
    Likes Received:
    9
    Reputations:
    -11
    Заставка оператор создайте заставку :
    ******************
    * Программа *
    * вычесления чисел *
    * Автор: *
    * *
    * *
    ******************
    На Паскале создайте пожалуйсто, если такое ваще реально создать. Буду очень благодарен

    И еще : Вывести сумму числа введенного с клавиатуры с числом 10
     
  12. ~Lexx~

    ~Lexx~ Elder - Старейшина

    Joined:
    30 Sep 2006
    Messages:
    195
    Likes Received:
    28
    Reputations:
    0
    ))))
    тоесть заставку? всмысле под винду - и там типа в спящем режиме выводит вреальном времени? Или просто перед выполнением программы вывсти на экран)))
     
  13. TOLIA

    TOLIA Elder - Старейшина

    Joined:
    20 Aug 2007
    Messages:
    54
    Likes Received:
    9
    Reputations:
    -11
    ну наверное перед выполнением программы вывести на экран и это две разные программы
     
  14. ZirroCool

    ZirroCool Elder - Старейшина

    Joined:
    16 Sep 2006
    Messages:
    128
    Likes Received:
    55
    Reputations:
    20
    Code:
    var
    s:string;
    a:integer;
    begin
      writeln('Vvedi 4islo');
      readln(s);
      a:=strtoint(s)+10;
      writeln('rezultat '+inttostr(a)+' ...');
      Writeln('Press Enter to continue');
      Readln;
    end.

    И вот по поводу заставки!

    P.S.Не бойся гугля он не кусается!
     
    #74 ZirroCool, 6 Nov 2007
    Last edited: 6 Nov 2007
  15. TOLIA

    TOLIA Elder - Старейшина

    Joined:
    20 Aug 2007
    Messages:
    54
    Likes Received:
    9
    Reputations:
    -11
    Спасибо, а вставить этот код в Делпхи 7 нормально будет ?
     
  16. ZirroCool

    ZirroCool Elder - Старейшина

    Joined:
    16 Sep 2006
    Messages:
    128
    Likes Received:
    55
    Reputations:
    20
    Да не то что нормально,а в самый раз!))
     
  17. Red_Red1

    Red_Red1 Banned

    Joined:
    12 Jan 2007
    Messages:
    246
    Likes Received:
    258
    Reputations:
    83
    2 helat
    Вот тоже решил написать свой вариан. Когда тестил, использовал ссылку которую ты привел. Также проверил програмку от G1yuK (от Dumkopff запустить неудалось). Вывод такой - програмка приведенная по ссылке и предложеная G1yuK ошибается на единицу если второй (большей) датой ставим високосный год. Тестил на таких примерах:
    1984.01.01 Первая дата
    1984.02.29 Вторая дата
    Результат = 59
    Если ставим
    1984.01.01 Первая дата
    1984.03.01 Вторая дата
    Результат = 59 (Тоже !!!!)
    Хотя 1984 год есть високосный и разница между 1 января и 1 марта - 60 дней.
    Если взять даты:
    1984.01.01 Первая дата
    1984.12.31 Вторая дата
    Результат = 364 (неверно, должно быть 365!!!)
    Если ставим
    1984.01.01 Первая дата
    1985.01.01 Вторая дата
    Результат = 366 (Правильно, НО КУДА ДЕЛСЯ 365 день?)
    Еще ты жаловался на "мудреный" код от Dumkopff.
    Привожу свою реализацию. Алгоритм и код очень простой, и у меня нету этой ошибки в високосным годом. Прошу потестить может и я где ошибся :)
    Да и еще программа простая но есть минусы: не проверяет правильность введеной даты, не проверяет соответсвие дней месяцу т.е. можно написать 2000.02.35. Но при корректном вводе считает правильно (я надеюсь).
    Code:
    uses crt;
    type
     mymas=array[1..12] of integer;
    const d1:mymas=(0,31,59,90,120,151,181,212,243,273,304,334);  {Dlya NE vicokosnogo}
          d2:mymas=(0,31,60,91,121,152,182,213,244,274,305,335);   {Dlya vicokosnogo}
    var data:string[10];
        d:mymas;
        god,mes,den,kol_v:integer;
        kol_dney:array[1..3] of longint;
        er,i:integer;{for error and cikl :)}
    begin
    clrscr;
    
    for i:=1 to 2 do
      begin
        readln(data);  {GGGG.MM.DD}
        Val(Copy(data,1,4),god,er);
        Val(Copy(data,6,2),mes,er);
        Val(Copy(data,9,2),den,er);
    
        {Proverka na "visokosnost"}
        if ((god mod 4)=0) and (((god mod 100)<>0)or((god mod 400)=0)) then d:= d2 {Dlya vicokosnogo}
        else d:= d1;{Dlya NE vicokosnogo}
    
        kol_v:=((god-1) div 4)-((god-1) div 100)+((god-1) div 400);
        kol_dney[i]:=god*365+kol_v+d[mes]+den;
      end;
      
    kol_dney[3]:=kol_dney[2]-kol_dney[1];
    writeln(kol_dney[3],' Days');
    write('HAI+IMUTE ''Enter'' DLYA BUXODA');
    readln;
    end.
    
     
    #77 Red_Red1, 8 Nov 2007
    Last edited: 8 Nov 2007
  18. Release

    Release New Member

    Joined:
    8 Nov 2007
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    Арифметическое выражение - Pascal

    Помогите пжалста)

    Строка символов представляет собой арифметическое выражение, состоящее из чисел, знаков арифметических операций(*, / , + , - ) и открывающихся и закрывающихся круглых скобок.Проверить его корректность

    Реализация Pascal.

    При этом соблюдается следующее:

    1) Первым и последним символами должны быть числа или закрывающаяся скобка.
    2) Перед и после арифметической операции должны быть числа или откр. скобка
    3) Если скобка открывается, то она обязательно должна закрыться, кол-во скобок не ограничено.
    4) Первой арифм. операцией должна выполнятся в скобках, затем умножение, деление, сумма, разность.

    Слегка нудновато...но все же ;)
     
  19. affa

    affa New Member

    Joined:
    11 Nov 2007
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    Люди помогите плис с 3мя задачами на паскале

    1)

    дан 3х мерный массив Q(mxnxq) длинного типа. Умножить каждую строку страницы на столбец U(q) целого типа и посчитать в полученной матрице кол-во положительных, отрицательных и нулевыхэлементов

    2)

    в символьной строке заменить все гласные буквы на "_" , рассчитать кол-во цифр, русских, английских букв, а также остальных символов.

    3)

    список строк содержит наименования учебных дисциплин. Отфильтровать все недопустимые символыи сформировать список, содержащий только предметы, наименования которых начинаютса с согласной буквы. В сформированном списке рассчитать число слов и букв в каждом наименовании
     
  20. MegaBits

    MegaBits Elder - Старейшина

    Joined:
    30 Aug 2006
    Messages:
    151
    Likes Received:
    24
    Reputations:
    10
    Задание.
    1. Определить структурный тип, содержащий следующие поля:
    - символьный массив, используемый для хранения строки, например, с именем студента,
    - указатель на тип char – для организации динамического массива, хранящего строку, например, с фамилией студента.
    Остальные поля выбрать по варианту, приведенному в таблице 2.
    Использовать одну из переменных для хранения некоторого идентификатора (номера); указатель на несимвольный тип – для организации динамического массива целых или плавающих чисел; другую переменную – для хранения размера этого массива;
    Дополнить структурный тип любыми полями по своему выбору.
    1. Переменная типа double;
    2. Указатель на тип double;
    3. Переменная символьного типа.
    2. Определить функции:
    • инициализации структуры;
    • заполнения массива чисел;
    • вывода на экран массива чисел;
    • ввода информации в строки имени и фамилии и другие поля;
    • вывода на экран всех полей структуры, кроме массива чисел;
    • функцию освобождения динамической памяти.
    У половины функций, по выбору студента, одним из аргументов должен быть указатель на структуру, у второй половины – ссылка на структуру.
    3. Определить функцию main(), в которой создать:
    • объект ранее определенного структурного типа
    • указатель на этот структурный тип.
    С помощью указателя создать динамический массив объектов структурного типа из 3-х – 4-х элементов.
    Для объекта последовательно вызывать функции инициализации, заполнения массива чисел, ввода данных в остальные поля, показа массива, показа полей.
    Для каждого элемента массива структур выполнить в цикле (for) функции инициализации, заполнения массива и ввода данных.
    Вывести на экран содержимое полей каждого элемента массива структур в цикле (for) с помощью соответствующих функций.
    В конце функции main() вызвать функцию освобождения памяти для объекта структурного типа и в цикле для каждого элемента массива объектов.
    Удалить динамический массив.
     
Thread Status:
Not open for further replies.