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

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

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

    sergiwez New Member

    Joined:
    16 Sep 2010
    Messages:
    5
    Likes Received:
    0
    Reputations:
    0
    спасибо, а как сделать чтобы она не создавала новый файл, а заменяла в существующем?
     
  2. return

    return New Member

    Joined:
    23 Oct 2010
    Messages:
    125
    Likes Received:
    3
    Reputations:
    1
    c++

    создал массив, отсортировал его... нужно добавить новый элемент не нарушая сортировку. Я то это сделал вот так: добавляю этот новый элемент в конец массива и потом заново его сортирую. Но у препода свои тараканы в голове, и говорит что бы сделал без повторной сортировки, но как? подскажите плз
     
  3. X-rus

    X-rus Member

    Joined:
    22 Dec 2010
    Messages:
    88
    Likes Received:
    22
    Reputations:
    4
    return
    Смотри, если в массиве числа и они отсортированные по убыванию, то, начиная с первого элемента, сравниваешь числа. Если новое число больше i-того элемента, то вставляешь новое число в эту позицию.
     
  4. return

    return New Member

    Joined:
    23 Oct 2010
    Messages:
    125
    Likes Received:
    3
    Reputations:
    1
    решил проблему вот так:
    Code:
    // находим куда поставить число
    j=0;//индекс введённого числа
    for(i=0;i<size-1;i++)
    {
    	if(n<m[i])
            {	j=i;
            break;}
            else if(n>=m[i]) j=i;
    }
    if(j==size-2) j++;//если введённое число максимальное то увеличиваем индекс на 1
    for(i=size-1;i>j;i--)
    {
            m[i+1]=m[i];//передвигаем масив на 1 порядок
    }
    m[j]=n;//заносим введённое число в масив
    
     
  5. Kupa

    Kupa Banned

    Joined:
    11 Jun 2009
    Messages:
    17
    Likes Received:
    0
    Reputations:
    0
    Code:
    #include <stdio.h>
    int main () {
      FILE *fp,*ft;
      char c;
      fpos_t position;
      fp=fopen ("input.txt","r+");
      while (!feof(fp)) {
        fscanf (fp,"%c",&c);
        printf ("%c",c);
        if (c=='=') {
            fprintf (fp,"=");   
        }
      }
      fclose (fp);
      return 1;
    }
    Если надо больше чем 1но равно, то это работать не будет.
    $ cat input.txt
    sdpfasdufasdouf=sdhfla=dflkjashldf=
    $./go
    $ cat input.txt
    sdpfasdufasdouf==sdhfla==dflkjashldf==
     
  6. Infomen

    Infomen New Member

    Joined:
    9 Jan 2010
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    Задание на .NET

    Создайте проект, в котором опишите класс для решения задачи Вашего варианта.
    Разрабатываемый класс должен содержать следующие элементы: скрытые и открытые поля, конструкторы, методы, используя внутреннее и внешнее описание.
    В программе должна выполняться проверка всех разработанных элементов класса.
    Вариант 1.
    Описать класс «дом», содержащий сведения о количестве подъездов и этажей, и количестве квартир на этаже. Предусмотреть инициализацию с проверкой допустимости значений полей. Описать методы вычисления количества квартир в подъезде и в доме.

    P.s. помогите, решить я дуб зелёный в этой теме..
     
  7. melоman

    melоman New Member

    Joined:
    14 Jan 2010
    Messages:
    10
    Likes Received:
    3
    Reputations:
    1
    Задача

    Привет. Помоигте решить задачу.. нужен код с++

    Дано число, составленное из чисел Фибоначчи. Числа Фибоначчи - элементы последова-тельности u1,u2,...., заданной начальными значениями u1 = u2 =1 и рекуррентным соотношением
    un+1=un-1+un.
    Например, 1123581321... .
    Определить цифру этого числа, стоящую на n-ом месте.
     
  8. AlexTheC0d3r

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

    Joined:
    25 Jul 2008
    Messages:
    388
    Likes Received:
    179
    Reputations:
    18

    PHP:
    #include<iostream.h>

    int fibon(int i)
    {
     if(
    i==0) return 1;
     if(
    i==1) return 1;
     if(
    i<0) return 0;
     return 
    fibon(i-2)+fibon(i-1);
    }

    int main()
    {
    std::cout<<"Enter a number and press ENTER: "<< std::endl;
    int i;
    std::cin>>i;
    int f=fibon(i);
    std::cout<<"Fibonnachi is "<< << std::endl;
    return 
    0;
     
  9. snAKe33

    snAKe33 Active Member

    Joined:
    10 Feb 2009
    Messages:
    13
    Likes Received:
    169
    Reputations:
    24
    не ходил пол года в институт, сегодня пошел на экзамен по пыху.
    В общем не допустили меня сказали, что нужно сначала сдать-то,то и то..
    Но в пыхе я 0, да и вообще в программировании 0.
    Буду благодарен за любую помощь.

    Не знаю что нужно сделать, но видимо нужно написать код.
    Может кто сможет сделать бесплатно, если кто-то возьмется за деньги прошу в ЛС с ценой.

    1. Программа скалярного произведения
    2. Умножение матриц на вектор
    3. Умножение матрицы на матрицу
    4. Метод деления пополам
    5. Метод Ньютона
    6. Метод Гауса
    7. интерполяция полином функции заданной таблично.
    8. Интегрирование функции x^2 на отрезке (0;10) численно.
     
  10. RAINUR

    RAINUR New Member

    Joined:
    24 May 2010
    Messages:
    151
    Likes Received:
    0
    Reputations:
    0
    Здравствуйте:)
    Нашел довольно интересные задачи по программирование.
    И одну задачу ни как решить не могу:)

    Задача 2. Знаки
    Дано натуральное число 0<n<100.
    Найти элементы вектора x=(x(1),x(2),....x(k), x(i) принадлежит {-1,1} и такое число k,
    что n=x(1)*1^2+x(2)*2^2,....+ x(k)*k^2.

    Input:Файл semne.in - содеожит в каждой строке по одному числу.
    Output: Файл semne.out - содержит в каждой строке элементы вектора x соответственно для чисел из входного файла.
    Пример:

    input: output:
    2 -1-1-1+1
    4 -1-1+1
    8 -1-1+1+1-1-1+1
    5 +1-1-1+1

    Тут все так муторно написано:)
    То есть 2=-1^2-2^2-3^2+4^2=-1-4-9+16.
    Вот так вот ..
    Сначало у меня сразу пришла идея насчет рекурсии ..
    То есть делаем цепочку из всех возможных . .
    Но, вопрос, когда остановиться?:)
    Значит тут какая-то другая технология, прошу помочь не всем кодом, а подсказкой ;)
     
  11. RAINUR

    RAINUR New Member

    Joined:
    24 May 2010
    Messages:
    151
    Likes Received:
    0
    Reputations:
    0
    Хотя n 100, сейчас рекурсией попробуем:)
    До n ..
     
  12. RAINUR

    RAINUR New Member

    Joined:
    24 May 2010
    Messages:
    151
    Likes Received:
    0
    Reputations:
    0
    Code:
    uses
      SysUtils;
    
    var i,n:integer;
        str:string;
        flag:boolean;
    procedure prov(s:string);
    var i:integer;
          sum:longint;
    begin
    sum:=0;
    for i:=1 to length(s) do
      if(s[i]='-') then
      sum:=sum+(-i*i)
             else sum:=sum+i*i;
    if(sum=n)then
     begin
     flag:=true;
     str:=s;
     end;
    end;
    
    procedure semne(s:string);
    begin
    prov(s);
    if(length(s)>100 then exit;//при стах уже очень долго. .Если ставить 50, то нормально
    if(flag) then exit; 
    semne(s+'-');
    semne(s+'+');
    end;
    
    begin
    assign(input,'semne.in');reset(input);
    assign(output, 'semne.out'); rewrite(output);
    readln(n);
    semne('');
    for i:=1 to length(str) do
     write(str[i]+'1');
    close(input);
    close(output);
    end.
    
    
    хе. .
    При 2 и 4 работает нормально ..
    А при 8 и 5 он мне вывел другой результат. .
    Имхо
    при 8 моя программа быстрее находит вариант
    -1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1+1-1+1+1+1-1+1+1-1+1-1+1+1-1+1+1+1
    Чем -1-1+1+1-1-1+1 . . .
    Думал динамикой, но нужно знать порядок + и -.
    Code:
    Input:Файл semne.in - содерожит в каждой строке по одному числу.
    Это значит сразу несколько чисел обработать надо ..
    У меня на 2 секунды врядли уложится .. :)
     
  13. sergiwez

    sergiwez New Member

    Joined:
    16 Sep 2010
    Messages:
    5
    Likes Received:
    0
    Reputations:
    0
    Народ, если кто знает метод рунге-кутта-мерсона, помогите плз...
    нужна лаба на с++, я хз как делать(
     
    #3253 sergiwez, 15 Jan 2011
    Last edited: 15 Jan 2011
  14. Kupa

    Kupa Banned

    Joined:
    11 Jun 2009
    Messages:
    17
    Likes Received:
    0
    Reputations:
    0
    именно рунге-кутта-мерсона?

    просто рунге-кутта 4 порядка устроит?

    Code:
    #include <stdio.h>
    #include <math.h>
    #define M 2
    #define real float
    
    
    void rightPart (real t, real *y, real *f) {
    	f[0]=y[1];
    	f[1]=-y[0];
    }
    
    void rightPartAnalytics (real t, real *f){
    	f[0]=sin(t);
    	f[1]=cos(t);
    }
    
    void calcK1 (real t, real h, real *y, real *k1) {
    	rightPart (t, y , k1);
    }
    
    void calcK2 (real t, real h, real *y, real *k1, real *k2) {
    	real tmp[M];
    	for (int i=0;i<M;i++) tmp[i]=y[i]+(h/2)*k1[i]; 
    	rightPart (t+h/2,tmp,k2);
    }
    
    void calcK3 (real t, real h, real *y, real *k2, real *k3) {
    	real tmp[M];
    	for (int i=0;i<M;i++) tmp[i]=y[i]+(h/2)*k2[i];
    	rightPart (t+h/2,tmp,k3);
    }
    
    void calcK4 (real t, real h, real *y, real *k3, real *k4) {
    	real tmp[M];
    	for (int i=0;i<M;i++) tmp[i]=y[i]+h*k3[i];
    	rightPart (t+h,tmp,k4);
    }
    
    void rungeKutta (real t, real h, real *k1, real *k2, real *k3, real *k4, real *y, real *f) {
    	for (int i=0;i<M;i++) f[i]=y[i]+(h/6)*(k1[i]+2*k2[i]+2*k3[i]+k4[i]);
    	for (int i=0;i<M;i++) y[i]=f[i];
    }
    
    real errorCalc (real *y_analytics, real *y){
    	real onion[M],sum=0;
    	for (int i=0;i<M;i++){
    		onion[i]=fabs(y_analytics[i]-y[i]);
    		sum+=onion[i]*onion[i];
    	}
    	return (sqrt(sum));
    }
    
    
    int main (){
    	FILE *fp;
    	real *t_cur,t_start,t_end,h,k1[M],k2[M],k3[M],k4[M],y_prev[M],y[M],y_analytics[M],final;
    	real eps=0.01;
    	int flag=1;
    	int N;
    	/*printf ("Enter h\n");
    	scanf ("%f",&h);
    	printf ("Enter t_start\n");
    	scanf ("%f",&t_start);
    	printf ("Enter t_end\n");
    	scanf ("%f",&t_end);
    
    	N=(fabs(t_end-t_start)/h) + 2;
    
    	t_cur=new real [N];
    
    	printf ("Enter y1(0)\n");
    	scanf ("%f",&y_prev[0]);
    	printf ("Enter y2(0)\n");
    	scanf ("%f",&y_prev[1]);*/
    
    	h=0.1;
    	t_start=0;
    	t_end=1;
    	y_prev[0]=0;
    	y_prev[1]=1;
    	N=(fabs(t_end-t_start)/h) + 2;
    	t_cur=new real [N];
    
    
    	fp=fopen("output_sys.txt","w");
    	int i;
    	fprintf (fp,"i\t|t_cur\t\t|y1\t\t|y2\t\t|y1_anal\t|y2_anal\t|final\t\n");
    	t_cur[0]=t_start;
    	for (i=0;i<N;i++) {
    		t_cur[i]=t_start+h*i;
    
    		calcK1 (t_cur[i],h,y_prev,k1);
    		calcK2 (t_cur[i],h,y_prev,k1,k2);
    		calcK3 (t_cur[i],h,y_prev,k2,k3);
    		calcK4 (t_cur[i],h,y_prev,k3,k4);
    
    		rungeKutta (t_cur[i],h,k1,k2,k3,k4,y_prev,y);
    		rightPartAnalytics (t_cur[i], y_analytics);
     		printf ("t_cur: %f y1_anal: %f y2_anal: %f\n",t_cur[i],y_analytics[0],y_analytics[1]);
    		final=errorCalc (y_analytics, y);
    		fprintf (fp,"%d\t|%f\t|%f\t|%f\t|%f\t|%f\t|%f\t|\n",i,t_cur[i],y[0],y[1],y_analytics[0],y_analytics[1],final);
    	}
    
    
    	/*
    	for(i=0; i<2; i++)
    	{
    		t_cur[i]=t_start + i*t;
    		u1_a[i]=rp1_a(t_cur[i]);
    		u2_a[i]=rp2_a(t_cur[i]);
    	    
    		onion1=fabs(u1_cur[i]-u1_a[i]);
    		onion2=fabs(u2_cur[i]-u2_a[i]);
    		final[i]=sqrt(onion1*onion1+onion2*onion2);
    	}
    		flag=1;
    		
    	while(t_cur[i-1] < t_end)	
    	{
    		real u1_temp, u2_temp;
    		u1_temp = u1_cur[i-1]; u2_temp = u2_cur[i-1];
    		up1=u1_n_1 + 2*t*rp1(u1_temp,u2_temp);
    		up2=u2_n_1 + 2*t*rp2(u1_temp,u2_temp);
    		
    		ucor1=u1_temp + (t/2)*(rp1(u1_temp,u2_temp)+rp1(up1,up2));
    		ucor2=u2_temp + (t/2)*(rp2(u1_temp,u2_temp)+rp2(up1,up2));
    	
    		u1_error = fabs(up1-ucor1);
    		u2_error = fabs(up2 - ucor2);
    		u_error = sqrt(u1_error*u1_error + u2_error*u2_error);
    		
    		if (u_error - eps >=0) { flag=0; break;printf ("flag=0\n");}
    		u1_n_1=u1_temp; //U(n-1)
    		u2_n_1=u2_temp;//U(n-1)
    
    		u1_cur[i]=ucor1;
    		u2_cur[i]=ucor2;
    	
    		t_cur[i]=t_start+t*i;
    		u1_a[i]=rp1_a(t_cur[i]);
    		u2_a[i]=rp2_a(t_cur[i]);
        
    
    		onion1=fabs(u1_cur[i]-u1_a[i]);
    		onion2=fabs(u2_cur[i]-u2_a[i]);
    		final[i]=sqrt(onion1*onion1+onion2*onion2);
    		i++;
    	}
    	if (flag) break;
    	t/=2;
    
    	}
    	
    */
    
    	printf ("Done\n");
    
    	fclose (fp);
    	return 0;
    }
     
  15. sergiwez

    sergiwez New Member

    Joined:
    16 Sep 2010
    Messages:
    5
    Likes Received:
    0
    Reputations:
    0
    метод рунге-кутта-мерсона с автоматическим выбором шага ...
     
  16. Kupa

    Kupa Banned

    Joined:
    11 Jun 2009
    Messages:
    17
    Likes Received:
    0
    Reputations:
    0
    ну ты глянь что я тебе кинул, повтыкай методичку посмотри)
     
  17. White_Tiger.

    White_Tiger. New Member

    Joined:
    10 Oct 2010
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    Нужно написать прогу на Паскале, которая бы переворачивала список, и проверяла, есть ли в нем хотя бы 2 одинаковых элемента.
    Мой код:
    Code:
    type
      sp = ^el;
      el = record
        inf: integer;
        next: sp;
      end;
     
    var
      p, q: sp;
      k, i, n, element: integer;
     
    begin
      writeln('kol-vo elementov?');
      readln(n);
      for i := 1 to n do 
      begin
        writeln('vvedite element');
        readln(element);
        new(q);
        q^.inf := element;
        q^.next := p;
        p := q;
      end;
      while p <> nil do
      begin
        writeln(p^.inf);
        p := p^.next;
      end;
      repeat //тут проверка на наличие одинаковых элементов
        while q^.next <> nil do
        begin
          q := q^.next;
          if p^.inf = q^.inf then k := 1;
        end;
        q := p^.next;
        p := q;
      until p = nil;
      if k = 1 then writeln('est odinak-e el') else writeln('el-ov net');
      readln;
    end.
    Прога не находит одинаковые элементы. В чем ошибка?
    -----------------------------------
    Ошибку нашел.
     
    #3257 White_Tiger., 16 Jan 2011
    Last edited: 16 Jan 2011
  18. Derec

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

    Joined:
    8 Nov 2007
    Messages:
    74
    Likes Received:
    4
    Reputations:
    0
    Форумчение, есть у кого-нибудь модуль (исходники) для работы со списком в C++? Нужно создание/добавление в начало/добавление в конец - хотя бы это. Спрашиваю потому что не знаю C :(
     
  19. return

    return New Member

    Joined:
    23 Oct 2010
    Messages:
    125
    Likes Received:
    3
    Reputations:
    1
    c++

    Нужно вычислить интеграл методом трапеций на с++, математику не знаю, даже как тот интеграл считать))) вот нашел только код на delphi. Если у кого есть исходник то поделитесь или переведите с delphi на с++:
    Code:
    unit intfunc;
    interface
    type
      TIntFunc = function(X: Double): Double;
    function TrapezeInt(a, b: Double; eps: Double; IntF: TIntFunc): Double;
    implementation
    function TrapezeInt(a, b: Double; eps: Double; IntF: TIntFunc): Double;
    var
      //S - площадь на предыдущей итерации,
      //x - текущее значение аргумента
      //base - высота трапеции
      //n - число трапеций, удваивается на каждой итерации
      S, x, base: Double;
      i, n: Integer;
    begin
      base := b - a;
      Result := (IntF(a) + IntF(b)) / 2 * base;
      eps := eps / 10;
      n := 1;
      repeat
        S := Result;
        base := base / 2;
        n := n * 2;
        Result := Result / 2;
        for i := 1 to n div 2 do
        begin
          x := a + base * (i * 2 - 1);
          Result := Result + IntF(x) * base;
        end;
      until abs(S - Result) <= eps;
    end;
    end.
    Пример использования:
    uses intFunc;
    function intSin(x: Double): Double;
    begin
      Result := sin(x);
    end;
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      Edit1.Text := FloatToStr(TrapezeInt(0, Pi, 0.00001, intSin));
    end;
    
    спс, уже переписал.
     
    #3259 return, 16 Jan 2011
    Last edited: 17 Jan 2011
  20. Zinf

    Zinf New Member

    Joined:
    17 Jan 2011
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    Помогите написать прогу на delphi.

    Исходные данные такие:
    Определим граф как набор точек, некоторые из которых соединены линиями,а подграф как подмножество этого графа.
    Реализовать в виде модуля набор подпрограмм, определяющих:
    число точек в графе;
    число отрезков в графе;
    число изолированных подграфов, т.е. подграфов, не соединенных линиями;
    диаметр графа, т.е. длину максимальной незамкнутой линии;
    число отрезков, выходящих из каждой вершины графа.
    Граф описан следующим образом:
    Const NumberOfVertix=50;
    Type Graf = Array[1..NumberOfVertix, 1..NumberOfVertix] of Boolean;
    Используя разработанный модуль, найти все правильные графы из N вершин.(Граф считается правильным, если из всех вершин выходит равное количество отрезков.)
    и если можно пожалуйста объясните что за что отвечает.Задали курсовую,а меня не было на тех парах,когда проходили это.Взял чужую тетрадь а там вообще толком ничего не сказано.Заранее спасибо.
     
Thread Status:
Not open for further replies.