Помогите плз! Кто знает JavaScript????? Я его ваще не знаю. Есть хтмл форма, там два поля Имя и Фамилия и есть кнопка, надо что б когда юзер вводит в поля данные и нажимает на кнопку, ему выводился алерт типа ::: Привет, Нейм, твоя фамилия Фамилия. и на форме еще есть чек-бокс, если его чекнуть то в алерте все буквы должны быть большие. <form action="javascript: ShowAlert();" method="post" name="itsme" onSumbit="return ShowAlert()"> <br />Нейм:<br /> <input type="text" name="name" /> <br />ФИО:<br /> <input type="text" name="fio" /> <br />Чекбокс:<br /> <input type="checkbox" name="chb1" value="yes"/> Зробити прописними<br /> <br /><input type="submit" value="ВпереД !" /> </form>
Есть такое задание, по нему написал программу: Составить программу для нахождения одинаковых букв в словах Х и У равной длины, стоящих на одних и тех же местах. Code: #include <stdio.h> #include <conio.h> main() { char word1[]="hello"; char word2[]="hailo"; char *i1,*i2; int i,m=0; printf("\n\n"); m=sizeof(word1); if(sizeof(word2)>m) m=sizeof(word2); i1=word1; i2=word2; for(i=0;i<m-1;i++) { if(*(i1+i)==*(i2+i)) { printf("%d-letter is \"%c\"\n",i+1,*(i1+i)); } } return 0; } В итоге программа выводит: Code: 1 - letter is "h" 4 - letter is "l" 5 - letter is "o" 1 - letter is "h" 4 - letter is "l" 5 - letter is "o" Вопрос такой - как изменить программу так, чтобы вводилось в строку не по одному слову, а по несколько, и сначала, попарно проверялась бы их длина, и, если бы она была одинаковой, выполнялась бы эта программа. Поясню: char word1[]="magazin", "good", "week", "affect"; char word2[]="magasin", "god", "weak", "effect"; Проверяться должны 1,3 и 4 пары слов. Заранее, спасибо большое!
помогите пожалуйста! тут не сложно. с меня ++++ плиз, выручите Написать программу, которая бы перекодировала текстовый файл из кодировки MS-DOS в кодировку MS Windows. на С++
velvetdust, вот. изменил немного. Code: #include <stdio.h> #include <conio.h> #include <string.h> main() { char* word1[]={"magazin", "good", "week", "affect"}; char* word2[]={"magasin", "god", "weak", "effect"}; int len=sizeof(word1)/sizeof(char*); for(int j=0;j<len;j++) { char *i1,*i2; printf("\n\n"); //ïðîâåðêà if (strlen(word1[j])>strlen(word2[j]) || strlen(word1[j])<strlen(word2[j])) continue; int m=strlen(word1[j]); i1=word1[j]; i2=word2[j]; for(int i=0;i<m;i++) { if(*(i1+i)==*(i2+i)) { printf("%d-letter is \"%c\"\n",i+1,*(i1+i)); } } } return 0; }
Pascal Есть массив А (прим.: 3 4 5 3 2 1 5 2), нужно составить массив В в котором будут все элементы из массива А без повторений (т.е.: 3 4 5 2 1)
Turbo Pascal Turbo Pascal 1.Напишите программу, которая отображает делители одного номера и их число 2.Дано число N. Напишите программу которая записывает в файл а потом отображает в одной строке четные числа а в другой нечетные числа меньше чем N,разделенные пробелом. 3.Известно что все натуральные числа больше чем 7 могут быть отображены в виде суммы чисел 3 и 5. (8=3+5, 9=3+3+3, 10=5+5...) Напишите программу с помощью которой можно узнать сколько 3 и сколько 5 нужно чтобы отображать любое число >7.Результаты нужно записать в файл. 4.Дано число N. Напишите программу с помощью которой получим число К,в которой будут отсутствовать цифры 0 и 5 из N. Например если N=45207502 то K=4272 + за правильный ответ
ДА,именно так 1.Напишите программу, которая отображает делители одного номера и их число например: номер 20 делители 2,4,5,10 их число 4 или номер 18 делители 2,3,6,9 их число 4 В первом варианте была ошибка так как задачи перевел с другого языка
Code: #include "stdafx.h" #include <math.h> #include <conio.h> #include <iostream> using namespace std; int main() { double c=0,s=0; cout << "vvedite chislo:"; cin >> c; cout << c << endl; cout << "deliteli:"; for(int i=2; i<c; i++) { if(fmod(c,i) == 0) { cout << i << " "; s++; } } cout << endl << "CHislo:" << s << endl; system ("pause"); return 0; }
Вот моя простая версия на 3 задачу Code: Program task3; var a,b,c:byte; begin write('N='); readln(c); for a:=0 to c do for b:=0 to c do if 3*a+5*b = c then begin if a <> 0 then Write(a,' Troek, '); if b <> 0 then Write(b,' Pyaterok, '); Writeln(' = ',c) end; end.
Помогите пожалуйста завтра сдавать нужно закоментить каждую строку проги или по другому, вообщем препод сказал объяснить прогу! и еще если он например покажет на определенное место в исходняке я должен объяснить!!! помогите пожалуйста!!!!!!! Code: program test_variant_14; uses crt, windos; type rec=record vopros:string; tip:byte; otvet:array [1..4] of string[100]; ball:integer; end; st=record fam:string; gruppa:integer; ocenka:byte; end; var zadanija:file of rec; students:file of st; stud:st; z:rec; pass:string; key:char; k:byte; procedure menu_pr; forward; procedure regim2; forward; procedure test; forward; procedure password; forward; procedure menu; begin repeat clrscr; writeln('programma testirovanie studentov '); writeln(' 1. Prepod'); writeln(' 2. Student'); writeln(' 3. Vyhod'); key:=readkey; until (ord(key)>=49) and (ord(key)<=51); case key of '1': password; '2': regim2; '3': halt(1); end; end; procedure prosmotr; var a,size:longint; temp:file of rec; i:byte; begin assign(zadanija,'zadanija'); {$I-} reset(zadanija); close(zadanija); {$I+} if IOResult <>0 then menu_pr; reset(zadanija); begin while not eof(zadanija) do begin read(zadanija,z); clrscr; writeln('1-udalenie voprosa, 2-redaktirovanie'); writeln('najmi lubuju klavishu dla sledujushego voprosa'); writeln(z.vopros); writeln('Pravilnii otvet: ',z.otvet[1]); if z.tip<>2 then for i:=2 to 4 do writeln('otvet № ',i,' ',z.otvet[i]); writeln('ball: ',z.ball); key:=readkey; if key='1' then begin A:=filepos(zadanija); Assign(temp,'temp'); Rewrite(temp); Seek(zadanija,0); If (a-1)<>0 then While size<>(a-1) do Begin Read(zadanija,z); Write(temp,z); Size:=filepos(zadanija); end; seek(zadanija,a); while not eof(zadanija) do begin read(zadanija,z); write(temp,z); end; close(zadanija); close(temp); erase(zadanija); rename(temp,'zadanija'); reset(zadanija); seek(zadanija,a-1); end; if key='2' then begin seek(zadanija,filepos(zadanija)-1); writeln('vvedi vopros:'); readln(z.vopros); writeln(' Vyberete tip voprosa;'); writeln(' 1- neskolko variantov otveta '); writeln(' 2- trebuetsya vvod znacheniya'); repeat key:=readkey; until (key='1') or (key='2'); case key of '1':z.tip:=1; '2':z.tip:=2; end; writeln(' Vvedi pravilnyi otvet'); Readln(z.otvet[1]); If z.tip=1 then for i:=2 to 4 do begin z.otvet[i]:=''; writeln(' Vvedi otvet №',i); readln(z.otvet[i]); end; writeln(' Vvedi bally za pravilnyi otvet'); repeat {$I-} readln(z.ball); {$I+} Until Ioresult=0; {$I-} write(zadanija,z); seek(zadanija,filepos(zadanija)-1); end; end; clrscr; writeln('вы просмотрели все задания'); writeln('нажмите любую клавишу,'); writeln('чтобы выйти в предыдущее меню'); key:=readkey; menu_pr; end; end; procedure otchet; var temp:file of rec; begin assign(students,'students'); {$I-} Reset(students); close(students); {$I+} if IOResult <> 0 then begin writeln('ERROR!!! Nikto ne proshel test!'); writeln('Najmi lyubuyu klavishu'); key:=readkey; menu_pr; end; reset(students); while not eof(students)do begin read(students,stud); clrscr; writeln(' Familiya: ',stud.fam); writeln(' Gruppa: ',stud.gruppa); writeln(' ball: ',stud.ocenka); writeln; writeln(' Najmite lyubuyu klavishu,chtoby prosmotret otchet dalshe'); key:=readkey; end; clrscr; writeln(' Najmite lyubuyu klavishu,chtoby vyiti v menyu'); key:=readkey; menu_pr; end; procedure vvod;{ввод новых заданий} var i,j:byte; begin Assign(zadanija,'zadanija'); clrscr; writeln('vvedi vopros:'); readln(z.vopros); writeln(' Vyberete tip voprosa;'); writeln(' 1- neskolko variantov otveta '); writeln(' 2- trebuetsya vvod znacheniya'); repeat key:=readkey; until (key='1') or (key='2'); case key of '1':z.tip:=1; '2':z.tip:=2; end; writeln(' Vvedi pravilnyi otvet'); Readln(z.otvet[1]); If z.tip=1 then for i:=2 to 4 do begin z.otvet[i]:=''; writeln(' Vvedi otvet №',i); readln(z.otvet[i]); end; writeln(' Vvedi bally za pravilnyi otvet'); repeat {$I-} readln(z.ball); {$I+} Until Ioresult=0; {$I-} reset(zadanija); {$I+} If ioresult<>0 then Begin rewrite(zadanija); close(zadanija); End; reset(zadanija); seek(zadanija,filesize(zadanija)); write(zadanija,z); close(zadanija); writeln(' Novoe zadanie dobavleno'); writeln(' Najmi lyubuyu klavishu'); key:=readkey; menu_pr; end; procedure password; begin clrscr; repeat writeln(' vvedi parol (123) Dlya vyhoda vvedi EXIT'); readln(pass); if pass = 'EXIT' then menu; write(' ERROR!! Parol nevernyi '); until pass='123'; menu_pr; end; procedure menu_pr; begin repeat clrscr; writeln(' 1. Vvod novyh zadanii'); writeln(' 2. Prosmotr i udalenie zadanii'); writeln(' 3. Otchet '); writeln(' 4. Vyhod'); key:=readkey; until (key>='1') and (key<='4'); case key of '1': vvod; '2': prosmotr; '3': otchet; '4': menu; end; end; procedure regim2; begin CLRSCR; assign(zadanija,'zadanija'); {$I-} reset(zadanija); close(zadanija); {$I+} if IOResult <> 0 then begin writeln('ERROR!!'); writeln('Vvedi zadaniya dlya testa'); writeln; writeln('Najmi lyubuyu knopku'); key:=readkey; menu; end; writeln('Vvedi familiyu:'); readln(stud.fam); writeln('vvedi nomer gruppy'); repeat {$I-} readln(stud.gruppa); {$I+} Until (Ioresult=0) and (stud.gruppa>=1000) and (stud.gruppa<=9999); writeln('Vy zaregistrirovalis'); writeln('najmite lyubuyu klavishu dlya nachala testa'); key:=readkey; test; end; procedure test; var otvet,vop:byte; m: array [1..4] of byte; n,k1,stball:byte; Hour,min,sec,sec100,time:word; time_hour,time_min,time_sec:word; Otvet1:string; Label 1; begin vop:=0; stball:=0; Assign(zadanija,'zadanija'); reset(zadanija); gettime(Hour,min,sec,sec100); time_sec:=filesize(zadanija)*15+sec; time:=filesize(zadanija)*15; time_min:=min; time_hour:=hour; if time_sec>=60 then begin inc(min); time_min:=min; time_sec:=time_sec-60; if time_min>=60 then begin inc(hour); time_hour:=hour; time_min:=time_min-60; end; end; repeat read(zadanija,z); clrscr; writeln('na kajdoe zadanie otvedeno 15sek'); writeln('poetomu vsego u vas ',time,' sek'); writeln(z.vopros); if z.tip=1 then begin randomize; writeln; writeln('otvety:'); for n:=1 to 4 do begin 1: m[n]:=random(5); for k1:=1 to (n-1) do if m[n]=m[k1] then goto 1; if m[n]=0 then goto 1; if m[n]=1 then otvet:=n; writeln(z.otvet[m[n]]); end; writeln('Vvedi № pravilnogo otveta'); writeln('Najmi Esc dlya vyhoda iz testa'); repeat key:=readkey; until ((key>='1') and (key<='5') or (key=#27)); case key of '1'..'5':begin Str(otvet,otvet1); If key=otvet1 then begin stball:=stball+z.ball; inc(vop); end; end; #27:menu; end; end; if z.tip=2 then begin writeln('Vvedi otvet '); writeln('Vvedi EXIT dlya vyhoda iz testa'); readln(otvet1); if otvet1=z.otvet[1] then begin stball:=stball+z.ball; inc(vop); end; if otvet1='EXIT' then menu; end; gettime(hour,min,sec,sec100); until (hour*10000+min*100+sec>=time_hour*10000+time_min*100+time_sec) or (eof(zadanija)); clrscr; if (hour*10000+min*100+sec>=time_hour*10000+time_min*100+time_sec) and (not eof(zadanija)) then writeln('vremja isteklo') else writeln('vy proshli test!'); writeln('Vy nabrali ', stball,' ballov'); writeln('pravilnyh otvetov: ',vop); stud.ocenka:=stball; assign(students,'students'); {$I-} Reset(students); {$I+} if IOResult <> 0 then begin rewrite(students); close(students); end; reset(students); seek(students,filesize(students)); write(students,stud); close(students); writeln('najmi lyubuyu klavishu'); key:=readkey; menu; end; begin menu end.
Помогите срочно, на завтра надо сдать лабу по ассемблеру, вот задание. Вводятся два числа в двоичной системе исчисления. Найти их произведение и вывести на экран в двоичной системе исчисления. Тому кто напишет максимум плюсиков.
Задача собственно такая. С меня много + Написать макрос, который выводит все возможные перестановки указанных элементов: Вот что написал препод, как результат выполнения: DSL N,'a','b','c' db 'a', 'b', 'c' db 'a', 'c', 'b' db 'c', 'a', 'b' ... и тд Использовать можно только макроопределения, команды асма в макросе использовать нельзя.
HELP ME PLEASE!!! в Общем дело 5 минут. Есть программа *.pas там вводятся данные (цифры) и они обрабатываются и выдается ответ. В общем нужно сделать чтобы "Дается Исходник Программы. Там Вводятся Данные. Нужно Чтобы 'Вводится Последовательность Из 0 И 1. Программа Должна Выдать 0 Если Число 0-Ей Больше И 1 – В Противном Случае. Пример. 000011. Программа Выдает 0." Code: unit unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons; type TForm1 = class(TForm) Label1: TLabel; Edit1: TEdit; Button1: TButton; Memo1: TMemo; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var st,st_p:string; i:integer; begin st:=Edit1.text; i:=1; st_p:=st; for i:=1 to Length(St_p) do if (st_p[i]='0') and (st_p[i+1]='0') then st_p[i+1]:='1'; memo1.Lines.Add('введено : '+st); memo1.lines.Add('получаем : '+st_p); Edit1.Text:='' end; procedure TForm1.FormCreate(Sender: TObject); begin edit1.Text:=''; Memo1.Text:='Вводится Последовательность Из 0 И 1. Программа Должна Выдать 0 Если Число 0-Ей Больше И 1 – В Противном Случае.'; end; end.
если вводится тока 0 или 1 то можно пойти вот таким способом Code: procedure TForm1.Button1Click(Sender: TObject); var x,y:integer; st:string; begin st:=Edit1.text; y:=0; for x:=1 to length(st) do if st[x]='0' then inc(y); if y>(length(st) div 2) then y:=0 else y:=1; memo1.Lines.Add('введено : '+st); memo1.lines.Add('получаем : '+intostr(y)); Edit1.Text:='' end;
Code: function Trace(txt:string):string; Begin form1.Memo1.Lines.Add(txt); End; procedure TForm1.Button1Click(Sender: TObject); var i : integer; st_0, st_1 : integer; TxtLine : string; begin st_0 := 0; st_1 := 0; Memo1.Text := ''; Trace('Исходная строка: '+Edit1.Text); TxtLine := Edit1.Text; For i := 1 to Length(Edit1.Text) Do Begin If StrToInt(TxtLine[i]) = 0 then st_0 := st_0 + 1;//inc(st_0) If StrToInt(TxtLine[i]) = 1 then st_1 := st_1 + 1; if (StrToInt(TxtLine[i]) <> 1) and (StrToInt(TxtLine[i]) <> 0) then Begin ShowMessage('Введено другое число, пожалуйста введите правильно!'); Edit1.Text := ''; Memo1.Text := ''; Exit; End; End; If st_0 = st_1 then Trace('Нулей и единиц поровну [ 0 = 1]') Else If st_0 > st_1 then Trace('Нулей больше чем единиц [0 > 1] : 0') Else Trace('Нулей меньше, чем единиц [0 < 1] : 1'); end; procedure TForm1.FormCreate(Sender: TObject); begin edit1.Text:=''; Memo1.Text:=''; end; end.
может кому пригодитса C# Code: using System; using System.Collections.Generic; using System.Text; namespace ZI_22_KMDI_5 { class Lab { const int n = 2; double E = 0.00001; double[] X1 = { 0, 0 }; double[] X2 = new double[n]; double[,] MatrixJakobi(double[] X) { double[,] J = new double[n, n]; double y, h = 0.000000001; for (int i = 0; i < n; i++) { y = Funkcia(X, i); for(int k = 0; k < n; k++) { X[k] = X[k] + h; J[i,k] = (Funkcia(X,i) - y)/h; X[k] = X[k] - h; } } return (J); } double Funkcia(double[] X, int f) { double fx = 0; if (f == 0) fx = -X[0] + X[0] * X[0] - X[1] * X[1] + 0.1; if (f == 1) fx = -X[1] + 2 * X[0] * X[1] - 0.1; return (fx); } double[] Funkcii(double[] X) { double[] F = new double[n]; F[0] = -X[0] + X[0] * X[0] - X[1] * X[1] + 0.1; F[1] = -X[1] + 2 * X[0] * X[1] - 0.1; return (F); } bool Pohubka(double[] mX1, double[] mX2) { double a, b; a = (mX2[0] - mX1[0]) / mX1[0]; a = Math.Abs(a); b = (mX2[1] - mX1[1]) / mX1[1]; b = Math.Abs(b); Console.WriteLine(Math.Max(a,b)); if (Math.Max(a,b) <= E) return (true); else return (false); } double[,] Obertanna(double[,] A) { double[] b = new double[n]; double[,] X = new double[n, n]; double[] dX = new double[n]; for (int k = 0; k < n; k++) { for (int i = 0; i < n; i++) { if (k == i) b[i] = 1; else b[i] = 0; } dX = Gaus(A, b); for (int i = 0; i < n; i++) X[i, k] = dX[i]; } return (X); } double[] Gaus(double[,] A, double[] b) { double[,] GausA = new double[n, (n + 1)]; double[] X = new double[n]; for(int i = 0; i < n; i++) for (int j = 0; j < (n + 1); j++) { if (j != n) GausA[i, j] = A[i, j]; else GausA[i, j] = -b[i]; } for (int l = 0; l < n - 1; l++) { double c = GausA[l, l]; for (int k = l + 1; k < (n+1); k++) { GausA[l, k] = -GausA[l, k] / c; for (int i = l + 1; i < n; i++) GausA[i, k] = GausA[i, k] + GausA[i, l] * GausA[l, k]; } } X[n - 1] = -GausA[n - 1, n] / GausA[n - 1, n - 1]; for (int i = n - 2; i >= 0; i--) { double s = GausA[i, n]; for (int k = i + 1; k < n; k++) s = s + GausA[i, k] * X[k]; X[i] = s; } return (X); } double[] Mnogenna(double[,] A, double[] B) { double[] C = new double[n]; C[0] = A[0, 0] * B[0] + A[0, 1] * B[1]; C[1] = A[1, 0] * B[0] + A[1, 1] * B[1]; return (C); } public void Calculate() { double[,] A = new double[n, n]; double[] fX = new double[n]; double[] Mn = new double[n]; int d = 0; A = MatrixJakobi(X1); A = Obertanna(A); fX = Funkcii(X1); Mn = Mnogenna(A, fX); X2[0] = X1[0] - Mn[0]; X2[1] = X1[1] - Mn[1]; d++; while (Pohubka(X1, X2) != true) { if (d > 5) { A = MatrixJakobi(X1); A = Obertanna(A); } X1[0] = X2[0]; X1[1] = X2[1]; fX = Funkcii(X1); Mn = Mnogenna(A, fX); X2[0] = X1[0] - Mn[0]; X2[1] = X1[1] - Mn[1]; d++; Console.WriteLine("x(1) = " + X2[0]); Console.WriteLine("x(2) = " + X2[1]); } Console.WriteLine("------"); Console.WriteLine("Результат"); Console.WriteLine("x(1) = " + X2[0]); Console.WriteLine("x(2) = " + X2[1]); Console.WriteLine("------"); Console.WriteLine("Перевiрка 1"); Console.WriteLine(-X2[0] + X2[0] * X2[0] - X2[1] * X2[1] + 0.1); Console.WriteLine(-X2[1] + 2 * X2[0] * X2[1] - 0.1); Console.WriteLine("Перевiрка 2"); Console.WriteLine(X2[0] + " = " + (X2[0] * X2[0] - X2[1] * X2[1] + 0.1)); Console.WriteLine(X2[1] + " = " + (2 * X2[0] * X2[1] - 0.1)); } } class Program { static void Main(string[] args) { Lab lab5 = new Lab(); lab5.Calculate(); Console.Read(); } } }
метод Рунге-Кутта 4 порядка: Code: using System; using System.Collections.Generic; using System.Text; namespace ZI_22_KMDI_6 { class RyngeRytta4 { const int n = 2; // Порядок системи const double h = 0.1; // Крок double x, a = 0, b = 1; // Проміжок global double[] y = new double[n]; //если небольшой масив global double[] f = new double[n]; //тогда можна без global void dy() // Праві частини рівнянь { f[0] = y[1]; f[1] = (8 * y[1] - 5 * y[0] - 4 * Math.Exp(x) * Math.Sin(x / 2)) / 4; } public void Calculate() { double[] K1 = new double[n]; double[] K2 = new double[n]; double[] K3 = new double[n]; double[] K4 = new double[n]; double[] z = new double[n]; // Початкові значення y[0] = 1; y[1] = 1; x = a; do { dy(); for (int i = 0; i < n; i++) { K1[i] = f[i]; z[i] = y[i]; y[i] = z[i] + 0.5 * h * K1[i]; } x = x + 0.5 * h; dy(); for (int i = 0; i < n; i++) { K2[i] = f[i]; y[i] = z[i] + 0.5 * h * K2[i]; } dy(); for (int i = 0; i < n; i++) { K3[i] = f[i]; y[i] = z[i] + 0.5 * h * K3[i]; } x = x + 0.5 * h; dy(); for (int i = 0; i < n; i++) { K4[i] = f[i]; y[i] = z[i] + h * (K1[i] + K4[i] + 2 * (K2[i] + K3[i])) / 6; } Console.WriteLine("x = " + x + "; y = " + y[0] + "; y' = " + y[1]); } while (x < b); } } class Program { static void Main(string[] args) { RyngeRytta4 Lab6 = new RyngeRytta4(); Lab6.Calculate(); Console.Read(); } } }
опять задача из екзамена: С: Code: #include <stdio.h> #include <math.h> #include <conio.h> #define n 2 void main(void) { clrscr(); int i, j, L, k, m; const double E=1e-5; double x[n], Xprev[n], F[n], J[n][n], a[n][n+1], deltaX[n]; double f(int i,double x[n]); double Jacobi(int i,int j,double x[n]); double max(double x[n],double Xprev[n]); x[0]=0.00000001; //pochatkove x[1]=0.00000001; //nablyzhennya m=0; do { for(i=0;i<=n-1;i++) Xprev[i]=x[i]; //----------FORMUYEMO F TA J------------------------ for(i=0;i<=n-1;i++) { F[i]=f(i,x); for(j=0;j<=n-1;j++) J[i][j]=Jacobi(i,j,x); } //-------------------------------------------------- for(i=0;i<=n-1;i++) for(j=0;j<=n-1;j++) a[i][j]=J[i][j]; a[0][n]=F[0]; a[1][n]=F[1]; //------------- GAUSS PO STOVPTSYAH---------------------- for(L=0;L<=n-2;L++) { for(k=L+1;k<=n;k++) { a[L][k]=-a[L][k]/a[L][L]; for(i=L+1;i<=n-1;i++) a[i][k]=a[i][k]+a[i][L]*a[L][k]; } } // ------ZVOROTNIY HID------- deltaX[n-1]=-a[n-1][n]/a[n-1][n-1]; for(i=n-2;i>=0;i--) { deltaX[i]=a[i][n]; for(k=i+1;k<=n-1;k++) deltaX[i]+=a[i][k]*deltaX[k]; } for(i=0;i<=n-1;i++) x[i]+=deltaX[i]; //--UTOCHNENE ZNACHENNYA x[i]-- m++; } while(max(x,Xprev)>E); printf("\t ---ROZVYAZOK SYSTEMY---\n\t| (ZA %d ITERATSII): |\n",m); for(i=0;i<=n-1;i++) printf("\t| x[%d]= %lf |\n",i,x[i]); printf("\t -----------------------"); printf("\nPEREVIRKA_1!!! %lf\n",-x[0]+x[0]*x[0]-x[1]*x[1]-0.1); printf("PEREVIRKA_2!!! %lf\n",-x[1]+2*x[0]*x[1]-0.1); getch(); } double f(int i,double x[n]) { if(i==0) return -x[0]+x[0]*x[0]-x[1]*x[1]-0.1; else return -x[1]+2*x[0]*x[1]-0.1; } double Jacobi(int i,int j,double x[n]) { const double h=1e-9; double prev=f(i,x); x[j]+=h; return (f(i,x)-prev)/h; } double max(double x[n],double Xprev[n]) { int i; double z,q; z=fabs((x[0]-Xprev[0])/Xprev[0]); for(i=1;i<=n-1;i++) { q=fabs((x[i]-Xprev[i])/Xprev[i]); if(q>z) z=q; } return z; }
модифицирований метод Ейлера C: Code: #include <stdio.h> #include <math.h> #include <conio.h> #define n 2 #define pi 3.14159265 void main(void) { int i; double x,a,b,h,y[n],yn[n],yz[n]; double dy(int i,double x,double y[n]); double modyficEYLER(int i,double h,double x,double y[n],double yz[n]); a=pi/4; b=pi/3; h=0.026; x=a; y[0]=0.0; y[1]=2.0; printf("x= %lf\ty[1]= %lf\ty[2]= %lf\n",x,y[0],y[1]); do { printf("x= %lf\t",x+h); for(i=0;i<=n-1;i++) { yz[i]=y[i]; yn[i]=modyficEYLER(i,h,x,y,yz); printf("y[%d]= %lf\t",i+1,yn[i]); } printf("\n"); for(i=0;i<=n-1;i++) y[i]=yn[i]; x+=h; } while(x<=(b-h)); printf("\n"); getch(); } double dy(int i,double x,double y[n]) { if(i==0) return y[1]; else return -4*y[0]+8*(1/tan(2*x)); } double modyficEYLER(int i,double h,double x,double y[n],double yz[n]) { yz[i]=yz[i]+h*dy(i,x,yz); return y[i]+0.5*h*( dy(i,x,y)+dy(i,x+h,yz) ); }