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

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

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

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

    Joined:
    15 Dec 2006
    Messages:
    177
    Likes Received:
    57
    Reputations:
    7
    Алгоритм программы я построил в принципе. По идее необходимо ввести с клавиатуры 1 строчку с вещественными числами. Затем вторую. Потом отсортировать первую строчку по убыванию. Затем вторую. Потом объединить их в одну и упорядочить по убыванию. Как объединять их в одну? Мне код на C++ нужен. А лучше пример программы, чтобы хоть как-то разобраться.

    Code:
    #include "SPIS.CPP" // Где начало программы? 
    void main()
    {Zveno *S1, *S2, *S3, *V1, *V2, *V3; // Что это такое?
     BT a; int i, n; // Что такое ВТ?
     clrscr(); // Я так понимаю, это очистка экрана. Зачем?
     randomize(); // Рандомайз чего?
     S1=NULL;
     // создаём первый элемент
     a=-100+random(201);
     S1=V_Nachalo(S1, a);
     n=1+random(20);
     // формируем список произвольной длины и выводим на печать
     V1=S1;
     for (i=2; i<=n; i++)
     {
        a=-100+random(201);
        V1=V_Spisok(V1, a);
     }
     Print(S1);
     V1 = S1;  S2 = NULL; S3 = NULL;
        while (V1)
    	{if (V1->Inf > 0)
    	      if (!S2)
    		 {S2=V_Nachalo(S2, V1->Inf); V2 = S2;}
    	      else {V_Spisok(V2, V1->Inf); V2 = V2->Next;};
    	 if (V1->Inf < 0)
    	     if (!S3)
    		{S3=V_Nachalo(S3, V1->Inf); V3 = S3;}
    	     else {V_Spisok(V3, V1->Inf); V3 = V3->Next;};
    	 V1= V1->Next;}
      cout << "Результирующий список из положительных элементов: \n";
      Print(S2);
      cout << "Результирующий список из отрицательных элементов: \n";
      Print(S3);
      S1=Ochistka(S1); S2=Ochistka(S2); S3=Ochistka(S3);
    }
    Если я правильно понял - взят тупо кусок программы и выкинут на обозрение. Есть проггеры, которые более менее могут написать программу, которая указана на предыдущей странице и объяснить комментариями?
     
    #1641 Validol, 10 Sep 2009
    Last edited: 10 Sep 2009
  2. Ra$cal

    Ra$cal Elder - Старейшина

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    да, с такой аватарой самое то скромно просить поработать за тебя.
     
  3. =Zeus=

    =Zeus= Member

    Joined:
    10 Aug 2009
    Messages:
    213
    Likes Received:
    54
    Reputations:
    5
    Мог бы и потрудится перевести, форум-то русский!
    А вовторых ты что, думаешь тебе уже готовое кто-то напишет? Покажи, что ты пробовал и что не получается.
     
  4. a-l-e-x23

    a-l-e-x23 Elder - Старейшина

    Joined:
    15 Aug 2008
    Messages:
    109
    Likes Received:
    91
    Reputations:
    29
    Форум - не русский, а русскоязычный. Не путайте пожалуйста.
     
    5 people like this.
  5. geforse

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

    Joined:
    2 Mar 2008
    Messages:
    617
    Likes Received:
    290
    Reputations:
    1
    Есть ли в Pascal'e функция для определения отрезка ?

    Мне нужно проверить число, чтобы оно не входило в отрезок [0.5-2]
     
  6. kyoko

    kyoko Member

    Joined:
    17 Aug 2008
    Messages:
    137
    Likes Received:
    74
    Reputations:
    9
    Помогите пожалуйста! мне нужно выполнить лабораторку, она маленькая. и сдать через 2 часа. помогите пожалуйста!!!!! на с++

    Задание:
    Решением дифференциального уравнения является неизвестная функция x(t). Необходимо, используя численные методы решения ДУ, найти эту функцию. Полученное численное решение необходимо сопоставить с точным, чтобы исследовать зависимость величины локальной ошибки от величины шага интегрирования.

    1.Написать программу решения ДУ с помощью прямой (явной) формулы Эйлера.
    2.Написать программу решения ДУ с помощью обратной (неявной) формулы Эйлера.
    3.Написать программу решения ДУ с помощью формулы трапеций.
    4.Сопоставить результаты численного и точного решений ДУ на экране монитора.


    Дифференциальное уравнение (ДУ) - x'(t)=x(t)+t2

    Решение ДУ - x(t) =6exp(t-1)- t2-2t-2
     
    #1646 kyoko, 12 Sep 2009
    Last edited: 12 Sep 2009
  7. Dosia

    Dosia Member

    Joined:
    5 Jun 2009
    Messages:
    118
    Likes Received:
    81
    Reputations:
    6
    Все очень просто If (твое число < 0.5) or (твое число > 2) then Пишеш тут что будет выполнятся если число не входит в данный отрезок.

    По поводу ДУ, могу лишь предоставить код своей проги которая считала их методом:
    1) Модифицированный метод Эйлера
    2) Метод Рунге-Кутта

    Описанные выше методы мне не знакомы, возможно это одно и тоже просто разными словами?

    Code:
    program TASK5;
    uses graph;
    var
       mas:array[1..2]of real;
       x0,y0,y1,y2,y3,h,t,y4,y5,x,y,xk,yk,ye,yr,ya,k1,k2,k3,k4,h1,k11,k21,k31,k41,ye1,yr1:real;
       i,gd,gm,j,n,z:integer;
    
    function xm(x:real):integer;
             begin
                  xm:=round(320+960*x);
             end;
    
    function ym(y:real):integer;
             begin
             ym:=round(240-720*x);
             end;
    
    function  f(a:real):real;
              begin
              f:=exp(a)+1;
              end;
    
    procedure linovka;
    var x,y:integer;
    begin
    setcolor(15);{color is white}
    x:=5;y:=0;
    setlinestyle(2,6,1);
    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 DrawAxisA;
    begin
    setcolor(15);{color is white}
    setlinestyle(0,3,3);{line style,border widht,Thickness of line}
    {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
         mas[1]:=0.01;
         mas[2]:=0.001;
         x0:=0;
         xk:=10;
         y0:=exp(1)+1;
         writeln ('                  x       1       2          a     ');
         for j:=1 to 2 do
             begin
                  x:=x0;
                  ye:=y0;
                  yr:=y0;
                  n:=round((xk-x0)/(mas[j]));
                  for i:=1 to n do
                      begin
                           ye:=ye+mas[j]*f(x+mas[j]/2);
                           k1:=mas[j]*f(x);
                           k2:=mas[j]*f(x+mas[j]/2);
                           k3:=mas[j]*f(x+mas[j]/2);
                           k4:=mas[j]*f(x+mas[j]);
                           yr:=yr+(k1+2*k2+2*k3+k4)/6;
                           ya:=exp(x)+x;
                           x:=x+mas[j];
                           if (j=1) and (i mod 100 = 0) then
                           writeln ('step = ', mas[j]:5:3,' ',x:8:5,' ',ye/10000:8:5,' ', yr/10000:8:5,' ', ya/10000:8:5);
                           if (j=2)and(i mod 1000= 0) then
                           writeln ('step = ', mas[j]:5:3,' ',x:8:5,' ',ye/10000:8:5,' ', yr/10000:8:5,' ', ya/10000:8:5);
                      end;
                  end;
             readln;
             gd:=detect;
             initgraph(gd,gm,'');
    	linovka;
    	DrawAxisA;
    	setlinestyle(0,3,3);{line style,border widht,Thickness of line}
             x0:=0;
             xk:=10;
             y0:=exp(1)+1;
             x:=x0;
             ye:=y0;
             yr:=y0;
             ye1:=y0;
             yr1:=y0;
             for j:=1 to 5000 do
             begin
             t:=j/500;
                      x:=t/50;
                      h:=0.01;
                      h1:=0.001;
                      ye:=ye+h*f(x+h/2);
                      k1:=h*f(x);
                      k2:=h*f(x+h/2);
                      k3:=h*f(x+h/2);
                      k4:=h*f(x+h);
                      yr:=yr+(k1+2*k2+2*k3+k4)/6;
                      ya:=exp(x)+x;
                      x:=x+h;
                      ye1:=ye1+h1*f(x+h1/2);
                      k11:=h1*f(x);
                      k21:=h1*f(x+h1/2);
                      k31:=h1*f(x+h1/2);
                      k41:=h1*f(x+h1);
                      yr1:=yr1+(k11+2*k21+2*k31+k41)/6;
                      putpixel(xm(x),ym(ye),red);
                      putpixel(xm(x),ym(yr),green);
                      putpixel(xm(x),ym(ye1),yellow);
                      putpixel(xm(x),ym(yr1),blue);
                      putpixel(xm(x),ym(ya),brown);
                 end;
             readln;
         end.
     
    #1647 Dosia, 12 Sep 2009
    Last edited: 12 Sep 2009
    1 person likes this.
  8. kyoko

    kyoko Member

    Joined:
    17 Aug 2008
    Messages:
    137
    Likes Received:
    74
    Reputations:
    9
    Dosia мне на с++ (((
     
    1 person likes this.
  9. geforse

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

    Joined:
    2 Mar 2008
    Messages:
    617
    Likes Received:
    290
    Reputations:
    1
    Составить структурированнуб программу преобразования заданных вещественных хначений Х и Т по правилу:
    • если Х < 0, то X и Т заменить модулем
    • если X < 0 или T < 0, то Х и Т увеличить на 0.5
    • если Х > T и Т > 0 и ни одно из них не принадлежит отрезку [0.5-2], то Х и Т * 10
    в противном случае Х и Т оставить без изменеий

    Code:
    program z1n17;
     uses crt;
     var
      x,t: real;
     begin
      clrscr;
      writeln ('Enter X,T');
      read(x,t);
      if (x < 0) and (t < 0) then { ШАГ 1 }
                               begin
                                x:=abs(x);
                                t:=abs(t);
                                clrscr;
                                writeln('Result:');
                                writeln('|X|=', x:5:3, ' and |T|=', t:5:3);
                               end
    
                              else
    
                               if (x < 0) or (t < 0) then { ШАГ 2 }
                                                       begin
                                                        x:=x+0.5;
                                                        t:=t+0.5;
                                                        clrscr;
                                                        writeln('Result:');
                                                        writeln('X+0.5=', x:5:3, ' and T+0.5=', t:5:3);
                                                       end
    
                                                      else
    
                                                       if (x>0) and (t>0) and (x<0.5) and (x>2) and (t<0.5) and (t>2) then { ШАГ 3 }
                                                                                                                        begin
                                                                                    x:=x*10;
                                                                                    t:=t*10;
                                                                                    clrscr;
                                                                                    writeln('Result:');
                                                                                    writeln('X*10=', x:5:3, ' and T*10=', t:5:3);
                                                                                                                         end
    
                                                                                                                      else
    
                                                                                                                        begin
    
                                                                                    clrscr;
                                                                                    writeln('Result:');
                                                                                    writeln('X=', x:5:3, ' and T=', t:5:3);
                                                                                    writeln;
                                                                                    writeln('Without changes');
                                                                                                                        end;
      read(x);
     end.
    
    Вот у меня проблема на шаге 3:

    if (x>0) and (t>0) and (x<0.5) and (x>2) and (t<0.5) and (t>2)

    Это условие ни в какую не хочет работать :(

    P.S. После третьего условия у меня действия "смещены" влево, т.к. в паскале повидимому ограничение на количество символов в строке.
    Это как-то можно обойти, чтобы код выглядил "красиво" ?) (но это не принципиально, главная проблема с условием)

    P.S.S. первая прога на паскале)
     
  10. kyoko

    kyoko Member

    Joined:
    17 Aug 2008
    Messages:
    137
    Likes Received:
    74
    Reputations:
    9
    Помогите написать программу решения системы нелинейных уравнений методом Ньютона- Рафсона на с++
     
    3 people like this.
  11. Dosia

    Dosia Member

    Joined:
    5 Jun 2009
    Messages:
    118
    Likes Received:
    81
    Reputations:
    6
    Code:
    program z1n17;
    uses crt;
    var
    x,t: real;
    begin
    clrscr;
    writeln ('Enter X,T');
    read(x,t);
    
    { ШАГ 1 }
    if (x < 0) and (t < 0) then
    begin
    x:=abs(x);
    t:=abs(t);
    clrscr;
    writeln('Result:');
    writeln('|X|=', x:5:3, ' and |T|=', t:5:3);
    readkey;
    exit;
    end;
    
    { ШАГ 2 }
    if (x < 0) or (t < 0) then
    begin
    x:=x+0.5;
    t:=t+0.5;
    clrscr;
    writeln('Result:');
    writeln('X+0.5=', x:5:3, ' and T+0.5=', t:5:3);
    readkey;
    exit;
    end;
    
    { ШАГ 3 }
    {Проверяем условия по порядку}
    if (x>t) and (t>0) then
    if ((x<0.5) or (x>2)) and ((t<0.5) or (t>2)) then
    begin
    x:=x*10;
    t:=t*10;
    clrscr;
    writeln('Result:');
    writeln('X*10=', x:5:3, ' and T*10=', t:5:3);
    readkey;
    exit;
    end;
    
    clrscr;
    writeln('Result:');
    writeln('X=', x:5:3, ' and T=', t:5:3);
    writeln;
    writeln('Without changes');
                                                                                  
    readkey;
    end.
    
    мну ушел. Вроде все так, все должно работать.

    если Х < 0, то X и Т заменить модулем. Если так то заменить первое условие на if (x < 0). Но тогда второе не будет выполнятся никогда. Так что ты скорее всего ошибся, когда написал нам условие, а в коде сделал все верно.
     
    #1651 Dosia, 12 Sep 2009
    Last edited: 12 Sep 2009
    1 person likes this.
  12. geforse

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

    Joined:
    2 Mar 2008
    Messages:
    617
    Likes Received:
    290
    Reputations:
    1
    Dosia, спасибо за помощь :)

    Сделал так:

    if (x<0) and (t<0) and ((x<0.5) or (x>2)) and ((t<0.5) or (t>2))
     
  13. deimos_xX

    deimos_xX Banned

    Joined:
    12 Aug 2009
    Messages:
    0
    Likes Received:
    1
    Reputations:
    0
    Ребята, помогите пожалуйста решить задачу ..
    Даны действительные x, e (x!=0, e>0) и целые k, n числа. Вычислить
    с точностью е бесконечную сумму и указать количество учтенных слагаемых.
    Считать, что требуемая точность достигнута, если вычеслена сумма нескольких
    первых слагаемых и очередное слагаемое оказалось по модулю меньше, чем е, -
    это и все последующие слагаемые можно уже не учитывать. Проверить
    правильность вычислений на тестовых примерах, используя возможности
    отладчика, проследить изменение значений слагаемых суммы ряда, выполнив
    отладку цикла. Определить диапазон возможных значений аргумента.*/
    P.S. если можно, то комментарии в проге оставьте, чтоб я разбирался
    сам пример - http://slil.ru/27976391
     
    1 person likes this.
  14. deimos_xX

    deimos_xX Banned

    Joined:
    12 Aug 2009
    Messages:
    0
    Likes Received:
    1
    Reputations:
    0
    забыл сказать, программа должна быть написана на С++
     
  15. Validol

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

    Joined:
    15 Dec 2006
    Messages:
    177
    Likes Received:
    57
    Reputations:
    7
    Объясни мне сам метод, я тебе программу напишу.
    http://ru.wikipedia.org/wiki/Метод_Ньютона
    Можешь постучать в аську. Помогу.
    9один46девять3


    Господа, нужна помощь... C++
    Вообще не понимаю тему "Динамические структуры данных"

    Проблема актуальна. Надеюсь на помощь
     
    #1655 Validol, 13 Sep 2009
    Last edited: 13 Sep 2009
  16. nitx

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

    Joined:
    4 Jan 2008
    Messages:
    214
    Likes Received:
    31
    Reputations:
    10
    _http://www.machinelearning.ru/wiki/images/c/ca/Kasat.zip
    (c) _http://www.machinelearning.ru/wiki/index.php?title=%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%BA%D0%B0%D1%81%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_(%D0%9D%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0-%D0%A0%D0%B0%D1%84%D1%81%D0%BE%D0%BD%D0%B0)
    в гугол полез смотреть что за метод, нашел исходники.
     
  17. Durman

    Durman New Member

    Joined:
    5 Dec 2006
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    STL и C массивы

    День добрый!
    Столкнулся с одной проблемкой, никак не могу ее решить. Нужно одной строкой кода скопировать данные из встроенного С массива в vector. (без циклов и алгоритмов STL) Буду признателен за любую помощь.
     
  18. Ra$cal

    Ra$cal Elder - Старейшина

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    std::vector<int> vec;
    int blabla [] = {1, 2, 3};
    vec.resize(3);
    memcpy(&vec[0], blabla, sizeof(blabla));
     
  19. sebay

    sebay Member

    Joined:
    9 Mar 2009
    Messages:
    26
    Likes Received:
    22
    Reputations:
    0
    Помогите пожалуйста.
    напишите на С строковый класс string
     
  20. Andres

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

    Joined:
    4 Apr 2008
    Messages:
    320
    Likes Received:
    119
    Reputations:
    0
    Сделал.
     
Thread Status:
Not open for further replies.