PDA

Просмотр полной версии : Pascal массив



albanec
01.05.2008, 13:37
Дан двумерный массив nxm, заполненный с клавиатуры. Затем вводим число К и из всех чисел двумерного массива больших К сформировать одномерный массив.
Например:
2 3 5 7 2
1 6 2 3 2 - двумерный массив,
2 5 9 2 1

вводим число к=4 и получаем одномерный массив - 5 7 6 5 9

Medved
01.05.2008, 13:53
Program lalala;
Const MaxM=100; MaxN=100;
Type Arr=Array[1..MaxM*MaxN] Of Integer;
Var Q1,Q2,I,K:Integer;A,B:Arr;
Begin
Writeln('Enter height and width:');
Readln(Q1,Q2);
Writeln('Enter array:');
For i:=1 to Q1*Q2 Do
Read(A[i]);
Writeln('Enter K:');
Read(K);
C:=1;
For I:=1 to Q1*Q2 Do
If A[i]>K Then
Begin
B[C]:=A[i];
Inc(C);
End;
For I:=1 To (C-1) Do
write(B[I],' ');
Readln;
End.

Vovchik
01.05.2008, 16:29
Medved, ето вы на Делфи написали ?

Medved
01.05.2008, 16:49
Нет, это я на паскале написал просто выделил как делфи чтобы цвета нормальные были. Так понятней?

un4-funeral
01.05.2008, 20:31
C нигде не объявлено ((=

Medved
01.05.2008, 21:06
Я без компилятора писал=)

un4-funeral
02.05.2008, 00:28
похвально (((:

Хыиуду
03.05.2008, 00:47
C нигде не объявлено ((=
*голосом старого маразматика* Эх, поживете ждесь ш наше - так и наушитесь беж компилятора такое жамещать и ишправлячь!
А вообще-то - я в подобных задачах всегда пользуюсь неписанным "сводом программистской попсы". Чаще всего в моих кодах i,j,k - целые, f - текстовый файл, s - строка, A (B) или mas - массивы (если оные упоминаются в задаче), M и N - размерности массива, count - счетчик. Так что эту задачу, если бы ее до меня не разложил по полочкам Medved, я бы написал не более чем так:


for i:=1 to M do
for j:=1 to N do
if A[i,j]>k then
begin
B[count]:=A[i,j];
inc(count);
end;

Кстати, решение Medved абсолютно правильное с точки зрения компилятора и распределения памяти, но препод может придраться, что у него описан одномерный массив вместо двухмерного, хотя для компа это совршенно равнозначно.