[Pascal] Массивы

Ответить
maxg5
Сообщения: 10
Зарегистрирован: 06 фев 2007, 21:54

Помогите решить задачку.Условие такое:
Дан одномерный масиив целых чисел размерностью N.В этот массив записываются положительные и отрицательные числа.Сформировать друой одномерный массив в который переписываются только отрицательные числа.
Аватара пользователя
Колядин Максим
Сообщения: 297
Зарегистрирован: 16 ноя 2006, 19:09
Откуда: Seattle, WA
Контактная информация:

Модная задача...

Код: Выделить всё

uses crt;
const m=100;
type mas=array [1..m] of integer;
var 
a: mas; 
b: mas; 
i: integer;
n: integer;
e: integer;
begin
clrscr; 
write('Vvedite N: '); readln(n);
if n>m then exit;
for i:= 1 to n do begin
write('Vvedite element №',i,': '); 
readln(a[i]);
end;
for i:= 1 to n do if a[i]<0 then b[i]:=a[i];
writeln(' Содержание массива B: ');
for i:= 1 to n do writeln(b[i]);
readkey;
end.
Программист - это человек, который решает способом, который вы не понимаете, проблемы, о которых вы даже не подозревали...
Аватара пользователя
Oleg_Rus
Сообщения: 335
Зарегистрирован: 16 окт 2006, 09:56
Откуда: г.Улан-Удэ, респ.Бурятия, Российская Федерация
Контактная информация:

Колядин Максим, как я понял такая программа из массива 1 -3 -3 6 9
выдаст 1 0 0 6 9.

можно завести отдельный счетчик для массива B
if a<0 then
begin
b[k]:=a;
inc(k);
end;

причем k в начале проги равна 1
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

А что, извращаться так извращаться!
s:='';
for i:=1 to N do
if a<0 then s:=s+inttostr(a)+',';
delete(s,length(s),1);
Строка - это ведь тоже одномерный массив!
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Аватара пользователя
Oleg_Rus
Сообщения: 335
Зарегистрирован: 16 окт 2006, 09:56
Откуда: г.Улан-Удэ, респ.Бурятия, Российская Федерация
Контактная информация:

Хыиуду, а можно устроить просеивание букв от чисел, ведь могет быть, что попадутся буквы.

кстати, хотел спросить, что оптимальней
If (Ord(a)>Ord(97) and (Ord(a)<Ord(122))
или
If (a>'a') and(a<'z') ?

Вроде бы числа должен понимать сразу, а тут по-символьносравнивает...
e-mail: garmayev@yandex.ru
---------------------------------------------------------------------------
<a href="http://nick-name.ru/sertificates/711965/"><img src="http://nick-name.ru/img.php?nick=Garmay ... =2&text=t5" alt="Никнейм Garmayev зарегистрирован!" /></a>
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

Второе, думаю, оптимальней. Потому что найти элемент массива и сравнить два чара намного быстрее, чем вызывать функцию.
А если подумать, то можно сказать, что на этом участке кода, как его ни делай, все равно особо не ускоришься
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Ответить