Помогите решить задачку.Условие такое:
Дан одномерный масиив целых чисел размерностью N.В этот массив записываются положительные и отрицательные числа.Сформировать друой одномерный массив в который переписываются только отрицательные числа.
[Pascal] Массивы
- Колядин Максим
- Сообщения: 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
выдаст 1 0 0 6 9.
можно завести отдельный счетчик для массива B
if a<0 then
begin
b[k]:=a;
inc(k);
end;
причем k в начале проги равна 1
А что, извращаться так извращаться!
s:='';
for i:=1 to N do
if a<0 then s:=s+inttostr(a)+',';
delete(s,length(s),1);
Строка - это ведь тоже одномерный массив!
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') ?
Вроде бы числа должен понимать сразу, а тут по-символьносравнивает...
кстати, хотел спросить, что оптимальней
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>
---------------------------------------------------------------------------
<a href="http://nick-name.ru/sertificates/711965/"><img src="http://nick-name.ru/img.php?nick=Garmay ... =2&text=t5" alt="Никнейм Garmayev зарегистрирован!" /></a>
Второе, думаю, оптимальней. Потому что найти элемент массива и сравнить два чара намного быстрее, чем вызывать функцию.
А если подумать, то можно сказать, что на этом участке кода, как его ни делай, все равно особо не ускоришься
А если подумать, то можно сказать, что на этом участке кода, как его ни делай, все равно особо не ускоришься
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.