zemlo Опубликовано 23 ноября, 2009 Жалоба Поделиться Опубликовано 23 ноября, 2009 Здравствуйте уважаемые специалисты. Помогите студенту пожайлуста. У меня две проблеммы: 1.Решить методом Крамера. Протестировать решение с помощью программы.(на языке Pascal): методом Крамера я решил, а программу написать немогу |3 2 4| |х1| |0| |2 1 1| |х2| = |0| |7 0 1| |х3| |0| Главный определитель системы получился= -15, а все дополнительные= 0 (нули) и значения всех неизвестных по формулам Крамера для решения системы n линейных уравнений с n неизвестными тоже (нули). 2. (тоже на языке Pascal) Составить и протестировать на компьютере программу, реализующую нахождение первой производной для таблично заданной функции по разностной формуле Лагранжа первого порядка точности. Видоизмените программу для вычисления второй производной (файл сохранит под другим именем!). Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 23 ноября, 2009 Жалоба Поделиться Опубликовано 23 ноября, 2009 zemlo: По первой задаче - метод Крамера самому писать не надо, это стандартный алгоритм, проще поискать в Интернете, например, тут есть. А приведенную систему и решать не надо - всякая однородная система (то есть с нулевыми свободными членами) имеет так называемое тривиальное решение - все иксы равны нулю. Вторая задача - например, так: var i,n:integer; s:real; y:array[1..100]of real;beginwrite('N ? '); readln(n); write('Step? '); readln(s);for i:=1 to n do begin write('Y[',i:2,'] ? '); read(y[i]) end; writeln; readln;for i:=2 to n do writeln((y[i]-y[i-1])/s); readlnend. и var i,n:integer; s:real; y:array[1..100]of real;beginwrite('N ? '); readln(n); write('Step? '); readln(s); s:=s*s;for i:=1 to n do begin write('Y[',i:2,'] ? '); read(y[i]) end; writeln; readln;for i:=3 to n do writeln((y[i]-2*y[i-1]+y[i-2])/s); readlnend. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 23 ноября, 2009 Жалоба Поделиться Опубликовано 23 ноября, 2009 Нексус: #include<stdio.h>main(){unsigned i,j,a[4],m[4],r[4]; unsigned long n=1;printf("IP ? "); scanf("%u.%u.%u.%u",&a[0],&a[1],&a[2],&a[3]); printf("Mask? "); scanf("%u.%u.%u.%u",&m[0],&m[1],&m[2],&m[3]); for(i=0;i<4;i++)r[i]=(~m[i]|a[i])&255; printf("%3u.%3u.%3u.%3u\n",r[0],r[1],r[2],r[3]-1); for(i=0;i<4;i++)r[i]=(m[i]&a[i])&255; printf("%3u.%3u.%3u.%3u\n",r[0],r[1],r[2],r[3]+1); for(i=0;i<4;i++)for(j=0;j<8;j++){if(!(m[i]%2))n*=2; m[i]/=2;}printf("%lu\n",n-2); getchar(); getchar();} Адреса задаются в обычном виде, с разделением октетов точками. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Нексус Опубликовано 23 ноября, 2009 Жалоба Поделиться Опубликовано 23 ноября, 2009 благодарю :bye1: Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
voin Опубликовано 24 ноября, 2009 Жалоба Поделиться Опубликовано 24 ноября, 2009 Спасибо за пояснения :bye1: Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
zemlo Опубликовано 24 ноября, 2009 Жалоба Поделиться Опубликовано 24 ноября, 2009 Я все понял, ок! Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
KCEHbKA!!! Опубликовано 25 ноября, 2009 Жалоба Поделиться Опубликовано 25 ноября, 2009 Всем доброго дня! Помогите,пожалуйста, решить задачку на паскале : Сортировать по возрастанию элементы массива A(n) и B(n), а затем создать новый массив C(n+n). Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 25 ноября, 2009 Жалоба Поделиться Опубликовано 25 ноября, 2009 KCEHbKA!!!: Неясно, что должно быть в массиве C. Запишем в него подряд содержание отсортированных массивов A и B. var a,b:array[1..100]of integer; c:array[1..200]of integer; i,j,n,t:integer;begin write('Length of the source arrays? '); readln(n); write('Array A? '); for i:=1 to n do read(a[i]); readln; write('Array B? '); for i:=1 to n do read(b[i]); readln; for i:=1 to n-1 do for j:=1 to n-i do if a[j]>a[j+1] then begin t:=a[j];a[j]:=a[j+1];a[j+1]:=t end; for i:=1 to n-1 do for j:=1 to n-i do if b[j]>b[j+1] then begin t:=b[j];b[j]:=b[j+1];b[j+1]:=t end; for i:=1 to n do begin c[i]:=a[i]; c[i+n]:=b[i] end;for i:=1 to 2*n do write(c[i]:8);writeln; readlnend. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
zemlo Опубликовано 25 ноября, 2009 Жалоба Поделиться Опубликовано 25 ноября, 2009 Ошибок не выдает, но на экран почему-то не выводит. подскажите в чем причина. #include <iostream.h>#include <math.h>class compl{public:float a,b;compl(float ac,float bc){a=ac;b=bc;}compl(){}~compl(){}/* Оператор сложения двух комплексных чисел*/compl operator+(compl c2){compl c1=*this,c3;c3.a=c1.a+c2.a;c3.b=c1.b+c2.b;return c3;}/* Оператор умножения двух комплексных чисел*/compl operator*(compl c2){compl c1=*this,c3;c3.a=c1.a*c2.a-c1.b*c2.b;c3.b=c1.a*c2.b+c1.b*c2.a;return c3;}/* Вывод комплексного числа */void vivod (){cout <<a;if (b>0)cout <<"+"<<b<<"i";else cout <<b<<"i";}};void main(){compl k1(2,3),k2(1,1),k3;k3=k1+k2;cout<<"\nРезультат сложения:\t";k3.vivod();compl k4(2,-1),k5(3,2), k6;cout<<"\nРезультат умножения:\t";k6=k4*k5;k6.vivod();} И такая же причина здесь ( тут на Pascal) const n = 3; { razmernost matrizi }type matr = array[1..n, 1..n] of longint;procedure GetMatr(a:matr; var b:matr;m,i,j:integer);{ vicherkivanie iz matrizi stroki i stolbza }var ki,kj,di,dj:integer;begindi:=0;for ki:=1 to m-1 dobeginif (ki=i) then di:=1;dj:=0;for kj:=1 to m-1 dobeginif (kj=j) then dj:=1;b[ki,kj]:=a[ki+di,kj+dj];end;end;end;Function Determinant(a: matr; n: integer) : longint;{ vichislrnie opredelitelja matrizi }var i,j,d,k:longint;b:matr;begind:=0; k:=1;if (n<1) thenbeginwriteln('Determinant: Cann''t run. N=',n); halt;end;if (n=1)then d:=a[1,1]else if (n=2)then d:=a[1,1]*a[2,2]-a[2,1]*a[1,2]else { n>2 }for i:=1 to n dobeginGetMatr(a,b,n,i,1);{writeln('i=',i,' a[',i,',1]=',a[i,1]);PrintMatr(b,n-1);}d:=d+k*a[i,1]*Determinant(b,n-1);k:=-k;end;Determinant:=d;end;vara: matr;b: array [1..n] of integer;i, j, dt: longint;temp: integer;begin{ zapolnenie matriz }a[1, 1]:=2; a[2, 1]:= 5; a[3, 1]:=4; b[1]:=30;a[1, 2]:=1; a[2, 2]:= 3; a[3, 2]:=2; b[2]:=150;a[1, 3]:=2; a[2, 3]:= 10; a[3, 3]:=9; b[3]:=110;{ vichislenie opredelitelja }dt := Determinant(a, n);for i:=1 to n do begin{menjaem mestami b s tekyshim stolbzom matrizi a}for j:=1 to n do begintemp := b[j];b[j] := a[i, j];a[i, j] := temp;end;writeln('x(', i, ') = ', Determinant(a, n) / dt);{nazad: {menjaem mestami b s tekyshim stolbzom matrizi a}for j:=1 to n do begintemp := b[j];b[j] := a[i, j];a[i, j] := temp;end;end;end. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 25 ноября, 2009 Жалоба Поделиться Опубликовано 25 ноября, 2009 zemlo: Выводит, только сразу закрывает окно вывода. В первую программу добавь в конце (перед последней } ) getchar(); Во вторую программу добавь в конце (перед end.) readln Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
zemlo Опубликовано 26 ноября, 2009 Жалоба Поделиться Опубликовано 26 ноября, 2009 Досада! Такую ошибку не заметил! Спасибо за поправку! Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
core_st Опубликовано 26 ноября, 2009 Жалоба Поделиться Опубликовано 26 ноября, 2009 задача. Есть две строки. Используя указатели найти и вьівести на екран общие последовательности из 5 и больше символов Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
volchok91 Опубликовано 26 ноября, 2009 Жалоба Поделиться Опубликовано 26 ноября, 2009 здравствуйте. помогите пожалуйста с прогой (лаб.раб) Разработать программу, которая вводит целочисленную матрицу из n строк и m столбцов (1 <n<= 100, 1<m<=50) и упорядочивает элементы матрицы Упорядочить каждую строку по возрастанию элементов Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
zemlo Опубликовано 26 ноября, 2009 Жалоба Поделиться Опубликовано 26 ноября, 2009 Просто зашиваюсь, всвязи с командировками появилось много хвостов. Незнаешь за что хвататься. Помогите пожайлуста. Есть код. #include<iostream.h>#include<math.h>int main(){int x1,x2;int b;int a;int c;cout<<"\n Vvedite a";cin>>a;cout<<"\n Vvedite b";cin>>b;cout<<"\n Vvedite c";cin>>c;if(b<a,b<c){cout<<"\nB dolghno byt bolshe A i C";return 1;}x1=((-b+sqrt(b*b))-(4*a*c))/(2*a);x2=((-b-sqrt(b*b))-(4*a*c))/(2*a);cout<<"\n x1="<<x1;cout<<"\n x2="<<x2;return 0;} Нужно добавить сложение двух матриц по формулам: S1 - первая матрица с элементами (s1.a11 s1.a12) (s1.a21 s1.a22) S2 - вторая матрица с элементами (s2.a11 s2.a12) (s2.a21 s2.a22) S3 = S1 + S2 s3.a11 = s1.a11 + s2.a11 s3.a12 = s1.a12 + s2.a12 s3.a21 = s1.a21 + s2.a21 s3.a22 = s1.a22 + s2.a22 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 26 ноября, 2009 Жалоба Поделиться Опубликовано 26 ноября, 2009 core_st: задача. Есть две строки. Используя указатели найти и вьівести на екран общие последовательности из 5 и больше символовНе совсем ясно, как поступать с вложенными общими последовательностями. Например, 12345678 и 234567 имеют общие последовательности из 5 и больше символов 23456, 234567, 34567. В таких случаях будем выводить все варианты, и длинные, и короткие. #include<stdio.h>#include<string.h>main(){char s1[100],s2[100],s3[100]; int i,j,k,l1,l2,m=5; gets(s1); gets(s2); l1=strlen(s1); l2=strlen(s2); for(i=0;i<=l1-m;i++) for(j=0;j<=l2-m;j++) {k=0; *s3='\0'; while(*(s1+i+k)==*(s2+j+k)&&i+k<l1&&j+k<l2) {*(s3+k)=*(s1+i+k); *(s3+ ++k)='\0'; if(k>=m)puts(s3);}}getchar();} Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 26 ноября, 2009 Жалоба Поделиться Опубликовано 26 ноября, 2009 volchok91: вводит целочисленную матрицу из n строк и m столбцов (1 <n<= 100, 1<m<=50) и упорядочивает элементы матрицы. Упорядочить каждую строку по возрастанию элементов var i,j,k,m,n,t:integer; a:array[1..100,1..50]of integer;beginwrite('Dimensions ? '); read(n,m); readln;for i:=1 to n do begin write('Line',i:3,' : '); for j:=1 to m do read(a[i,j]); readln end;for i:=1 to n do for k:=1 to m-1 do for j:=1 to m-i do if a[i,j]>a[i,j+1] then begin t:=a[i,j];a[i,j]:=a[i,j+1];a[i,j+1]:=t end; for i:=1 to n do begin writeln; for j:=1 to m do write(a[i,j]:8) end;writeln; readlnend. zemlo: Ничего не понятно. Есть код решения квадратного уравнения (с точки зрения вычислительной математики плохой), добавить сложение матриц... ;) Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Radu Опубликовано 27 ноября, 2009 Жалоба Поделиться Опубликовано 27 ноября, 2009 :) Помогите пож. решить пару задачи по С++ ;) C++ Strings Вводим текст в Strings. В данном тексте, найти и показать слова, содержащие как минимум 2 указаные буквы. Struct Вводим данные про 10 учеников ( ФИО,група ) в типе Struct. Отобразить список учеников в порядке возрастания их фамилии. Routines Rom-Bios Вкл. и выкл. по очереди индикаторы клавиатуры (Num Lock,Cups Lock,Scroll Lock). int16h Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
volchok91 Опубликовано 27 ноября, 2009 Жалоба Поделиться Опубликовано 27 ноября, 2009 огромное спасибо)) забыл сказать это надо было на С++ сделать... Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 27 ноября, 2009 Жалоба Поделиться Опубликовано 27 ноября, 2009 (изменено) volchok91: забыл сказать это надо было на С++ сделать...А надо было... Ну, переписать несложно: #include<iostream.h>#include<iomanip.h>main(){int i,j,k,m,n,t,a[100][50];cout<<"Dimensions ? "; cin>>n; cin>>m; for(i=0;i<n;i++){cout<<"Line "<<i+1<<" : "; for(j=0;j<m;j++)cin>>a[i][j];}for(i=0;i<n;i++)for(k=0;k<m-1;k++)for(j=0;j<m-k-1;j++)if(a[i][j]>a[i][j+1]) {t=a[i][j];a[i][j]=a[i][j+1];a[i][j+1]=t;}for(i=0;i<n;i++){cout<<endl; for(j=0;j<m;j++)cout<<setw(8)<<a[i][j];}cout<<endl; getchar(); getchar();} Изменено 27 ноября, 2009 пользователем Тролль Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 27 ноября, 2009 Жалоба Поделиться Опубликовано 27 ноября, 2009 (изменено) Radu: Помогите пож. решить пару задачи по С++ Можно и пару... В данном тексте, найти и показать слова, содержащие как минимум 2 указаные буквы.Не слишком ясно... Будем считать, что вводятся две буквы, которые должны присутствовать в каждом выведенном слове. #include<iostream.h>main(){char c,d,t[1000]; int i=0,j,k=0,l=0,m=0;cout<<"text ? "; cin.getline(t,200); fflush(stdin);cout<<"two letters ? "; cin>>c; cin>>d; do{if(t[i]>'@'){k++; if(t[i]==c)l=1; if(t[i]==d)m=1;} else{if(l+m==2){for(j=i-k;j<i;j++)cout<<t[j];cout<<endl;}k=0;l=0;m=0;}}while(t[i++]); getchar();getchar();} Вводим данные про 10 учеников ( ФИО,група ) в типе Struct.Отобразить список учеников в порядке возрастания их фамилии. #include<iostream>#include<string>using namespace std;main(){int m=10,j,k; struct{string f,i,o;int g;}a[10],t;for(j=0;j<m;j++){cout<<"F I O G ? ";cin>>a[j].f;cin>>a[j].i;cin>>a[j].o;cin>>a[j].g;}for(k=0;k<m-1;k++)for(j=0;j<m-k-1;j++)if(a[j].f>a[j+1].f){t=a[j];a[j]=a[j+1];a[j+1]=t;}for(j=0;j<m;j++){cout<<a[j].f<<" "<<a[j].i<<" "<<a[j].o<<" "<<a[j].g<<endl;}getchar(); getchar();} Чтобы не мучиться с тестовым вводом, можно временно заменить значение m на 2 или 3 - это число вводимых записей. Изменено 27 ноября, 2009 пользователем Тролль Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
volchok91 Опубликовано 27 ноября, 2009 Жалоба Поделиться Опубликовано 27 ноября, 2009 volchok91: А надо было... Ну, переписать несложно: #include<iostream.h>#include<iomanip.h>main(){int i,j,k,m,n,t,a[100][50];cout<<"Dimensions ? "; cin>>n; cin>>m; for(i=0;i<n;i++){cout<<"Line "<<i+1<<" : "; for(j=0;j<m;j++)cin>>a[i][j];}for(i=0;i<n;i++)for(k=0;k<m-1;k++)for(j=0;j<m-k-1;j++)if(a[i][j]>a[i][j+1]) {t=a[i][j];a[i][j]=a[i][j+1];a[i][j+1]=t;}for(i=0;i<n;i++){cout<<endl; for(j=0;j<m;j++)cout<<setw(8)<<a[i][j];}cout<<endl; getchar(); getchar();} СПАСИБО)) а как откомпелировать в devc++? Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 27 ноября, 2009 Жалоба Поделиться Опубликовано 27 ноября, 2009 volchok91: Вставляешь текст в окно ввода, выбираешь в меню наверху Execute -> Compile & Run. При вводе данных в процессе выполнения программы размерности матрицы, а также числа каждой ее строки удобно вводить друг за другом, разделяя их пробелами. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
AutoGen Опубликовано 28 ноября, 2009 Жалоба Поделиться Опубликовано 28 ноября, 2009 Доброго времени суток) Помогите плиз набросать классы для задачи, начали недавно c# изучать ну вообщем после делфей немного сложно( Суть задачи нужна схема работы маршрутного такси с возможностью добавления удаления остановок и пассажиров и схематической симуляцией....т.е. показать на какой остановке такси, сколько в нем пассажиров на остановке и т.д. Заранее спасибо за любую помощь Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Ф@РТОВЫЙ Опубликовано 28 ноября, 2009 Жалоба Поделиться Опубликовано 28 ноября, 2009 (изменено) AutoGen: вот набросал примерчик: class mTaxi{private string[] stopsets; //остановкиprivate int curstopset; //текущая остановкаprivate int napravlenie; //направление движения (1 или -1)public int marshrut; //номер маршрутаpublic int passagirs; //сколько пассажиров в таксиpublic string stopset //текущая остановка{ get { return stopsets[curstopset]; } set { }}public mTaxi(int Marshrut, string[] Stopsets){ //конструктор класса, в параметре передается номер маршрута и массив с остановками stopsets = Stopsets; marshrut = Marshrut; curstopset = 0; passagirs = 0; napravlenie = 1;}public void add_passagir(){ //добавляет 1 пассажира passagirs++;}public void add_passagir(int n){ //добавляет n пассажиров passagirs += n;}public bool del_passagir(){ //высаживает 1 пассажира if (passagirs == 0) return false; passagirs--; return true;}public bool del_passagir(int n){ //высаживает n пассажиров if (passagirs < n) return false; passagirs -= n; return true;}public string go_to_next_stopset(){ //едет на следующую остановку curstopset += napravlenie; if (curstopset == 0) napravlenie = 1; //меняем направление if (curstopset == stopsets.Length - 1) napravlenie = -1; //на конечных остановках return stopsets[curstopset];}} Изменено 28 ноября, 2009 пользователем Ф@РТОВЫЙ Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
AutoGen Опубликовано 28 ноября, 2009 Жалоба Поделиться Опубликовано 28 ноября, 2009 Ф@РТОВЫЙ: спасибо большое) уже понятней. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.