DeFraG
Новичок
|
Цитата: MooK написал 23 мая 2008 15:47 Пожалуйста помогите решить задачу. Условие: Дано натуральное число n, 1 < n < 30000. Напишите программу, которая изменит порядок цифр числа так, чтобы получить минимально возможное число. Примечание: В записи числа n цифра 0 отсутствует. Ввод: число n вводится с клавиатуры. Вывод: на экран в строку через пробел выводится исходное и преобразованное число. Пожалуйста помогите, а то мне придётся летом перездавать информатику, а мне этого очень не хочется. Помогите плиз...
Разбиваешь число на цифры, сортируешь их в порядке возрастания и получаешь наименьшее возможное число которое можно составить из данных цифр.
Code Sample:
uses crt; var i,j : integer; x : word; s : string; c : char; begin clrscr; readln(x); if (x < 1) or (x > 30000) then exit; str(x,s); for i := 1 to length(s) do begin for j := 1 to length(s) do if s[j] > s[ i ] then begin c := s[j]; s[j] := s[ i ]; s[ i ] := c; end; end; writeln(x,' ',s); repeat until keypressed; end.
(Сообщение отредактировал KMA 25 мая 2008 18:11)
|
Всего сообщений: 5 | Присоединился: май 2008 | Отправлено: 25 мая 2008 11:26 | IP
|
|
Guest
Новичок
|
помогите решить задачку Дана квадратная матрица {V[i;j]} целочисленных элементов. Найти произведение элементов побочной диагонали и количество нулевых элементов в предпоследнем столбце матрицы. Если логарифм первой из этих величин может быть вычислен, то отпечатать значение произведения данного логарифма и второй из найденных величин. В противном случае отпечатать сумму найденных двух величин. вот что у меня вышло и не могу понять, в чем ошибочка. Подскажите пожалуйста Uses Crt; Var V : Array [1..20, 1..20] of Integer; i, j, N : Integer; R,S,X,Q : Integer; Begin ClrScr; Write('kol strok i stolb - '); ReadLn(N); For i := 1 to N do For j := 1 to N do begin Write('V[' , i , ', ' , j , '] = '); ReadLn(V[i, j]) end; ClrScr; WriteLn('ISXOdnay matriza :'); WriteLn; For i := 1 to N do begin For j := 1 to N do Write(V[i, j] : 5); WriteLn end; Begin R:=1; For i:=1 to n do R:=R*V[i,n+1-i]; WriteLn('R=',R); readln END; begin for i:=1 to n do if V[i,j-1]=0 then S:=S+1; writeln('s=',S); readln end; if R>=1 then begin X:=ln(R)*S; writeln ('X=',X); end; else begin Q:=S+R; writeln('summa=',Q); end; readln end.
|
Всего сообщений: Нет | Присоединился: Never | Отправлено: 25 мая 2008 17:21 | IP
|
|
KMA
Долгожитель
|
Здравствуйте. В этом участке кода, я пытаюсь записать пиксель на экран. Видеорежим - 640х480 16 цветов. Из TeachHelp узнал, что начало буфера экрана - a000h Опытным путём выяснил, что вместо цвета зажигаются 8 последовательных пикселов по битовой маске, белым цветом. Как зажечь пиксел произвольным цветом ?
Ну во-первых, ассемблер в тему Паскаля немного не верно. А так могу сказать, что есть стандартный модуль graph (который позволяет и режим ставить, и его закрывать и по активным страницам бегать и так далее) а в нем процедура putPixel (x, y, color). Которая и зажигает пиксель на экране нужного цвета
|
Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 25 мая 2008 18:00 | IP
|
|
Guest
Новичок
|
В символьной матрице В размером MxN поменять местами столбцы с за-данными номерами. Need Help. Решить задачу надо на паскаль при этом не используя процедуры.
|
Всего сообщений: Нет | Присоединился: Never | Отправлено: 25 мая 2008 18:48 | IP
|
|
DeFraG
Новичок
|
Цитата: KMA написал 25 мая 2008 18:00 Ну во-первых, ассемблер в тему Паскаля немного не верно. А так могу сказать, что есть стандартный модуль graph (который позволяет и режим ставить, и его закрывать и по активным страницам бегать и так далее) а в нем процедура putPixel (x, y, color). Которая и зажигает пиксель на экране нужного цвета
Это вставка на ассемблере в код на паскале... Эту тему я сразу увидел, а тему про ассемблер не заметил. Процедура putpixel работает очень медленно поэтому я попытался использовать ассемблер. Немного изучив технику отрисовки пикселей в режимах с 16 цветами, я узнал, что достичь в таких режимах высокой скорости отрисовки невозможно в принципе из-за постоянной потребности перепрограммировать регистры, доступ к которым осуществляется намного медленнее, чем к видеопамяти. Сейчас переписываю программу под VESA/VBE.
|
Всего сообщений: 5 | Присоединился: май 2008 | Отправлено: 25 мая 2008 19:25 | IP
|
|
KMA
Долгожитель
|
По поводу этого могу сказать только одно... Изобретая вновь велосипед не факт, что он у тебя быстрее поедет и лучше будет управляем... Наверное, люди постарались оптимизировать под Паскаль функции прорисовки. Юзай уж тогда OpenGL или DirectX... Паскаль был и остается языком для написание учебных прог... (про FreePascal я молчу, это реально хороший проект) Если хочешь, можешь писать прогу под Asm сразу же, тогда это реально будет быстрее... Если надо все же под высокий язык то C дает преимущество заметнее чем в обычном Паскале. Поэтому подумай еще над этими вещами.
|
Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 25 мая 2008 22:36 | IP
|
|
barcik
Новичок
|
Дан вектор. Найти произведение элементов больше числа К. Помогите решить плиз
|
Всего сообщений: 1 | Присоединился: май 2008 | Отправлено: 26 мая 2008 11:41 | IP
|
|
Spaun666
Новичок
|
Ребят, подправьт задачку пожалуйста. Я че то с выводом данных намудил. Задание: дан массив, ввожу с клавы число, если оно есть в массиве-показать его номер, если нет-ответом должно быть число ноль. PROGRAM MASSIV; VAR A:ARRAY [1..5000] OF INTEGER; K,N,U,I,Z:INTEGER; BEGIN WRITELN ('VVEDITE RAZMER MASSIVA'); READLN (N); FOR I:=1 TO N DO BEGIN WRITELN ('VVEDITE ', I, ' ELEMENT'); READLN (A); END; WRITELN ('VVEDITE CHISLO'); READLN (U); FOR Z:=1 TO N DO BEGIN IF U=A[Z] THEN WRITELN ('CHISLO VSTRETILOS NA ' ,Z , ' POZICII'); END; IF (U<>A[Z]) OR (Z=N) THEN WRITELN ('TAKIH ELEMENTOV NET.OTVET 0'); READLN; END.
|
Всего сообщений: 3 | Присоединился: май 2008 | Отправлено: 26 мая 2008 18:18 | IP
|
|
Den 4 ik
Новичок
|
доброго время суток!люди,подскажите кто знает.есть файл,объявлен как нетипизированный.как вывести все нечетные байты из файла на экран?подскажите что использовать,пожалуйста!
|
Всего сообщений: 6 | Присоединился: апрель 2008 | Отправлено: 26 мая 2008 23:22 | IP
|
|
M a r i n k a
Новичок
|
Всем здравствуйте! Естьу меня одна задачка по Паскалю, и что-то я даже не знаю, как к ней подступиться. Задачка следующая: В матрице В [5*8] поместить максимальный элемент на место элемента В [1*1] путем перестановки строк и столбцов. Вывести на экран исходный и полученный массивы. Что-то я не очень могу понять, как это -- путём перестановки строк и столбцов? И какой вид это будет иметь в программе? И, если можно, выложите сюда примеры решения таких же задачек на Паскале, а то я не представляю, как писать эту программку... Спасибо заранее огромное...
|
Всего сообщений: 4 | Присоединился: май 2008 | Отправлено: 28 мая 2008 12:12 | IP
|
|
|