Задача, помогите пожалуйста: 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; } проблема, как видно, в последнем действии. как быть с функцией Лапласа, если ее значения находятся в таблице? википедия на функцию лапласа выдает какие-то стремные дифференциалы :<<<<
Наверное, хотел написать не находятся? Если аргумент функии Лапласа не из таблицы, тогда значение берут 0.5
Ребята не могли бы вы помочь с прогой, вся прога написана, всё сделано правильно, работает, но заминка в том, что уравнение для расчёта неправильное ! 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. Перепробовал многие варианты, не выходит. кто может разобраться, помогите !
Перед циклом Code: for i := 1 to N do z := z*(i*2-1); вставь строку Code: N:=((N div 2)+1); этим ты поставиш количество итераций цикла равным количеству непарных чисел до заданного числа N. Код не проверял но должно работать.
в цикле организуй проверку до вычисления факториала. те for i := 1 to N do begin if i mod 2 <> 0 then z := z*i; end; ну и формулу чуть подредактировал. а то я не уловил зачем было i*2-1 вот в приципе и всё.
Помогите, пожалуйста. Буду признателен. Дана целочисельная матрица. Отсортировать строки матрицы относительно первого элемента строки по убыванию.
не хочу всю программу расписывать... просто проверяешь соседние элементы в строке если 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;
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 = 0; i < 3; i++) { for(int j = 1; j < 3; j++) { int t = a[i][j], l = 0; for(l=j-1; (l >= 0)&&(a[i][l] < t); l--) { a[i][l+1]=a[i][l]; } a[i][l+1] = t; } } for(int i = 0; i < 3; i++) { for(int j = 0; j < 3; j++) { cout << a[i][j] <<" "; } cout << endl; } return 0; }
хе хоть в C и не шарю пока особо. товарищ зачем заранее матрицу и элементы определять?) меня б в универе за это уже на кол посадили )
просто проверил алгоритм на этом примере, хотя с тобой согласен.....на константах работать нельзя....
Ребят, гляньте, что можно сделать ... 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 раз.
Ребята нужна срочная помощь. Помогите кто, как сможешь. Принимаются любые версии. Нужно написать программу для вычисления общего бала, зная оценки по лабам, тестам, но с учётом прогулов. Т.е. надо создать массив с оценками за лабы и тесты(размер массива определяется константами), вывести их среднее арифметическое(учитывая, что важность оценок в процентах такова: лабы - 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)
Держи код. 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(); } Работает правда не знаю так ли как ты хотел так что проверь.
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; //удаляй массив
Ребят помогите плиззз!!!!!!! надо программку в С++ Builder написать такую: Алгоритм нахождения наибольшего паросочетания в двудольном графе. За ранее спасибо!)
ололо ) во первых это надо было не мне во вторых я давал только комментарий по этому поводу )) гений ёпт )
привет. спасайте, ибо начинается сессия, а лаба не сдана.. задание: 1. квадратичная форма. Написать программу, которая вычисляет квадратичную форму для матрицы A размером n*n и вектора 2. Реализовать задание с использованием функций. в программе должно быть минимум 2 функции: введение матрицы и осн. алгоритм ее обработки. спасибо огромное откликнувшимся!!!