| imho.ws |
![]() |
|
|
|
# 1 |
|
Guest
Сообщения: n/a
|
Помощь по Turbo Pascal 7.0
Помагите пожалуйста, может это покажется не много наглостью но просто незнаю как сделать, потому прошу вашей помощи проблема такая немогу сделать программку по матрицам
ЗАДАНИЕ Задана матрица целых чисел размером N*M НАЙТИ минимальный СРЕДИ номеров строк ЭТОЙ матрицы, в которых находится вектор(строка), упорядоченный по возрастанию и составленный из элементов, которые все положительны В программе MADCAT( если правельно написал) делал матрицы, но в паскеле совсем подругому. Спасибо тем кто сможет помочь. |
|
|
# 2 |
|
Advanced Member
Регистрация: 21.04.2005
Адрес: град Москва
Сообщения: 431
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Непосредственно поиск:
Код:
for y:=0 to M-1 do
begin
flag := (a[0,y]>=0); {все хорошо то, что... }
if flag then {...хорошо начинается!}
for x:=1 to N-1 do
if a[x,y]<a[x-1,y] then
begin
flag:= false; {Опять мимо... (((}
break; {тут нам делать нечего...}
end;
if flag then break; {нашли все-таки? Тогда выходим из внешнего цикла досрочно}
end;
if flag then writeln ('Строка N=',y+1) else writeln ('Строка не найдена...');
Последний раз редактировалось Trotil; 13.12.2005 в 11:20. Причина: про положительность забыл.... |
|
|
|
|
# 4 | |
|
Advanced Member
Регистрация: 21.04.2005
Адрес: град Москва
Сообщения: 431
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
В любой задачке по матрицам показано, как ее объявлять и инициализировать. Удачи в поиске. Последний раз редактировалось Trotil; 13.12.2005 в 15:51. |
|
|
|
|
|
# 5 |
|
Guest
Сообщения: n/a
|
Люди помогите пожалуйста в написании программы ...Вроде не сложная , а не могу...Задание: пользователь с клав-ры вводит массив, посчитать сумму чётых чисел целой части числа... Я начало сделал а дальше ни как... _________________________________________________________________ program r7; uses CRT; var X:array[1..3] of real; Y:array[1..3] of string; a,a1,a2,a3,l,c,h:integer; begin clrscr; a1:=0; a2:=0; a3:=0; for a:=1 to 3 do begin writeln('enter array X[',a,']'); readln(X[a]); STR(X[a],Y[a]);end; for a:=1 to 3 do begin delete(Y[a],16,5);end; for a:=1 to 3 do begin writeln('Y[',a,']=',Y[a]); end; for a:=1 to 3 do begin delete(Y[a],16,5); end; readkey; end. _________________________________________________________________ |
|
|
# 6 | |
|
::VIP::
Звезда первого сезона Молчун-2004 Регистрация: 24.08.2002
Сообщения: 1 575
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
Если означает, что нужно у каждого элемента массива отбросить дробную часть и просуммировать четные результы, то будет так: Код:
s := 0; for i := 1 to n do if (trunc (a[i]) div 2) = 0 then inc (s, trunc (a[i])); Код:
s := 0;
for i := 1 to n do begin
p := trunc (a[i]);
while p <> 0 do begin
r := p mod 10;
if (r div 2) = 0 then inc (s, r);
p := p div 10;
end;
end;
__________________
Действовать надо тупо и это лучшее доказательство нашей чистоты и силы! |
|
|
|
|
|
# 7 |
|
Advanced Member
Регистрация: 21.04.2005
Адрес: град Москва
Сообщения: 431
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Код:
write(st);
val(st,x,code);
i := int(x).
count:=0;
if (code<>0) then
while (i<>0) do
begin
b:=i mod 10;
if (b mod 2 = 0) then count:=count+b;
i:=i div 10;
end;
Ghost, опередили... Только не " if (r div 2) = 0 then inc (s, r);" а " if (r mod 2) = 0 then inc (s, r);" Последний раз редактировалось Trotil; 15.12.2005 в 18:52. |
|
|
|
|
# 8 |
|
::VIP::
Звезда первого сезона Молчун-2004 Регистрация: 24.08.2002
Сообщения: 1 575
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Trotil
Сенькс за поправку - как всегда глупо ошибся. В первом моем коде таже ботва: не div 2, а mod 2. Все-таки мне интересно, что конкретно имелось в виду...
__________________
Действовать надо тупо и это лучшее доказательство нашей чистоты и силы! |
|
|
|
|
# 10 |
|
::VIP::
Звезда первого сезона Молчун-2004 Регистрация: 24.08.2002
Сообщения: 1 575
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
R.E.Mus
Судя по коду Trotil'а - мы с ним поняли задачу одинаково: каждый элемент массива преобразовать к целому числу и найти сумму всех четных цифр в записи получившихся целых чисел. Преобразовывать в строки ничего не надо - можно просто real преобразовывать в integer (trunc() или int()), находить остаток от деления на 10 (mod 10), делить нацело на 10 (div 10) и так до тех пор, пока число не превратиться в 0 - таким образом можно перебрать все цифры, составляющие целое число. Дальше нужно только проверить их четность, т.е. что остаток от деления на 2 равен 0 (... mod 2 = 0) и складывать.
__________________
Действовать надо тупо и это лучшее доказательство нашей чистоты и силы! |
|
|
|
|
# 12 | |
|
::VIP::
Звезда первого сезона Молчун-2004 Регистрация: 24.08.2002
Сообщения: 1 575
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
__________________
Действовать надо тупо и это лучшее доказательство нашей чистоты и силы! Последний раз редактировалось Ghost; 15.12.2005 в 19:34. Причина: склероZzz... |
|
|
|
|
|
# 13 |
|
Guest
Сообщения: n/a
|
Это грубое округление(если его можно назвать так)...Из строкового массива Y удоляем 16 символов начиная с 5...т.е если вводишь 555 паскаль пишет 5.55000000000000E2(примерно), благодоря чудесной ф-ции Он пишет 5.550000000002(по русски 5.55*10^2)
Извеняюсь за наглость но не могли-бы вы написать полный код...от program до end. Заранее благодорю...
|
|
|
# 14 |
|
::VIP::
Звезда первого сезона Молчун-2004 Регистрация: 24.08.2002
Сообщения: 1 575
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
R.E.Mus
Это чересчур грубое округление. Можно было сделать так: Код:
str (x[i]:10:6, y[i]); З.Ы. И все-таки я угадал ![]() З.Ы.Ы. Код:
uses
crt;
const
n = 10;
var
x: array [1..n] of real;
i, p, k, s: integer;
begin
clrscr;
writeln ('введите массив:');
for i := 1 to n do begin
write ('x[', i:2, '] = ');
readln (x[i]);
end;
s := 0;
for i := 1 to n do begin
p := trunc (x[i]);
while p <> 0 do begin
k := p mod 10;
if (k mod 2) = 0 then inc (s, k);
p := p div 10;
end;
end;
writeln ('сумма четных цифр целых частей = ', s);
writeln ('нажмите любую кнопку для выхода...');
readkey;
end.
__________________
Действовать надо тупо и это лучшее доказательство нашей чистоты и силы! Последний раз редактировалось Ghost; 15.12.2005 в 19:46. Причина: склероZzz... |
|
|
|
|
# 16 | |
|
Guest
Сообщения: n/a
|
Цитата:
|
|
|
|
# 17 |
|
::VIP::
Звезда первого сезона Молчун-2004 Регистрация: 24.08.2002
Сообщения: 1 575
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
R.E.Mus
Не могет такого быть. Только что все проверил - работает. Может мы по разному воспринимаем задачу. Вот тест (для n = 3): 1. Ввожу числа 123.4, 234.5, 345.6 2. Целые части: 123, 234, 345 3. Четные цифры: в первом - 2, во втором - 2, 4, в третьем - 4 4. Сумма = 12
__________________
Действовать надо тупо и это лучшее доказательство нашей чистоты и силы! |
|
|