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

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

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

    Keltos Banned

    Joined:
    8 Jul 2009
    Messages:
    1,558
    Likes Received:
    920
    Reputations:
    520
    Задача, помогите пожалуйста:

    Code:
    В результате выполненных измерений, получен ряд значений из 8 элементов (n=8). Считается, что результат измерения – случайная величина (СВ) `X`, распределенная по нормальному закону. А именно, СВ группируется в окрестности некоторого наивероятнейшего значения и зависит от многих факторов, причем каждый из них мало влияет на СВ, по сравнению с суммой всех остальных.
    Каждый результат измерения обозначается - `xi`, где i - номер измерения (элемента) в ряду измерений.
    Пусть задан ряд: x1 = 30, x2 = 20, x3 = 40, x4 = 35, x5 = 45, x6 = 25, x7 = 50, x8 = 30.
    Для практики представляет интерес не отдельное значение СВ, а некоторый диапазон, в который попадают ее значения (измерения).
    Наивероятнейшее значение СВ, вычисляется как среднее арифметическое полученных значений измерений (элементов) и называется математическим ожиданием СВ.
    Для нашего ряда получим:
    М(Х) = (30+20+40+35+45+25+50+30)/2 =34,375
    Обычно рассчитывают вероятность попадания СВ в диапазон М(Х) ±d, где d – некоторая, заданная граница величин значений измерений.
    То есть определяют, какой процент значений измерений попадет в диапазон, ±d относительно среднего значения.
    Пусть в нашем примере значение границы расчетного диапазона ±d = 7. следовательно необходимо определить вероятность попадания СВ в диапазон 34,375 ± 7.
    Для этого сначала нужно определить рассеяние СВ, то есть степень ее распределения относительно среднего значения. Для нормального закона распределения рассеяние СВ характеризует среднее квадратическое отклонение (СКО). Оно обозначается σ и рассчитывается по формуле:
    
    σх = sqrt [ (30-34,375)^2 + (20-34,375)^2 + (40-34,375)^2 + (35-34,375)^2 + (45-34,375)^2 + (25-34,375)^2 + (50-34,375)^2 + (30-34,375)^2 ]
    
    Для нашего примера:
     = 9,499
    Вычислив значение СКО, пересчитаем границу расчетного диапазона в σх по формуле:	а = d ׃ σх	получим 	а = 7 / 9,499 =0,737
    
    Для нормального закона распределения выполняется следующее равенство:
    P(|X| < a) = Ф(а).
    где:   Х – случайная величина;
    а – граница диапазона в СКО;
    P(|X| < a) – вероятность того, что значение СВ `Х` не выйдет за границы `а`;
    Ф(а) – функция Лапласа, дающая значения вероятности. Задается таблицей №1.
    
    По значению а=0,737 из прилагаемой таблицы находим Р= 0,539. Значение Р получаем аппроксимацией табличных значений:
    0,73 = 0,535;
    0,74 = 0,541.
    
    Нормальный закон распределения [значения функции 2Ф(а)]
     [B]тут таблица[/B]
    
    дано -
    СВ: 95 97 99 94 85 80 83 96 84
    Граница расчетного диапазона: 9
    вот что написал

    Code:
    #include <iostream.h>
    #include <math.h>
    
    int main()
    {
    // Vvod slychaynih velichin
    	double a[9];
    	cout<<"Vvedite znacheniya slychanynoy velichiny"<<endl;
    	for (int i=0; i<9; i++)
    	cin>>a[i];
    	cout<<"Znacheniya slychanynoy velichiny =>"<<endl;
    	for ( i=0; i<9; i++)
    	cout<<"a["<<i<<"]="<<a[i]<<endl;
    // Srednee arifmeticheskoe
    	double S;
    	S=(a[0]+a[1]+a[2]+a[3]+a[4]+a[5]+a[6]+a[7]+a[8])/9 ;
    	cout<<"Srednee arifmeticheskoe - "<<S<<endl<<endl;
    // Veroyatnost popadaniya
    	cout<<"Veroyatnost popadaniya Slychayniy velichiny v diapazon - "<<S<<"+-9"<<endl<<endl;
    // Srednee kvadraticheskoe otklonenie
    	double K;
    	K=sqrt( ( pow((a[0]-S),2)+pow((a[1]-S),2)+pow((a[2]-S),2)+pow((a[3]-S),2)+pow((a[4]-S),2)+pow((a[5]-S),2)+pow((a[6]-S),2)+pow((a[7]-S),2)+pow((a[8]-S),2) ) /9);
    	cout<<"Srednee kvadraticheskoe otklonenie - "<<K<<endl<<endl;
    // Granica raschetnogo diapazona
    	double A;
    	A=9/K;
    	cout<<"Granica raschetnogo diapazona - "<<A<<endl;
    // Function Laplasa
    	double P;
    
    	return 0;
    
    }
    проблема, как видно, в последнем действии.
    как быть с функцией Лапласа, если ее значения находятся в таблице?
    википедия на функцию лапласа выдает какие-то стремные дифференциалы :<<<<
     
  2. Sar@

    Sar@ New Member

    Joined:
    5 Jul 2009
    Messages:
    1
    Likes Received:
    1
    Reputations:
    0
    Наверное, хотел написать не находятся? Если аргумент функии Лапласа не из таблицы, тогда значение берут 0.5 ;)
     
    1 person likes this.
  3. Algol

    Algol New Member

    Joined:
    29 May 2002
    Messages:
    1,759
    Likes Received:
    4
    Reputations:
    0
    Ппц куда катится образование.....
    http://www.webmath.ru/poleznoe/table_laplasa.php
     
  4. DJeFRY_RASH

    DJeFRY_RASH New Member

    Joined:
    7 Apr 2009
    Messages:
    16
    Likes Received:
    1
    Reputations:
    0
    Ребята не могли бы вы помочь с прогой, вся прога написана, всё сделано правильно, работает, но заминка в том, что уравнение для расчёта неправильное !
    Code:
    program xyz;
    
    uses
      SysUtils,
      Windows;
    
    label
      EnterN;
    
    var
      N, i, z   : Integer;
      ans      : Char;
    
    
    
    //------------------------------------------------------------------------------
    function Ru(str: String): String;         // Функция перевода получаемой строки из ANSI-кодировки в OEM-кодировку DOS.
    begin                                     // Начало функции.
      Result := '';                           // Обнуляем результат.
      if Length(str) > 0 then                 // Если получена непустая строка, то
      begin                                   // выполняем код:
        SetLength(Result, Length(str));       // Устанавливаем размер для строки результата.
        CharToOem(PChar(str), PChar(Result)); // Конвертируем строку в OEM-формат (модуль 'Windows.pas').
      end;                                    // Результирующая строка уже в новой кодировке.
    end;                                      // Конец функции.
    
    
    
    //------------------------------------------------------------------------------
    begin
      WriteLn(Ru('Программа для вычисления факториала нечётных чисел:'));         // Вывод информации на экран о назначении программы.
      WriteLn('');
      WriteLn('   N!!! = 1 x 3 x 5 ... x N   ');
      WriteLn('');
      WriteLn(Ru('Выполнил ...'));              // Вывод информации на экран об авторе программы.
      WriteLn('');
      Writeln('...');
      EnterN:                                                                     // Возврат в это место при ошибке или при повторном вводе данных.
        WriteLn('');                                                              // ...
        Write(Ru('Введите нечётное число N, где N > 1 : '));                                     // ...
        ReadLn(N);                                                                // Ввод числа Х.
        if (N <= 1) or (N mod 2=0) then                                                          // Если Х меньше или равен 1, то
        begin                                                                     // выполнить код:
          WriteLn(Ru('Произошла ошибка при вводе, попробуйте ещё раз.'));         // - вывести сообщение об ошибке;
          GoTo EnterN;                                                            // - вернуться к началу;
        end;                                                                      // ...
      WriteLn('');                                                                // ...
      z := 1;                                                                     // Обнуляем переменную результата.
      for i := 1 to N do z := z*(i*2-1);                                          // Увеличиваем переменную результата N раз.
      WriteLn(Ru('Полученный результат: '+IntToStr(z)));                          // Отправить Х на обработку в функцию 'Formula()' и вывести результат.
      WriteLn('');                                                                // ...
      Write(Ru('Вы хотите продолжить работу с программой? (Y/N) : '));            // Предложить продолжить работу с программой.
      ReadLn(ans);                                                                // Получить согласие.
      if (ans='Y') or (ans='y') or (ans=Ru('Н')) or (ans=Ru('н')) then GoTo EnterN; // Если согласие получено - возврат к началу.
    end.
    
    Когда запускаешь прогу, просит ввести N, если вводим 5, то получаем такой факториал 1х3х5х7х9, а нужно чтобы 5 была последней цифрой в этом подсчёте, то есть 1х3х5.
    Перепробовал многие варианты, не выходит. кто может разобраться, помогите !
     
  5. lokli

    lokli New Member

    Joined:
    28 Dec 2009
    Messages:
    10
    Likes Received:
    0
    Reputations:
    0
    Перед циклом
    Code:
    for i := 1 to N do z := z*(i*2-1); 
    вставь строку
    Code:
    N:=((N div 2)+1);  
    этим ты поставиш количество итераций цикла равным количеству непарных чисел до заданного числа N. Код не проверял но должно работать. :)
     
  6. n1ghtstalker

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

    Joined:
    28 Sep 2008
    Messages:
    59
    Likes Received:
    3
    Reputations:
    0

    в цикле организуй проверку до вычисления факториала.
    те

    for i := 1 to N do
    begin
    if i mod 2 <> 0 then
    z := z*i;
    end;

    ну и формулу чуть подредактировал. а то я не уловил зачем было i*2-1
    вот в приципе и всё.
     
  7. STIFFmaster

    STIFFmaster New Member

    Joined:
    11 Dec 2009
    Messages:
    9
    Likes Received:
    0
    Reputations:
    0
    Помогите, пожалуйста. Буду признателен.
    Дана целочисельная матрица. Отсортировать строки матрицы относительно первого элемента строки по убыванию.
     
  8. n1ghtstalker

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

    Joined:
    28 Sep 2008
    Messages:
    59
    Likes Received:
    3
    Reputations:
    0
    не хочу всю программу расписывать...
    просто проверяешь соседние элементы в строке если
    a[i,j] > a[i,j+1] then
    begin
    x:=a[i,j+1];
    a[i,j+1]:=a[i,j];
    a[i,j]:=x;
    end;
     
  9. XimiK69

    XimiK69 Member

    Joined:
    2 Jan 2010
    Messages:
    45
    Likes Received:
    5
    Reputations:
    0
    PHP:
    #include <iostream>
    using namespace std;

    int main()
    {
        
    int l 0;
        
    int a[3][3] = {
                       
    3,7,3,
                       
    4,2,8,
                       
    6,8,1
                      
    };
        for(
    int i 03i++)
        {

            for(
    int j 13j++)
            {
                
    int t a[i][j], 0;
                for(
    l=j-1; (>= 0)&&(a[i][l] < t); l--)
                { 
    a[i][l+1]=a[i][l]; }
                
    a[i][l+1] = t;
            }
        }
        for(
    int i 03i++)
        {
            for(
    int j 03j++)
            { 
    cout << a[i][j] <<"  "; }
            
    cout << endl;
        }
        return 
    0;
    }
     
  10. n1ghtstalker

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

    Joined:
    28 Sep 2008
    Messages:
    59
    Likes Received:
    3
    Reputations:
    0
    хе хоть в C и не шарю пока особо.
    товарищ зачем заранее матрицу и элементы определять?)
    меня б в универе за это уже на кол посадили )
     
  11. XimiK69

    XimiK69 Member

    Joined:
    2 Jan 2010
    Messages:
    45
    Likes Received:
    5
    Reputations:
    0
    просто проверил алгоритм на этом примере, хотя с тобой согласен.....на константах работать нельзя....
     
  12. DJeFRY_RASH

    DJeFRY_RASH New Member

    Joined:
    7 Apr 2009
    Messages:
    16
    Likes Received:
    1
    Reputations:
    0
    Ребят, гляньте, что можно сделать ...

    Code:
    program xyz;
    
    uses
      SysUtils;
    
    Function Ru ( S : string ) : string ;
    VAR
                 T : string ;			             { временная строка}
    	i : integer ;			             { номер символа в строке }
    	code : byte ;			             { код символа }
    BEGIN
    	T := S ;				             { получает значение параметра }
    	FOR i := 1 TO Length ( S ) DO	{ для всех символов строки S}
    	BEGIN				{ изменяет кодировку символов кириллицы }
    		code := Ord ( S[ i ] ) ;		{ определяет код символа}
    		CASE code OF		{ ПРОПИСНЫЕ БУКВЫ }
    		192 .. 197: T[ i ] :=Chr(code-64) ;	{ А-Е: 192-197	->128-133}
    		168: T[ i ] :=#240;			{ Ё: 168->240}
    		198 .. 223: T[ i ] :=Chr(code-64);	{ Ж-Я	: 198-223->128-133}													{ строчные буквы }
    		224 .. 229: T[ i ] :=Chr(code-64);	{ а-е	: 224-229->160-165}
    		184: T[ i ] :=#241;			{ ё: 184	->241}
    		230 .. 239: T[ i ] :=Chr(code-64);	{ е-п: 230-239->166-175}
    		240 .. 255: T[ i ] :=Chr(code-16);	{ р-я: 240-255->224-239}
    		END ;
    	END ;
    	Ru := T ;					{ возвращает значение временной строки }
    END;
    
    VAR
         i,j,k,n,temp:integer;                // искомые числа
         repeat_it:boolean;                   // зацикливание программы (True/False)
         ans:char;                                  // используется для получения согласия для продолжения работы программы
         label                                          // идентификатор
         p1;
    
    Function IntSqrt(temp:integer):real;                       // функция для вычисления квадратного корня.
    VAR
        x:real;
        t:real;
    begin                                                                              // начало функции
        x:=sqrt(temp);                                                          // извлечение квадратного корня из числа.
        if (x-round(x))=0 then t:=x                                  // Если от х отнять округленный х будет равно нулю, тогда t=x.
        else t:=0;                                                                // Либо t=0.
    end;                                                
    
    
    begin
    Writeln(Ru('Программа находит все натуральные числа, меньшие чем N, для которых выполняется соотношение a*a + b*b = c*c. [a,b,c < N]'));
    Writeln;                             // ...
          Writeln(Ru('Автор программы ...'));   // Вывод информации на экран об авторе программы.
          Writeln;                            // ...
          Writeln('...');                         // Вывод на экран - e-mail автора программы.
          Writeln;                                                                  
        p1:                                                                      // Возврат в это место при ошибке или при повторном вводе данных.
        repeat_it:=true;                                                // Зацикливание программы, True-правда.
        while repeat_it=true do begin
     Write(Ru('Введите число, которое вы хотите проверить: '));                // ...
        read(temp);
        Writeln('OTBET: ',IntSqrt(temp):6:0);        // Отправить temp на обработку в функцию 'Formula()' и вывести результат на экран.
        Writeln;                                                             // ...
        Write(Ru('Введите N: '));                              // ...
        Read(n);                                                            // Ввод числа N
        for i:=1 to N-1 do                                             // Увеличиваем переменную результата в N-1 раз.
        for j:=1 to N-1 do                                             // Увеличиваем переменную результата в N-1 раз.
        for k:=1 to N-1 do                                            // Увеличиваем переменную результата в N-1 раз.
        if i*i+j*j=k*k then Writeln('a=',i:4,';    b=',j:4,';    c=',k:4);      // Если i*i+j*j=k*k, то выводятся на экран все возможные варианты решения этого уравнения.
        Writeln;                                                            // ...
        Write(Ru('Вы хотите продолжить работу с программой ? (Y/N): '));          // Предложить продолжить работу с программой.
            Readln;
        readln(ans);                                                      // Получить согласие.
        writeln;                                                                // ...
        if (ans='Y') or (ans='y') or (ans=Ru('Н')) or (ans=Ru('н')) then GoTo p1; // Если согласие получено - возврат к началу.
        break;                                                                  
    
        end;
    end.
    Собственно если ввожу N = 6
    то выводит ответ
    a = 3 b = 4 c = 5
    a = 4 b = 3 c = 5
    то есть нужно просто добавить что-то (не знаю что) :(
    чтобы в случае если "с" совпадает несколько раз, тогда чтобы выводилось 1 раз.
     
  13. elusive.light

    elusive.light New Member

    Joined:
    29 Nov 2009
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    Ребята нужна срочная помощь. Помогите кто, как сможешь. Принимаются любые версии.

    Нужно написать программу для вычисления общего бала, зная оценки по лабам, тестам, но с учётом прогулов. Т.е. надо создать массив с оценками за лабы и тесты(размер массива определяется константами), вывести их среднее арифметическое(учитывая, что важность оценок в процентах такова: лабы - 75%, а тесты - 25%). Оценки находятся в структуре. Самое важное, это то что надо из среднего бала вычесть процент прогулов, который приблизительно равен 10%.
    Программа не должна быть сильно сложной, где-то на уровне 1-го курса 1-го семестра.


    Вот прога, которую я написал, но там нужно оценки за лабы и тесты сменить на массивы, с размером, меняющимся в константах.

    Code:
    #include<stdio.h>
    /*Прога для вычисления оценки за лабы и тесты с учётом пропусков*/
    
    struct Marks
    {
        char f[50], i[50], o[50];
        float lab1, lab2, lab3, lab4;
        float test1, test2;
        float num_prop;
    };
    
    void main()
    {
    Marks stud;
    
    scanf("%s %s %s", stud.f, stud.i, stud.o);
    
    printf("Vvedite ocenki za labi\n");
    scanf("%f %f %f %f", &(stud.lab1), &(stud.lab2), &(stud.lab3), &(stud.lab4));
    
    printf("Vvedite ocenki za testi\n");
    scanf("%f %f", &(stud.test1), &(stud.test2));
    
    printf("Vvedite kol-vo propuskov\n");
    scanf("%f", &(stud.num_prop));
    
    float res;
    
    res = (((stud.lab1 + stud.lab2 + stud.lab3 + stud.lab4) / 4) * 0.75) + (((stud.test1 + stud.test2) / 2) * 0.25) - (stud.num_prop * 0.1 * 5);
    
    printf("%f", res);
    
    getchar();
    getchar();
    
    }
    
    Я начал делать с массивами, но не получается сделать вычисления.

    Code:
    #include<stdio.h> 
    const int n = 4;
    const int m = 2; 
    
    struct Marks 
    { char sur[50], nam[50], pat[50]; 
    double lab[n], test[m]; 
    double numSpace; 
    }; 
    
    void main() 
    {
          Marks stud; 
    printf("Enter your full name...\n\t"); 
    scanf("%s %s %s", stud.sur, stud.nam, stud.pat); 
    
    printf("Enter marks of lab...\n\t"); 
       for( int i = 0; i < n; i++ ) 
          scanf("%lf", &(stud.lab[i]));  
    
    printf("Enter marks of test...\n\t"); 
       for( int k = 0; k < m; k++ ) 
          scanf("%lf", &(stud.test[k])); 
    
    printf("Enter numbers of space...\n\t");
    scanf("%lf", &(stud.numSpace)); }
    Можете дополнить мою прогу либо написать свой вариант. Прошу срочно надо на завтра(04.01.2010)
     
  14. lokli

    lokli New Member

    Joined:
    28 Dec 2009
    Messages:
    10
    Likes Received:
    0
    Reputations:
    0
    Держи код.
    Code:
    #include<stdio.h>
    
    
    struct Marks 
    { char sur[50], nam[50], pat[50]; 
    double lab[4], test[2];
    double numSpace; 
    }; 
    
    void main()
    {
    float res;
    int i,n=4,m=2,k;
    struct Marks stud;
    printf("Enter your full name...\n");
    scanf("%s %s %s", stud.sur, stud.nam, stud.pat);
    
    printf("Enter marks of lab...\n");
       for(i= 0; i < n; i++ )
          scanf("%lf", &(stud.lab[i]));
    
    printf("Enter marks of test...\n");
       for(k=0; k < m; k++ )
          scanf("%lf", &(stud.test[k])); 
    
    printf("Enter numbers of space...\n");
    scanf("%lf", &(stud.numSpace));
    
    res = (((stud.lab[0]+stud.lab[1] + stud.lab[2] + stud.lab[3]) / 4) * 0.75) + (((stud.test[0] + stud.test[1]) / 2) * 0.25) - (stud.numSpace * 0.1 * 5);
    printf("%f", res);
    getchar();
    getchar();
     }
    Работает правда не знаю так ли как ты хотел так что проверь.
     
  15. Retimiled

    Retimiled Banned

    Joined:
    23 Dec 2009
    Messages:
    110
    Likes Received:
    17
    Reputations:
    0
    2 n1ghtstalker

    дык вставь ввод в матрицу
    Code:
    
    int *a;
    int razmern;
    printf("\r\nВведите размерность матрицы:");
    scanf("%d",&razmern);
    a=new int[razmern*razmern];
    // ввод поэлементно
    for(int i=0;i<razmern;i++)
    {
       for(int j=0;j<razmern;j++)
       {
           printf("\r\nВведите элемент a[%d][%d]:",i,j);
           scanf("%d",&a[i][j]);
        }
    }
    
    .... тут чивото делай 8)
    ....
    delete[] a; //удаляй массив
    
     
  16. Spider545

    Spider545 New Member

    Joined:
    10 Apr 2009
    Messages:
    26
    Likes Received:
    2
    Reputations:
    0
    Ребят помогите плиззз!!!!!!! :)
    надо программку в С++ Builder написать такую: Алгоритм нахождения наибольшего паросочетания в двудольном графе.
    За ранее спасибо!)
     
  17. n1ghtstalker

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

    Joined:
    28 Sep 2008
    Messages:
    59
    Likes Received:
    3
    Reputations:
    0
    ололо ) во первых это надо было не мне
    во вторых я давал только комментарий по этому поводу
    )) гений ёпт )
     
  18. Retimiled

    Retimiled Banned

    Joined:
    23 Dec 2009
    Messages:
    110
    Likes Received:
    17
    Reputations:
    0
    2 n1ghtstalker
    извини не заметил что ты просто Критик!
     
    1 person likes this.
  19. GinTonic

    GinTonic New Member

    Joined:
    18 Dec 2009
    Messages:
    13
    Likes Received:
    3
    Reputations:
    1
    Подскажите как написать программу которая сама себя может копировать...
     
  20. lion-mobile

    lion-mobile New Member

    Joined:
    9 Apr 2009
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    привет. спасайте, ибо начинается сессия, а лаба не сдана..


    задание:



    1.
    квадратичная форма. Написать программу, которая вычисляет квадратичную форму для матрицы A размером n*n и вектора

    [​IMG]



    2.
    Реализовать задание с использованием функций. в программе должно быть минимум 2 функции: введение матрицы и осн. алгоритм ее обработки.



    спасибо огромное откликнувшимся!!!
     
Thread Status:
Not open for further replies.