2 NeOz через строку символов решается тривиально ... примерно так: Code: unsigned char str[100]; unsigned char tempbuf[800]; unsigned char buf[10]; unsigned char rezult[100]; int i,j,k; unsigned long l; strcpy(str,"Bugtrack for guru!!!!"); for(i=0;*(str+i)!=0;i++) { itoa(*(str+i),buf,2); for(j=0;j<8-strlen(buf);j++) strcat(tempbuf,"0"); strcat(tempbuf,buf); } for(i=0,j=0,buf[7]=0;*(tempbuf+i)!=0;i+=7,j++) { memmove(buf,tempbuf+i,7); rez[j]=(unsigned char )strtoul(buf,0,2); } код не проверял! Проверь!
"вывести упорядоченное бинарное дерево послойно, начиная с корня, сначала исходное, а затем - после удаления указанного слоя" прошу помочь исходниками или мануалами чтобы самому разобраться, если есть что дельного предложить то стучите в асю на аватарке
Здравствуйте уважаемые!Помогите решить: ---------------------------------------- ---------------------------------------- Заранее очень благодарен! Язык программирования ПАСКАЛЬ!
в универе дали задание, для допуска к экзамену. Создать виндоуз-приложение "Учет автотранспортных перевозок по заказчику" предусмотреть: 1. Создание входного файла Справочник марок автомобилей (код марки автомобиля, марка автомобиля, стоимость перевозки одного ткм) Автомобили (инвентарный номер, код марки автомобиля) Заказчики (код заказчика, Наименование заказчика, адрес, телефон) 2. На основе данных входных файлов и заданного в форме кода заказчика, инвентарного номера авто и введенных в форме Массы груза и Расстояния, номера заказа и тады заказа получение выходного файла Заказы (номер заказа, дата заказа, код заказчика, инвентарный номер авто, масса груза в т, расстояние км) 3. Выводим стоимость заказа по заданному коду заказчика 4. Создание меню для выполнения всех указанных в задании пунктов. делать нужно в байсике. кому не трудно =)
2 CrazyStudentS_Mi}{ Здесь я писал бинарные деревья. Есть необходимые тебе функции (Delphi) Скачать (~36kb) P.S. Призываю нуждающихся в помощи указывать язык прогроммирования! 2 Karapuziko Code: uses Crt; const a=20.3; var f,x:real; res_sin,arg_sin:real; function Log(x, b: Real): Real; begin Result := ln(x) / ln(b); end; function Rus(mes:string):string; var i:integer; begin for i:=1 to length(mes) do case mes[i] of 'А'..'п': mes[i]:=Chr(Ord(mes[i])-64); 'р'..'я': mes[i]:=Chr(Ord(mes[i])-16); end; rus:=mes; end; begin {Первая задача} writeln('======================================================='); write(rus('Введите значение аргумента : '));readln(x); if x>1 then f:=log((x+1),10) else f:=sqr(sin(sqrt(abs(a*x)))); write(rus('Значение функции : '));writeln(f); {Вторая задача} arg_sin:=0.1; res_sin:=(1+sin(arg_sin)); while arg_sin<9.9 do begin arg_sin:=arg_sin+0.1; res_sin:=res_sin*(1+sin(arg_sin)); end; writeln('======================================================='); write(rus('Вычисление прогресии : ')); Write(rus('Ответ : ')); Writeln(res_sin); writeln('======================================================='); readln; end. В Паскале не писал, но должно быть так
Почти так Code: function Log(x, b: Real): Real; begin Log := ln(x) / ln(b); end; ========= De-visible: просто он видимо на DELPHI кодить привык...
Помогите пожалуйста написать программу на С++,срочно... Надо решить головоломку Send +more --------- Money, здесь каждой букве соответствует какое-то 1 число..надо найти соответствие.. Заранее спасибо...(есть уже некоторые известные M=1, S=8, О=0)...
2 plat 1000*s+100*e+10*n+d+1000*m+100*o+10*r+e=10000*m+1000*o+100*n+10*e+y индексируем переменные s-> a[0] e-> a[1] n-> a[2] d-> a[3] m-> a[4] o-> a[5] r-> a[6] y-> a[7] далее простая рекурсия с глубиной 8 шагов Code: int a[8]; void step(int cur) { int i,j,fl; if(cur<8) { for(i=0;i<10;i++) { for(j=0,fl=0;j<cur && fl==0;j++) if(a[j]==i) fl=1; if(fl==0) { a[cur]=i; step(cur+1); } } } else { if(1000*a[0]+100*a[1]+10*a[2]+a[3]+1000*a[4]+100*a[5]+10*a[6]+a[1]==10000*a[4]+1000*a[5]+100*a[2]+10*a[1]+a[7]) { // тут вываливай результат ... он в массиве } } }
спасибо большое!!! а можно чуть чуть поподробнее про программу...нам пытались дать весь С++ за 3 мес. и многое пока непонятно
Код дан в рамках Си (Керниган и Ритчи) Code: #include "stdio.h" int a[8]; // массив в котором подбираем цифры (хотя они в виде чисел) void step(int cur) { int i,j,fl; if(cur<8) // проверяю не пора ли заканчивать { for(i=0;i<10;i++) // подбираю цифру { for(j=0,fl=0;j<cur && fl==0;j++) // проверяю не было ли такх цифр if(a[j]==i) fl=1; if(fl==0) { a[cur]=i; step(cur+1); // ухожу в глубь } } } else { // тут самое важное! Проверяю соответствуют ли цифры основному условию if((1000*a[0]+100*a[1]+10*a[2]+a[3]+1000*a[4]+100*a[5]+10*a[6]+a[1])==(10000*a[4]+1000*a[5]+100*a[2]+10*a[1]+a[7])) { printf("\r\nРезультат:\r\n"); printf("s->%d\r\n",a[0]); printf("e->%d\r\n", a[1]); printf("n->%d\r\n", a[2]); printf("d->%d\r\n", a[3]); printf("m->%d\r\n", a[4]); printf("o->%d\r\n", a[5]); printf("r->%d\r\n", a[6]); printf("y->%d\r\n", a[7]); } } } void main() { step(0); }
Помогите пожалуйста написать еще одну программу на С++...для меня она совсем неподъемная... надо решить следующую задачу: есть некая прямоугольная площадь...она разделена на 6 квадратов..5 из них заняты мебелью,а шестая свободна. надо переставить мебель так, чтобы шкаф и кресло поменялись местами,при этом никакие 2 предмета не могут стоять на 1 квадрате... расположение мебели следующее: _____________ стол|стул|шкаф| _____________ стул| |кресло| надо чтобы программа сама находила решение...т.е. искала как должна двигаться мебель...и чтобы движения выводились в какой-нибудь файл...и эту программу необходимо сделать обязательно используя классы..
хммм .... классы тут как-то боком! их придется впихивать совсем без их преимуществ давай набросаю суть а ты ее засунешь хоть в классы , хоть в мусорку! будем обозначать символами a-кресло(arm chair) c-стул(chair) t-стол(table) s-шкаф(shelves) Code: #defane MAX_STEPS 50 char a[3][3]; //третий ряд забит нулями char steps[MAX_STEPS][7]; char rez[3][3]; int abs(int numb) // просто извращаюсь... { if(numb<0) return numb*(-1); else return numb; } void step(int step,int pusto_x,int pusto_y) { // step -текущая глубина рекурси // pusto_x - координата пустого места // pusto_y - координата пустого места int i,j,k; if(steps<MAX_STEPS-1) { for(i=0;i<2;i++) for(j=0;j<3;j++) if(i!=pusto_y || j!=pusto_x) // проверяю чтоб счетчики // не совпадали с пустой клеткой if(i==pusto_y || j==pusto_x) // проверяю на условие движения if(abs(pusto_x-j)==1) // через клетку не прыгать { // могем менять местами a[pusto_y][pusto_x]=a[i][j]; a[i][j]=' '; // передвигаю чегото for(k=0,fl=0;k<MAX_STEPS && k<step && fl==0;k++) if(strcmp(a,rez)==0) // проверяю не встречалось ли fl=1; // данное расположение if(strcmp(a,rez)==0) // проверяю не получили ли мы то что { // нужно достичь // вываливай весь steps // хоть в файл хоть на печать fl=1; } if(fl==0) { strcpy((char *)&steps[step][0],a); // записываю ход step(step+1,j,i); // уход в глубь // стирать ход не нужно поскольку ПЕРЕЗАПИСЬ } a[i][j]=a[pusto_y][pusto_x]; // востанавливаю предыдущее a[pusto_y][pusto_x]=' '; // состояние } } else return ; // возврат если перебор по глубине } void main() { int i,j; // подготавливаем массивы for(i=0;i<MAX_STEPS;i++) strcpy((char *)&steps[i][0],""); a[0][0]='t'; // исходный массив a[0][1]='c'; a[0][2]='s'; a[1][0]='c'; a[1][1]=' '; a[1][2]='a'; a[2][0]=0; // забиваем нулями для того чтобы a[2][1]=0; // сформировалась идентифицирующая строка a[2][2]=0; rez[0][0]='t'; // массив который нужно получить rez[0][1]='c'; rez[0][2]='a'; rez[1][0]='c'; rez[1][1]=' '; rez[1][2]='s'; rez[2][0]=0; // забиваем нулями с целью как и rez[2][1]=0; // для массива a rez[2][2]=0; steps(0,1,1); } КОД НЕ ПРОВЕРЯЛ!!! БИЛ ПРЯМО В ОКНО СООБЩЕНИЙ! ну мне простительно у меня репутация маленькая да и решение таких задач тут дешево стоит!
помогите пожалуйста (паскаль) 1) сумма с точностью Даны действительные числа x и ε (x≠0, ε > 0). Вычислить с точностью ε и указать количество учтенных слагаемых 2) рекурсия Даны действительные числа x и ε (x≠0, ε > 0). Вычислить с точностью ε и указать количество учтенных слагаемых Вычисление выражения под знаком суммы выполнить через рекурсию.
Народ помогите решить проблему ! Вообщем приведенная ниже программа должна сортировать массив рандомных чисел ПИРАМИДАЛЬНЫМ методом.... Вообщем она и сортирует вот только чаще всего выбивает STACK OVERFLOV.... я там уже и функцию проверки на сортировку кинул штобы не вращалось слишком много и всеравно облом .... Вообщем код ниже кто сможет подправить укажите ошибку исправленным кодом !!! Code: {-$S} Program Piramida; Uses CRT; Const max = 100; Type myArray = array[0..max] of Integer; Var dimension, i : Integer; arr, sortArray : myArray; {***********************************\ \**************************************} Procedure Sift( Var arr : myArray; L, R : Integer ); Var i, j : Integer; item : Integer; Begin i := L; j := 2*L; item := arr[L]; If ( j < R ) And ( arr[j] < arr[j + 1] ) Then Begin j := j + 1; End; While ( j <= R ) And ( item < arr[j] ) do Begin arr[i] := arr[j]; i := j; j := 2*j; If ( j < R ) And ( arr[j] < arr[j + 1] ) Then Begin j := j + 1; End; End; arr[i] := item; End; {***********************************\ \**************************************} Function Anti_Overflow( mas : myArray; rozmir : Integer) : Boolean; Var i , j: Integer; max : Integer; Begin For j := 0 To rozmir Do Begin max := mas[j]; For i := 1 To rozmir+1 Do Begin If max > mas[i] Then Anti_Overflow := False End; End; End; {***********************************\ \**************************************} Procedure HeapSort( arr : myArray; size : Integer ); Var i, L, R : Integer; item : Integer; Begin L := ( size div 2 ); R := size - 1 ; While L > 0 do Begin L := L - 1; Sift( arr, L, R ); End; While R > 0 do Begin item := arr[0]; arr[0] := arr[R]; arr[R] := item; R := R - 1; Sift( arr, L, R ); End; If Anti_Overflow(arr,size) = False Then HeapSort (arr,size) Else Begin Write('Sorting array: '); For i := 0 To size-1 do Begin Write( Arr[i] ); Write(' '); End; End; End; {***********************************\ \**************************************} Begin ClrScr; Write('Rozmirnist Masivu : '); ReadLn( dimension ); Write('Enter ');Write( dimension );Write(' elements: '); Randomize; For i := 0 To dimension Do Begin arr[i] := Random(50); WriteLn(arr[i]); End; HeapSort( arr , dimension ); WriteLn; WriteLn('Press "Enter" to continue...'); ReadKey; End.
Спасибо большущее!!!...но все же...пожалуйста...можно и эту программу тоже поподробнее..нам давали только теорию практически...примеров совсем мало...на классы дали только пример класса комплексного числа...я сам понимаю, что в принципе там классы ни к чему...но надо чтобы прога была обязательно с ними... я с классами совсем пока не дружу...а задачу надо в понедельник сдать... Заранее спасибо!
извини .... но тут ПОМОГАЮТ а не занимаются ВМЕСТО! .... ЭТУ МАЛОСТЬ ЗАСУНУТЬ КОД В КЛАССЫ ТЫ ДОЛЖЕН СДЕЛАТЬ САМ!!!!! .... ведь весь смысл этой ветки не поддерживать ХАЛЯВУ, а давать возможность посмотреть алгоритмы обсудить их.... помочь основной идеей, чтоб человек ВЫРОС в своих и чужых глазах. ТВОИ ЗАДАЧКИ БЫЛИ ИНТЕРЕСНЫМИ ПОЭТОМУ Я И ПОМОГ ТЕБЕ.... а была бы лажа прошел мимо!
У тебя ошибка на ошибке. Вот смотри, зачем делать HeapSort процедурой? Ведь ей нужно передавать массив! Поэтому она должна быть функцией. И не зачем было делать Anti_Overflow. То есть: //переделываем на функцию Code: [COLOR=RoyalBlue]function[/COLOR] HeapSort( arr : myArray; size : Integer ):[COLOR=RoyalBlue]myArray[/COLOR]; Var i, L, R : Integer; item : Integer; Begin L := ( size div 2 ); R := size - 1 ; While L > 0 do Begin L := L - 1; Sift( arr, L, R ); End; While R > 0 do Begin item := arr[0]; arr[0] := arr[R]; arr[R] := item; R := R - 1; Sift( arr, L, R ); End; [COLOR=RoyalBlue] heapsort:=arr;[/COLOR] End; // и рендомное заполнение массива переделай: Code: ClrScr; Write('Vvedite rozmirnist'' massiva : '); ReadLn( dimension ); writeln; writeln('************************************************'); Write('Ishodnii massiv iz ');Write( dimension );Write(' elementov: '); Randomize; For i := 0 To dimension-1 Do Begin arr[i] := Random(50); Write(arr[i]);write(' '); End; writeln; writeln('************************************************'); SortArray:=HeapSort( arr , dimension ); write('Otsortirovanii massiv : '); for i := 0 to dimension-1 do begin write( sortArray[i] ); write(' '); end; writeln; writeln('************************************************'); writeln; WriteLn('Press "Enter" to continue...'); Readln; Readln; P.s. МаССив пишется с двумя с ... Надо увОжать русский язык