Помогите решить одну задачку:
Дана целочисленная прямоугольная матрица. Определить номер строки, в которой находится самая длинная серия одинаковых элементов (оформить в виде процедуры).
Программирование на Delphi
Сообщений 1 страница 13 из 13
Поделиться12008-11-18 21:51:35
Поделиться22008-11-18 21:54:49
Прошу любить и жаловать
program Project2; {$APPTYPE CONSOLE} uses SysUtils; const n = 5; var ms: array [1..n, 1..n] of integer; i,j,count,max,i_max: integer; begin randomize; max := 0; i_max := 0; for i:=1 to n do begin count := 0; for j:=1 to n do begin ms[i,j] := random(2); if j>1 then if ms[i,j] = ms[i,j-1] then inc(count) else count := 0; write(ms[i,j]:3); end; if count > max then begin max := count; i_max := i; end; writeln; end; writeln; writeln(i_max); readln; end.
внёс корректив
Поделиться32008-11-18 21:56:37
Думаю до процедуры довести сможешь
Поделиться42008-11-18 22:19:52
Народ вот еще одно маленькое дельце!
Напишите программы для решения ниже представленной задачи. Входные и выходные данные оформите в виде текстовых файлов (F_INPUT и F_OUT)
В одномерном массиве, состоящем из n целочисленных элементов, вычислить:
1) произведение элементов массива с четными номерами;
2) сумму элементов массива, расположенных между первым и последним нулевыми элементами.
3) преобразовать массив таким образом, чтобы сначала располагались вес положительные элементы, а потом — все отрицательные (элементы, равные нулю, считать положительными).
Отредактировано Sergey (2008-11-18 22:20:21)
Поделиться52008-11-30 11:30:39
Создаём в одной папке с программой файл input.txt и заполняем его целыми числами, разделяя их пробелами.
program Project2; {$APPTYPE CONSOLE} uses SysUtils; var f, f2: text; i,rez, n, k, sum: integer; ms: array of integer; begin assign(f, 'input.txt'); reset(f); assign(f2, 'output.txt'); rewrite(f2); rez := 1; i:=0; n := -1; k := -2; while not EOLn(f) do begin inc(i); SetLength(ms, i); read(f, ms[i-1]); if not Odd(i-1) then rez := rez * ms[i-1]; if (ms[i-1] = 0) and (n = -1) then n := i; if (ms[i-1] = 0) and (n > -1) then k := i-1; end; writeln(f2, '1) ', rez); sum := 0; for i:=n to k do sum := sum + ms[i]; writeln(f2, '2) ', sum); for rez:=1 to sqr(length(ms)) do for i:=0 to length(ms)-2 do if (ms[i+1] >= 0) and (ms[i] < 0) then begin sum := ms[i]; ms[i] := ms[i+1]; ms[i+1] := sum; end; write(f2, '3) '); for i:=0 to Length(ms)-1 do write(f2, ms[i], ' '); Close(f); Close(f2); end.
Поделиться62008-12-05 19:52:32
У нас есть N человек которые сидят по кругу. ЕСть константа счета C... один человек начинает считать с первого человека сидящего за столом. И Каждый C выбывает.Нужно определить номера тех 2-ух человек которые останутся последними.
РЕшите плз
Поделиться72008-12-05 20:16:06
Каждый C выбывает
Уточнение: после того, как С-й человек выбыл, счёт начинается с первого или с (С+1) ?
Поделиться92008-12-05 21:05:36
Не придумал ничего лучшего, чем брутфорс (полный перебор).
const n = 8; c = 3; var ms: array [1..n] of byte; i,count,j,c2: integer; begin count := n; for i:=1 to n do ms[i] := 1; i := 0; Repeat c2 := c; Repeat inc(i); if i>n then i:=1; if ms[i] = 1 then dec(c2); Until c2=0; ms[i] := 0; dec(count); for j:=1 to n do if ms[j] = 1 then write(j:4); writeln; Until count = 2; writeln('Complete!'); readln; end.
Поделиться102008-12-05 21:07:52
Спасибо большое))) ща токо на Паскаль у себя подправлю и супер))))
Поделиться112008-12-05 21:10:28
Molox
а чем тебе этот код "непаскальный"?.. или тебя смyщает отсутствие чего-то, типа
Program Cool_Program; Uses CRT;
??
Поделиться122008-12-05 21:33:12
НЕт не это а то что
const n = 8; c = 3;
И то что ТАйп пишется перед ВАР'ом.
а все остальное норм СПС еще раз....
Млин когда я решал я не додумался до
if ms[i] = 1
then dec(c2);
Я дебил
Поделиться132008-12-05 21:41:32
НЕт не это а то что
SHERRY написал(а):const n = 8; c = 3;
Константы. Переменные, значение которых задано и неизменяемо. Тип таких переменных определяется автоматически. Хотя можно задать и принудительно. Например:
Const n: real = 4;