Ребят, помогите, пожалуйста ,1 курс, лаба на C: Назовем симметричный байт, в котором нулевой бит имеет такое же значение, что и седьмой, а первый - такое же, что и шестой. Изменить порядок следования симметричных байтов в числе на обратный.
Code: #if _MSC_VER >= 1400 # # if !defined(_CRT_NONSTDC_NO_WARNINGS) # define _CRT_NONSTDC_NO_WARNINGS # endif # # if !defined(_CRT_SECURE_NO_WARNINGS) # define _CRT_SECURE_NO_WARNINGS # endif # #endif #include <stdio.h> #include <stdlib.h> int main() { char *bin = "the bin string"; char *hex = "the hex string"; char buf[9]; while (*bin) { itoa(*bin++ & 0xff, buf, 2); printf(buf); } putchar('\n'); while (*hex) { itoa(*hex++ & 0xff, buf, 16); printf(buf); } putchar('\n'); } Code: 111010011010001100101100000110001011010011101110100000111001111101001110010110100111011101100111 7468652068657820737472696e67
Но greki_hoy без разницы, хотя автор вопроса просит именно Си++. А еще надо было обязательно выбрать itoa, которой, насколько я помню, даже в gcc нет. А в бинарном виде у него все байты аски-кодов букв, старшие биты которых оказались равными нулю, порезаны, поэтому перевод в двоичный вид тупо неправильный. Вот на C++ с правильными преобразованиями в бинарный вид: PHP: #include <iostream> #include <bitset> #include <iomanip> int main() { std::string binsym = "the bin string"; std::string hexsym = "the hex string"; std::cout << "Bin: "; { std::bitset<8> bits; for(std::string::const_iterator it = binsym.begin(); it != binsym.end(); it++) { bits = *it; std::cout << bits.to_string(); } } std::cout << std::endl << "Hex: "; for(std::string::const_iterator it = hexsym.begin(); it != hexsym.end(); it++) std::cout << std::hex << std::setw(2) << std::setfill('0') << static_cast<unsigned int>(*it); std::cout << std::endl; return 0; }
Люди, помогите пожалуйста решить задачу. Есть многомерный массив, размерностью 20 на 20, заполняется только 5 на 5, рандомно. Вот, проверяем его посимвольно, и, в случае если находится в ряде-строке 0 - то добавляем выше этой строки-ряда еще одну строку, заполненную нулями. Я сделал заполнение, вывод, поиск нуля, но вот строку добавить с нулями, ну никак не получается Получается, что меняются 2 крайних правых столбца. Code: #include <iostream> #include <cstdlib> using namespace std; int main() { int nums[20][20]; int a, b, t,t2, leftIndex,rightIndex; int size; size = 5; for (t=0; t<size; t++) { for (t2=0; t2<size; t2++) nums[t][t2]=rand()%41-20; } cout << "Исходный массив: \n"; for (t=0; t<size; t++) { for (t2=0; t2<size; t2++) cout << nums[t][t2] << ' '; cout << '\n'; } { for (t=0; t<size; t++) { for (t2=0; t2<size; t2++) if (nums [t][t2] ==0) // ищем 0 { leftIndex = t; rightIndex = t2; for (t=leftIndex; t<5; t++) // меняем на нули { for (int t2=rightIndex; t2<5; t2++) nums[t][t2]=0; } } for (t=0; t<size; t++) // выводим массив { for (t2=0; t2<size; t2++) cout << nums[t][t2] << ' '; cout << '\n'; } } return 0; } } Заранее спасибо!
Помогите с программой на лиспе (LISP (MULISP87)) найти произведение чисел из строки с буквами и числами. вот текст программы для нахождения суммы (один символ цифры воспринимается как одно число, тоесть рядом стоящие 4 и 5 это не 45(сорок пять),а 4 и 5). Подскажите как сделать для нахождения произведения!Пробовал менять плюсы на умножение,не помогло, в результате пишет ноль. Помню както надо результату единицу присвоить, тогда,возможно, нуля не будет. Кто знает решение проблемы отпишитеть!
Добрый вечер всем. Прошу помощи у знающих людей. По предмету вычислительная математика дали задание, которое никак не получается. Конец сессии нужно срочно сдать. суть вот в чем: Нужно провести интерполяцию функции F=x*x+4*x+3, используя интерполяционную формулу Ньютона(метод разделенных разностей) на интервале [-10..10] взяв количество узлов интерполяции равных 3. Построить графики исходной функции и интерполирующей функции, а так же график погрешности интерполяции. Сделать нужно, используя вот эти формулы: В моем случае уравнение получается вида: Pn(x)=f(x[0])+f(x,x[i+1])*(x-x[0])+f(x,x[i+1],x[i+2])*(x-x[0])*(x-x[1]). Написал функцию, но работать она не хочет: Code: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, TeEngine, Series, ExtCtrls, TeeProcs, Chart, Math; type TForm1 = class(TForm) Chart1: TChart; Chart2: TChart; Series1: TLineSeries; Series2: TLineSeries; Series3: TLineSeries; procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; const xmin=-10; xmax=10; n=3; var Form1: TForm1; i,j: integer; x1,x2,x3,h: real; x,fx: array [1..3] of real; implementation {$R *.dfm} function yf(x:real):real; begin yf:=x*x+4*x+3; end; Function Newton(n: integer; d:real; x,y :array of real):real; var l:real; j,i,k:integer; p,p2: real; y1,y2: array of real; begin L:=fx[1]; P:=1; p2:=1; for j:=1 to n do begin P:=P*(D-X[j-1]); for i:=0 to (n-j) do // <- ПЕРВАЯ РАЗНОСТЬ begin Y[i]:=(y[i+1]-y[i])/(x[i+j]-x[i]); end; p2:=p2*(d-x[j-1])*(d-x[j]); for k := 1 to (n-j) do // <- ВТОРАЯ РАЗНОСТЬ, ЗДЕСЬ ВСЯ "СОЛЬ" begin y[k]:=(((y[k+2]-y[k+1])/(x[k+j]-x[k]))-y1[k])/(x[k+2]-x[k]); end; L:=L+P*y[i]+p2*y[k]; end; Newton:=-l; end; procedure TForm1.FormCreate(Sender: TObject); begin x1:=xmin; while x1<=xmax do begin Series1.AddXY(x1,yf(x1)); x1:=x1+1; end; x2:=-1; for i:=1 to n do begin x[i]:=x2; fx[i]:=yf(x[i]); x2:=x2+1; end; x3:=xmin; while x3<=xmax do begin for i:=1 to 10 do begin Series2.AddXY(x3,Newton(n,x3,x,fx)); Series3.AddXY(x3, abs (yf(x3)-Newton(n,x3,x,fx)) ); x3:=x3+0.01; end; end; end; end. Помогите пожалуйста с функцией, дальше думаю разберусь.
Программа с использованием компонентов Standart и Adition в Delphi. Организуйте ввод размерности и элементов массива с клавиатуры или заполнение случайным образом по выбору пользователя. Для представления массивов на экране используйте компоненты StringGrid. Обеспечьте контроль вводимых данных, удобный пользовательский интерфейс, подсказки, возможность прочесть вариант задания (через Memo, ShowMessage или на новой форме). Дан числовой массив А, состоящий из n натуральных чисел. Определите количество элементов массива, которые больше заданного числа.
вообщем помогите со школьной задачкой. дана матрица, забита 1 и 0(ну или тру\фолс). вот так. нужно проверить можно ли "пройти по белым полям от входа к выходу". вроде всё понятно проверять все соседние клетки, и если они белые вызывать рекурсию. Но способ работает только для лабирнтав виде дерева шириной в одну клетку, причём не циклического. Как на картинке. А вот если так то зацикливает и не работает помогите решить проблемку.
указывай условие, что если соседей больше одного, бери всегда тот, который правей/левей, тогда будет пробегать покругу.
AGIMgal закрашиваете ту на которой стоите, если получилось (клетка все еще белая) - вызываете рекурсивно функцию (но лучше рекурсию заменить на очередь обхода) для всех соседних белых, если не получилось - выходите. Если стоите на финише - устанавливаете флаг, что закончили и дошли.
Я наверно опоздал Вообщем моя реализация на C++: http://pastebin.com/ZhrtCUEQ Входные данные: в input.txt в первой строке задаются два числа n и m, далее карта размером n на m. В ней: 1 - есть препятствие 0 - пустая клетка # - обозначает вход @ - обозначает выход. Пример: Code: 5 5 1@111 00100 00110 11000 #0011 Результат: Code: NO
так мне нужно то наоборот daniel_1024, мне это украинская грамота, вроде похоже , но толком понять нечего немогу. сначало тоже об этом подумал, потом мне отчегото показалость что тогда невыйдет откат(если в тупик зайду). Щас обдумал получше наверно должно выйти,СПС. зы. когда увидел впервые эту задачу тоже подумал что надо циклом на каждую клетку соседние смотреть...но рекурсия проще.
Вот самый стандартный алгоритм Вот самый стандартный алгоритм: 1) Сначала от входа до всех возможных стен заполняешь всё рекурсивно возрастающей последовательностью. Это означает, что каждый квадрат, имеющий число надо окружить квадратами с числом на единицу большим. После этого у тебя должно получиться заполнение как на приаттаченном рисунке. 2) Далее если надо найти путь, то идем с конца, подыскивая квадрат, с числом меньшим текущего на 1. Если просто надо проверить, есть ли путь до выхода, то достаточно проверить, что квадрат с выходом после прохождения алгоритма 1) имеет номер.
помогите рещить задачу по динамическим структурам данных. разработать програму каторая создает список L, елементами которого есть целие числа. Для заданих чисел a,b(a<b) печатает в порядке размищения все числа списка L менше от a, потом все числа з диапазона [a,b], и наконец все числа больше b
Вот тебе список, который я недавно писал. Работает для чисел, строк и чего угодно. В кодах даже есть примеры, как его использовать. http://dl.dropbox.com/u/12993060/mylist.rar
Кто хочет помочь и не много заработать? В общем решить надо 3 задачки на ASM. 1. 2. 3. Заранее спасибо!
1. Code: ; ; ONE ; format PE GUI 4.0 entry start include 'C:\fasmw\include\win32a.inc' section '.data' readable writeable result dd ? section '.code' readable writeable start: mov eax, 2 ; first number mov ebx, 7 ; second number cmp eax, ebx jg sub_one jl sub_two invoke ExitProcess, 0 sub_one: sub eax, ebx invoke itoa, eax, result, 10, 10d jmp exit sub_two: xchg eax, ebx jmp sub_one exit: invoke MessageBox, 0, result, result, MB_OK invoke ExitProcess, 0 section '.idata' import data readable writeable library kernel32, 'kernel32.dll', user32, 'user32.dll', ntdll, 'ntdll.dll' import user32, MessageBox, 'MessageBoxA' import kernel32, ExitProcess, 'ExitProcess' import ntdll, itoa, '_itoa' остальные мб потом, когда не влом будет.