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

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

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

    ss88 Banned

    Joined:
    27 Nov 2008
    Messages:
    160
    Likes Received:
    44
    Reputations:
    5
    LAB1.C
    Code:
    #include <stdio.h>
    #include <math.h>
    
    int main(int argc, char ** argv){
    	double a,x,y,z;
    	
    	(void) printf("Enter values for X,Y,Z:");
    	(void) scanf("%f%f%f",&x,&y,&z);
    
    	a = (3 + exp(y) - 1) / (1 + pow(x,2)*abs(y - tan(z)));
    	
    	(void) printf("a = %f\n",a);
    	
    	return 0;
    }
    Потом доделаю остальные, а сейчас уже спать хочу... Хотя, такие банальные вещи нужно делать самому, это 1-й курс, если я не ошибаюсь?
     
  2. Dosia

    Dosia Member

    Joined:
    5 Jun 2009
    Messages:
    118
    Likes Received:
    81
    Reputations:
    6
    Программа генерирует случайное N в заданном промежутке. Программа проверяет все числа от 10 до 999, если произведение цифр числа = N, то цикл будет прерван и программа выдаст число. Иначе сообщит что число не найдено.

    Code:
    program PROIZV_ZIFR;
    
    var
    intI,intC,N,Proizv,Code,tmpI:integer;
    strA:string;
    
    begin
    randomize;
    N:=random(110);
    writeln('N randomly set in ',N);
    intI:=0;
    for intI:=10 to 999 do begin
    str(intI,strA);
    Proizv:=1;
    for intC:=1 to length(strA) do begin
    val(strA[intC],tmpI,Code);
    Proizv:=Proizv*tmpI;
    end;
    if Proizv=N then break;
    end;
    if intI <> 999 then writeln('chislo(Q) = ',strA,' proizvedenie zifr = ',Proizv,' = ',N,'(N)')
    else writeln('chislo proizvedenie zifr kotorogo = ',N,' ne naideno');
    readln;
    end.
    Результат работы:

    Code:
    N randomly set in 49
    chislo(Q) = 77 proizvedenie zifr = 49 = 49(N)
    
    N randomly set in 7
    chislo(Q) = 17 proizvedenie zifr = 7 = 7(N)
    
    N randomly set in 103
    chislo proizvedenie zifr kotorogo = 103 ne naideno
     
    1 person likes this.
  3. >>serhio<<

    >>serhio<< New Member

    Joined:
    10 Feb 2009
    Messages:
    40
    Likes Received:
    0
    Reputations:
    0
    Нужна помощь срочно на Turbo Pascale выручайте плизз!!!!!!
    Задача 1:
    Даны координаты точек на плоскости точек ≤30. Найти пары номера точек, расстояние между которыми наибольшее.
    Задача 2:
    Дан массив, образовать новый массив состоящий из элементов исходного заканчивающихся на цифру X.
     
  4. Dosia

    Dosia Member

    Joined:
    5 Jun 2009
    Messages:
    118
    Likes Received:
    81
    Reputations:
    6
    Задача 1:

    Для корректной работы программы требуется файл 'input.txt' в котором находятся координаты точек (Файл поместить в директорию с TurboPascal, ну или прописать путь при открытии файла).

    Пример:
    Code:
    3 4
    1 1
    3 4
    1 1
    5 3
    1 1
    2 3
    0 0
    -1 -1
    Code:
    program RASSTOIANIE_MESHDU_TOCHKAMI;
    
    var
    f:text;
    intI,intB,intM:integer;
    MasKorToc:array [1..30,1..2] of integer;
    tmpI,MaxRast,tmpRast:real;
    goodToch:array[1..30,1..2] of integer;
    
    begin                           
    assign(f,'input.txt');
    reset(f);
    intM:=1;
    
    while eof(f) = false do begin
    readln(f,MasKorToc[intM,1],MasKorToc[intM,2]);
    writeln('Position = ',intM,' X = ',MasKorToc[intM,1],' Y = ',MasKorToc[intM,2]);
    intM:=intM+1;
    end;
    
    intM:=intM-1;
    
    for intI:=1 to intM do begin
    for intB:=1 to intM do begin
    
    tmpI:=(MasKorToc[intI,1]-MasKorToc[intB,1])*(MasKorToc[intI,1]-MasKorToc[intB,1]);
    tmpRast:=sqrt(tmpI+(MasKorToc[intI,2]-MasKorToc[intB,2])*(MasKorToc[intI,2]-MasKorToc[intB,2]));
    if tmpRast>MaxRast then begin
    goodToch[1,1]:=intI;
    goodToch[1,2]:=intB;
    MaxRast:=TmpRast;
    end;
    end;
    end;
    writeln;
    writeln('Maksimalbnoe rasstoianie mezhdu tochkami: ',goodToch[1,1],' i ',goodToch[1,2]);
    
    close(f);
    readln;
    end.
    Результат работы:

    input.txt:
    Code:
    3 4
    1 1
    5 3
    1 1
    2 3
    0 0
    -1 -1
    Code:
    Position = 1 X = 3 Y = 4
    Position = 2 X = 1 Y = 1
    Position = 3 X = 5 Y = 3
    Position = 4 X = 1 Y = 1
    Position = 5 X = 2 Y = 3
    Position = 6 X = 0 Y = 0
    Position = 7 X = -1 Y = -1
    
    Maksimalbnoe rasstoianie mezhdu tochkami: 3 i 7
    
    input.txt:
    Code:
    6 6
    3 4
    1 1
    5 3
    1 1
    2 3
    0 0
    Code:
    Position = 1 X = 6 Y = 6
    Position = 2 X = 3 Y = 4
    Position = 3 X = 1 Y = 1
    Position = 4 X = 5 Y = 3
    Position = 5 X = 1 Y = 1
    Position = 6 X = 2 Y = 3
    Position = 7 X = 0 Y = 0
    
    Maksimalbnoe rasstoianie mezhdu tochkami: 1 i 7
    
    Задача 2:
    Code:
    program MASSIV_ELEMENT_PLUS_X;
    
    var
    Ishod:array [1..10] of string;
    intI:integer;
    
    begin
    writeln('Ishodnui massiv');
    for intI:=1 to 10 do begin
    str(intI*100,Ishod[intI]);
    writeln('Element ',intI,' = ',Ishod[intI]);
    end;
    writeln;
    writeln('Preobrazovannui massiv');
    for intI:=1 to 10 do begin
    Ishod[intI]:= Ishod[intI]+'10';
    writeln('Element ',intI,' = ',Ishod[intI]);
    end;
    
    readln;
    end.
    Code:
    Результат работы:
    Ishodnui massiv
    Element 1 = 100
    Element 2 = 200
    Element 3 = 300
    Element 4 = 400
    Element 5 = 500
    Element 6 = 600
    Element 7 = 700
    Element 8 = 800
    Element 9 = 900
    Element 10 = 1000
    
    Preobrazovannui massiv
    Element 1 = 10010
    Element 2 = 20010
    Element 3 = 30010
    Element 4 = 40010
    Element 5 = 50010
    Element 6 = 60010
    Element 7 = 70010
    Element 8 = 80010
    Element 9 = 90010
    Element 10 = 100010
     
    #1724 Dosia, 10 Oct 2009
    Last edited: 10 Oct 2009
  5. >>serhio<<

    >>serhio<< New Member

    Joined:
    10 Feb 2009
    Messages:
    40
    Likes Received:
    0
    Reputations:
    0
    Еще задачка на Pascale.
    Ввод аргумента x, если попал на границу, то вывод сообщения типа:
    '=0' '100'
    '=50' '-100'
    '=-50'
    Если попал в промежуток, то вывод соответствующего интервала
    '+1' '-1'
    '+2' '-2'
    '+n' '-n'
     
  6. Prototype

    Prototype New Member

    Joined:
    29 Jul 2007
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    Помогите найти ошибку

    Необходимо перехватить прерывание 5h
    Но процедура Int_05h не выполняется

    Code:
    data segment
      old_cs dw ?; для хранения «старого» вектора
      old_ip dw ?; прерываний с номером 5h
    
      Ubdate db 0; Что нажал пользователь
    data ends
    
    code segment
       assume cs:code, ds:data
    start:
    mov ax,data
    mov ds,ax
    call clrscr
    
    ; Запомним текущий вектор 5h
    	mov  ax, 3505h
    	int  21h
    	
    	mov  old_ip, bx
    	mov  old_cs, es
    
    ; Подменим обработчик
    	push ds			; DS:DX <- Новый обработчик
    	mov  dx, offset Int_05h
    
    	;mov  ax, seg Int_05h
    	;mov  ds, ax
    
    	mov  ax, 2505h
    	int  21h		; Установили его
    	pop  ds
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    mov bx,0
    
    make_delay:
    	mov ah,0
    	mov al,ubdate
    	test ax,ax
    	jnz ekran
    	jmp nenado
    	ekran:
    	  mov ubdate,0
    	  ;действия
    	nenado:
    jmp make_delay
    
    q:
    	; Восстановливаем все назад
    	push ds
    	
    	mov  dx, old_ip 
    	mov  ax, old_cs
    	mov  ds, ax
    	mov  ah, 25h
    	mov  al, 9h
    	int  21h
    	pop  ds
    	
    	mov  ax, 4C00h	; И выходим
    	int  21h
    jmp konec
    ;////////////////////////////////////////////////////////////////////////////////////////////////////
    Int_05h proc
           cli		;Запрещаем прерывания
           push ax
           push bx
           push cx
           push dx
           push si
           push di
           push es		;и сегментные регистры
           push ds
    
          mov ubdate,1
    
           pop ds		;Восстановим сохраненные регистры
           pop es
           pop di
           pop si
           pop dx
           pop cx
           pop bx
           pop ax
           sti		;Разрешим прерывания
           iret		;Выход (возврат в прерванное место)...
    Int_05h endp
    
    CLRSCR proc naer   ;Очищает экран
      push ax
      mov ax, 03
      int 10h
      pop ax
      ret
    CLRSCR endp
    
    konec:
    code ends
    end start
     
    #1726 Prototype, 12 Oct 2009
    Last edited: 12 Oct 2009
  7. DJecka

    DJecka New Member

    Joined:
    15 Apr 2008
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    Добрый вечер. В общем задача такая, необходимо записать символ напрямую в видеобуфер на c++ без использрвания asm вставок. Можно ли это сделать в Visual Studio? и где нибудь это можно сделать? =) Желателен пример кода...

    Заранее спасибо.
     
  8. satana8920

    satana8920 Палач Античата

    Joined:
    22 Sep 2006
    Messages:
    396
    Likes Received:
    138
    Reputations:
    6
    Ребят помоги пожалуста решить задачи по Паскалю

    чесно говоря я в этом не шарю друг попросил решить зачет блин на кону :)

    [​IMG]

    [​IMG]

    с меня много много плюсов возможно даже денежкой на wmz (баксов 5) отблагодарю чисто символически
    заранее спасибо ответы в ЛС или в АСЬку скидывайте (в профиле)
    че блин никому + и денег ненадо что ль первыйй раз такое вижу )
     
    #1728 satana8920, 13 Oct 2009
    Last edited: 13 Oct 2009
  9. Иван8

    Иван8 Elder - Старейшина

    Joined:
    21 Aug 2008
    Messages:
    71
    Likes Received:
    11
    Reputations:
    6
    скрины плохо видно! задачи скорее по математики чем по программированию. если пояснишь как решать то сами программы некоторые за час можно написать.
     
  10. satana8920

    satana8920 Палач Античата

    Joined:
    22 Sep 2006
    Messages:
    396
    Likes Received:
    138
    Reputations:
    6
    Иван8 контакт в ПМ пиши все обьясню
     
  11. SHAXID

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

    Joined:
    13 Dec 2007
    Messages:
    24
    Likes Received:
    17
    Reputations:
    -6
    Помогите с UNIX'ом, пожалуйста..

    Вот такое задание:

    Процесс 1 открывает файл и после этого порождает потомка 2. Один процесс пишет в файл один байт, посылает другому процессу сигнал, другой читает из файла один байт, выводит прочитанное на экран и посылает сигнал первому процессу. Организовать N циклов запись/чтение.

    Буду очень благодарен..и "+" поставлю =)
     
  12. Vinsik

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

    Joined:
    4 Oct 2008
    Messages:
    189
    Likes Received:
    4
    Reputations:
    -5
    Паскаль
    помогите плиз

    //-----------------------
    Выполнить табулирование функции в выбранном интервале с шагом h. Сформировать и вывести на экран таблицу значений функции,
    график функции с координатными осями в графическом режиме.

    При оформлении отчета построить схему алгоритма только для построения таблицы

    Пояснения:
    1. интервал выбрать самостоятельно, например, от -15 до 15 или от -5 до 10, главное, чтобы в нем присутствовал 0.
    2. шаг для табуляции выбрать таким образом, чтобы в таблице было около 15-20 строк (максимум 23, иначе шапка будет не видна).
    3. при выводе графика функции шаг выбрать поменьше, например, 0.01, и рисовать его по точкам - в этом случае точки будут
    ложиться рядом и график будет плавным.
    4. при выводе графика использовать тот же интервал, что и в таблице
    ---------------------------
    формула номер Адын
    http://img251.imageshack.us/img251/1218/formulas.jpg
    //------------------------------
     
  13. Dosia

    Dosia Member

    Joined:
    5 Jun 2009
    Messages:
    118
    Likes Received:
    81
    Reputations:
    6

    Code:
    program TABULIR_FUNC;
    
    uses graph;
    
    var
    mx,my,x,h:real;
    intI,x1,x2:integer;
    gd,gm:integer;
    
    function xm(x:real):integer;
             begin
                  xm:=round(320+mx*x);
             end;
    
    function ym(y:real):integer;
             begin
             ym:=round(240-my*x);
             end;
    
    function  f(a:real):real;
              begin
              f:=2*exp(a)+4;
              end;
    
    procedure linovka;
    var x,y:integer;
    begin
    setcolor(15);{color is white}
    x:=5;y:=0;
    repeat {draw vertical line}
    line(x,0,x,GetMaxY);
    x:=x+35;
    until x>GetMaxX;
    repeat {draw horizontal line}
    line(0,y,GetMaxX,y);
    y:=y+30;
    until y>GetMaxY;
    end;
    
    procedure DrawAxis;
    begin
    setcolor(blue);{color is white}
    {draw axis of ordinate}
    line(round(GetMaxX/2),0,round(GetMaxX/2),GetMaxY);
    line(round(GetMaxX/2),0,round(GetMaxX/2-5),10);
    line(round(GetMaxX/2),0,round(GetMaxX/2+5),10);
    {draw axis of abscis}
    line(round(GetMaxX),round(GetMaxY /2),GetMaxX-10,round(GetMaxY/2-5));
    line(round(GetMaxX),round(GetMaxY /2),GetMaxX-10,round(GetMaxY/2+5));
    line(0,round(GetMaxY/2),GetMaxX,round(GetMaxY/2));
    end;
    
    begin
    mx:=10;{Mashtab X}
    my:=10;{Mashtab Y}
    h:=0.001;
    x1:=-10;
    x2:=10;
    
    writeln('Tabulirovanie funkzii');
    writeln('	X	','Y');
    for intI:=x1 to x2 do  writeln('    X = ',intI,'    Y = ',f(intI):6:4);
    writeln('Press any key');
    
    readln;
    gd:=detect;
    initgraph(gd,gm,'D:\user\program\bp\bgi');
    linovka;
    DrawAxis;
    
    x:=x1;
    while (x<=x2) do begin
    putpixel(xm(x),ym(f(x)),red);
    x:=x+h;
    end;
    
    readln;
    closegraph;
    end.
    Результат работы:

    Code:
    Tabulirovanie funkzii
            X       Y
        X = -10    Y = 4.0001
        X = -9    Y = 4.0002
        X = -8    Y = 4.0007
        X = -7    Y = 4.0018
        X = -6    Y = 4.0050
        X = -5    Y = 4.0135
        X = -4    Y = 4.0366
        X = -3    Y = 4.0996
        X = -2    Y = 4.2707
        X = -1    Y = 4.7358
        X = 0    Y = 6.0000
        X = 1    Y = 9.4366
        X = 2    Y = 18.7781
        X = 3    Y = 44.1711
        X = 4    Y = 113.1963
        X = 5    Y = 300.8263
        X = 6    Y = 810.8576
        X = 7    Y = 2197.2663
        X = 8    Y = 5965.9160
        X = 9    Y = 16210.1679
        X = 10    Y = 44056.9316
    Press any key
    
    Ну и график там с осями и разлинованой плоскостью...
     
    #1733 Dosia, 15 Oct 2009
    Last edited: 16 Oct 2009
  14. winlogon.exe

    winlogon.exe Active Member

    Joined:
    5 Jun 2009
    Messages:
    31
    Likes Received:
    129
    Reputations:
    13
    Народ помогите пожалуйста! +++ отблагодарю
    У меня щас олимпиада по инфе

    Решите плиз данные задачи на одном из языков программированию: Pascal,C/C++,Java, Delphi, Visual C++, FreePascal и еще какие то.. Желательно QuickBasic MS DOS

    1) Определить является ли треугольник со сторонами a,b,c равнобедренным.

    2) Для надежности некоторый текст был передан по линии связи трижды, но каждый раз ровно один символ был принят в искаженном виде.
    требуется по трем полученным текстам восстановить исходный текст или установить, что сделать это невозможно.
    Входные данные:
    Три текстовые строки длиной не более 255 символов каждая.
    Выходные данные:
    Текстовая строка с восстановленным текстом либо сообщение о невозможности восстановления.



    Щас еще дам.. На все у меня осталось 1,40 ч на решение..
    Все это нужно сделать программно
     
    #1734 winlogon.exe, 15 Oct 2009
    Last edited: 15 Oct 2009
  15. winlogon.exe

    winlogon.exe Active Member

    Joined:
    5 Jun 2009
    Messages:
    31
    Likes Received:
    129
    Reputations:
    13
    Вот еще:

    3) "В помощь юнитам". Утром одного дня на опытной станции взошли два цветка, посеянные накануне. Жизненный цикл одного из них состовляет n дней, а другого - m дней (n,m - натуральные числа, не превосходящие 255). В последний день жизни растение цветет, роняет зерно и умерает. На утро следующего дня из зерна начинает расти такой же цветок. Напишите программу, которая по введенным n и m (в таком порядке), вычисляет, на какой день он начала процесса можно наблюдать цветение обоих растений.
     
  16. Dosia

    Dosia Member

    Joined:
    5 Jun 2009
    Messages:
    118
    Likes Received:
    81
    Reputations:
    6
    Code:
    program treug;
    
    var
    a,b,c:real;
    
    begin
    writeln('Enter a');
    readln(a);
    writeln('Enter b');
    readln(b);
    writeln('Enter c');
    readln(c);
    
    if (a=b and a<>c) then begin
    writeln('Treyrolinuk ravnobedrenni');
    exit;
    end;
    
    if (a=c and b<>c) then begin
    writeln('Treyrolinuk ravnobedrenni');
    exit;
    end;
    
    if (c=b and a<>b) then begin
    writeln('Treyrolinuk ravnobedrenni');
    exit;
    end;
    
    writeln('Treyrolbnik ne ravnobedrennii');
    
    readln;
    end.
    Результат работы:

    Code:
    Enter a
    5
    Enter b
    5
    Enter c
    4
    Treyrolinuk ravnobedrenni
    
    Enter a
    4
    Enter b
    5
    Enter c
    5
    Treyrolinuk ravnobedrenni
    
    Enter a
    4
    Enter b
    5
    Enter c
    4
    Treyrolinuk ravnobedrenni
    
    Enter a
    5
    Enter b
    5
    Enter c
    5
    Treyrolbnik ne ravnobedrennii
    
    Enter a
    5
    Enter b
    4
    Enter c
    3
    Treyrolbnik ne ravnobedrennii
    
     
  17. winlogon.exe

    winlogon.exe Active Member

    Joined:
    5 Jun 2009
    Messages:
    31
    Likes Received:
    129
    Reputations:
    13
    какой язык программирования?
     
  18. Dosia

    Dosia Member

    Joined:
    5 Jun 2009
    Messages:
    118
    Likes Received:
    81
    Reputations:
    6
    Pascal ;D


    Чето не так щас поправлю....

    Code:
    program dayxxx;
    
    var
    stday,n,m:byte;
    mx,nx,intI:longint;
    
    begin
    n:=2;
    m:=7;
    
    if n = m then begin
    writeln('potrebuets9 ',n,' dney');
    readln;
    exit;
    end;
    
    if n> m then stday:=n else stday:=m;
    for intI:=stday to 1000000 do begin
    mx:=intI;
    nx:=intI;
    while mx>0 do mx:=mx-m;
    mx:=mx+m;
    while nx>0 do nx:=nx-n;
    nx:=nx+n;
    writeln('mx ',mx,' nx ',nx);
    if mx = nx then break;
    end;
    
    writeln('potrebuets9 ',intI-1,' dney');
    readln;
    end.
    
    Результат работы:

    Code:
    potrebuets9 14 dney
     
    #1738 Dosia, 15 Oct 2009
    Last edited: 15 Oct 2009
    1 person likes this.
  19. Dosia

    Dosia Member

    Joined:
    5 Jun 2009
    Messages:
    118
    Likes Received:
    81
    Reputations:
    6
    Code:
    program strreceive;
    
    var
    str:array[1..3] of string;
    Variaz:array[1..3] of byte;
    strresult:string;
    intI:integer;
    
    begin
    str[1]:='root@locaphost';
    str[2]:='root.localhost';
    str[3]:='root.,ocalhost';
    Variaz[1]:=0;
    Variaz[2]:=0;
    Variaz[3]:=0;
    
    for intI:=1 to length(str[1]) do begin
    if (str[1][intI]=str[2][intI]) and (str[1][intI]=str[3][intI]) then strresult:=strresult+str[1][intI]
    else begin
    if (str[1][intI] = str[2][intI]) and (str[1][intI]<>str[3][intI]) then begin
    if Variaz[3] = 1 then begin
    writeln('He mory vosstanovitb stroky');
    readln;
    exit;
    end;
    strresult:=strresult+str[1][intI];
    variaz[3]:=1;
    end;
    if (str[2][intI] = str[3][intI]) and (str[2][intI]<>str[1][intI]) then begin
    if Variaz[1] = 1 then begin
    writeln('He mory vosstanovitb stroky');
    readln;
    exit;
    end;
    strresult:=strresult+str[3][intI];
    Variaz[1]:=1;
    end;
    if (str[1][intI] = str[3][intI]) and (str[2][intI]<>str[3][intI]) then begin
    if Variaz[2] = 1 then begin
    writeln('He mory vosstanovitb stroky');
    readln;
    exit;
    end;
    strresult:=strresult+str[1][intI];
    Variaz[2] :=1;
    end;
    end;
    end;
    
    writeln('Iskoma9 stroka = ',strresult);
    readln;
    end.
    
    Результат работы:
    str[1] := 'root@locaphost';
    str[2] := 'ryot@localhost';
    str[3] := 'root.locaphost';


    Code:
    Iskoma9 stroka = root@localhost
    str[1] := 'root@locaphost';
    str[2] := 'ry1t@localhost';
    str[3] := 'root.locaphost';

    Code:
    He mory vosstanovitb stroky
    Мне пора идти (Уже опоздал минут на 15), удачи, если че нитак, не надо желать моей смерти ;D
     
    #1739 Dosia, 15 Oct 2009
    Last edited: 15 Oct 2009
  20. krypt3r

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

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    условие задачи смахивает на нахождение НОК =)
     
Thread Status:
Not open for further replies.