c++ создал массив, отсортировал его... нужно добавить новый элемент не нарушая сортировку. Я то это сделал вот так: добавляю этот новый элемент в конец массива и потом заново его сортирую. Но у препода свои тараканы в голове, и говорит что бы сделал без повторной сортировки, но как? подскажите плз
return Смотри, если в массиве числа и они отсортированные по убыванию, то, начиная с первого элемента, сравниваешь числа. Если новое число больше i-того элемента, то вставляешь новое число в эту позицию.
решил проблему вот так: 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;//заносим введённое число в масив
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==
Задание на .NET Создайте проект, в котором опишите класс для решения задачи Вашего варианта. Разрабатываемый класс должен содержать следующие элементы: скрытые и открытые поля, конструкторы, методы, используя внутреннее и внешнее описание. В программе должна выполняться проверка всех разработанных элементов класса. Вариант 1. Описать класс «дом», содержащий сведения о количестве подъездов и этажей, и количестве квартир на этаже. Предусмотреть инициализацию с проверкой допустимости значений полей. Описать методы вычисления количества квартир в подъезде и в доме. P.s. помогите, решить я дуб зелёный в этой теме..
Задача Привет. Помоигте решить задачу.. нужен код с++ Дано число, составленное из чисел Фибоначчи. Числа Фибоначчи - элементы последова-тельности u1,u2,...., заданной начальными значениями u1 = u2 =1 и рекуррентным соотношением un+1=un-1+un. Например, 1123581321... . Определить цифру этого числа, стоящую на n-ом месте.
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 "<< f << std::endl; return 0; }
не ходил пол года в институт, сегодня пошел на экзамен по пыху. В общем не допустили меня сказали, что нужно сначала сдать-то,то и то.. Но в пыхе я 0, да и вообще в программировании 0. Буду благодарен за любую помощь. Не знаю что нужно сделать, но видимо нужно написать код. Может кто сможет сделать бесплатно, если кто-то возьмется за деньги прошу в ЛС с ценой. 1. Программа скалярного произведения 2. Умножение матриц на вектор 3. Умножение матрицы на матрицу 4. Метод деления пополам 5. Метод Ньютона 6. Метод Гауса 7. интерполяция полином функции заданной таблично. 8. Интегрирование функции x^2 на отрезке (0;10) численно.
Здравствуйте Нашел довольно интересные задачи по программирование. И одну задачу ни как решить не могу Задача 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. Вот так вот .. Сначало у меня сразу пришла идея насчет рекурсии .. То есть делаем цепочку из всех возможных . . Но, вопрос, когда остановиться? Значит тут какая-то другая технология, прошу помочь не всем кодом, а подсказкой
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 секунды врядли уложится ..
именно рунге-кутта-мерсона? просто рунге-кутта 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; }
Нужно написать прогу на Паскале, которая бы переворачивала список, и проверяла, есть ли в нем хотя бы 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. Прога не находит одинаковые элементы. В чем ошибка? ----------------------------------- Ошибку нашел.
Форумчение, есть у кого-нибудь модуль (исходники) для работы со списком в C++? Нужно создание/добавление в начало/добавление в конец - хотя бы это. Спрашиваю потому что не знаю C
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; спс, уже переписал.
Помогите написать прогу на delphi. Исходные данные такие: Определим граф как набор точек, некоторые из которых соединены линиями,а подграф как подмножество этого графа. Реализовать в виде модуля набор подпрограмм, определяющих: число точек в графе; число отрезков в графе; число изолированных подграфов, т.е. подграфов, не соединенных линиями; диаметр графа, т.е. длину максимальной незамкнутой линии; число отрезков, выходящих из каждой вершины графа. Граф описан следующим образом: Const NumberOfVertix=50; Type Graf = Array[1..NumberOfVertix, 1..NumberOfVertix] of Boolean; Используя разработанный модуль, найти все правильные графы из N вершин.(Граф считается правильным, если из всех вершин выходит равное количество отрезков.) и если можно пожалуйста объясните что за что отвечает.Задали курсовую,а меня не было на тех парах,когда проходили это.Взял чужую тетрадь а там вообще толком ничего не сказано.Заранее спасибо.