Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Pascal] Создание массива из элементов других, Одномерные массивы 
:(
    Опции темы
Valafar
Дата 12.10.2008, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 12.10.2008

Репутация: нет
Всего: нет



Даны два массива X(N) и Y(M). Сформировать массив Z(N+M) из положительных элементов массивов X и Y. Если положительных элементов меньше N+M, то оставшимся элементам массива Z присвоить значение +1.
PM MAIL   Вверх
mr.Anderson
Дата 12.10.2008, 16:23 (ссылка)    | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 16
Всего: 128



Вот вариант решения.
Код

program RandomArrays;

function retRandom(): Integer; //вернет число от -50 до +50
const
 val = 100;
var
 condition: Integer;
 res: Integer;
begin
 res := random(val)+1; //1..100
 res := res div 2; //1..50

 condition := random(2); //0..1
 if (condition=1) then
  res := -res;

 Result := res;
end;

const
 n = 5;
 m = 10;

var
 x: Array [1..n] of Integer;
 y: Array [1..m] of Integer;
 z: Array [1..(n+m)] of Integer;
 i: Integer;
 c: Integer;

begin
 randomize();

 write('X : ');
 for i:=1 to n do
 begin
  x[i] := retRandom();
  write(x[i], ' ');
 end;

 writeln;
 write('Y : ');
 for i:=1 to m do
 begin
  y[i] := retRandom();
  write(y[i], ' ');
 end;

 c := 1;

 for i:=1 to n do
  if (x[i] > 0) then
  begin
   z[c] := x[i];

   inc(c);
  end;

 for i:=1 to m do
  if (y[i] > 0) then
  begin
   z[c] := y[i];

   inc(c);
  end;

 if (c<(n+m)) then
  for i:=c to (n+m) do
   z[i] := 1;

 writeln;
 write('Z : ');
 for i:=1 to (n+m) do
  write(z[i], ' ');

 readln;
end.


Добавлено через 2 минуты и 42 секунды
ЗЫ не пугайтесь, что оно такое здоровое, тут львиная доля кода - это вариация заполнения массивов. Само решение сидит в строках 49-69.

Это сообщение отредактировал(а) mr.Anderson - 12.10.2008, 16:24


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
THandle
Дата 12.10.2008, 16:31 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 30
Всего: 372



Код

function retRandom(): Integer; //вернет число от -50 до +50
const
 val = 100;
var
 condition: Integer;
 res: Integer;
begin
 res := random(val)+1; //1..100
 res := res div 2; //1..50
 condition := random(2); //0..1
 if (condition=1) then
  res := -res;
 Result := res;
end;


Это зачем такой страх то? smile 

http://forum.vingrad.ru/forum/topic-196567...ndom/index.html
PM   Вверх
mr.Anderson
Дата 12.10.2008, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 16
Всего: 128



THandle, ну не знал я про эту функцию. smile Тогда да, код правим. Сейчас...

Добавлено @ 16:42
Код

program RandomArrays;
uses Math;
const
 n = 5;
 m = 10;
 range = 100;
var
 x: Array [1..n] of Integer;
 y: Array [1..m] of Integer;
 z: Array [1..(n+m)] of Integer;
 i: Integer;
 c: Integer;
begin
 randomize();
 write('X : ');
 for i:=1 to n do
 begin
  x[i] := RandomRange(-range, range);
  write(x[i], ' ');
 end;

 writeln;
 write('Y : ');
 for i:=1 to m do
 begin
  y[i] := RandomRange(-range, range);
  write(y[i], ' ');
 end;

 c := 1;

 for i:=1 to n do
  if (x[i] > 0) then
  begin
   z[c] := x[i];
   inc(c);
  end;

 for i:=1 to m do
  if (y[i] > 0) then
  begin
   z[c] := y[i];
   inc(c);
  end;

 if (c<(n+m)) then
  for i:=c to (n+m) do
   z[i] := 1;

 writeln;
 write('Z : ');
 for i:=1 to (n+m) do
  write(z[i], ' ');
 readln;
end.


Это сообщение отредактировал(а) mr.Anderson - 12.10.2008, 16:53


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
THandle
Дата 12.10.2008, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 30
Всего: 372



Цитата(mr.Anderson @  12.10.2008,  17:38 Найти цитируемый пост)
inc©;


Кхм... Название другое придумай. А то после копипаста с форума пахать не будет smile 
PM   Вверх
mr.Anderson
Дата 12.10.2008, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 16
Всего: 128



THandle, тьфу... smile У копипаста с форума есть свои проблемы...


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
THandle
Дата 12.10.2008, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 30
Всего: 372



mr.Anderson, ты кстати решение то проверь smile Оно то и в Делфе пахать не будет, а в Паскале тем более smile
PM   Вверх
mr.Anderson
Дата 12.10.2008, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 16
Всего: 128



THandle, да куда ж оно денется. smile 


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
Rrader
  Дата 12.10.2008, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Inspired =)
***


Профиль
Группа: Экс. модератор
Сообщений: 1535
Регистрация: 7.5.2005

Репутация: 14
Всего: 191



Прошу прощения за оффтоп, не удержался.

mr.Anderson, не торопись выкладывать решения, не проверив их тщательно. И если ты не приучен писать правильно оформленный код, то хорошего программиста из тебя не станет, за это просто увольняют из любой серьезной конторы smile 

Вот критерии, по которым чаще всего оценивают код при приеме на работу:

1)Commenting
2)Code Neatness  smile 
3)White Spaces  smile 
4)Algorithms
5)Naming
6)Range\Parameters Check
7)Memory Leaks
8)Language Mastery

Паскаль проще всего оформлять... Один из самых удобочитаемых кодов, всего два отступа. С++ - 4 отступа, Asm - 8 отступов.


--------------------
Let's do this quickly!
Rest in peace, Vit!
PM MAIL Skype   Вверх
mr.Anderson
Дата 12.10.2008, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 16
Всего: 128



Rrader, первое решение работало нормально, дальнейшие модификации пошли уже чисто в плане улучшения кода.

Из списка не понял только Code Neatness.


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
Rrader
  Дата 12.10.2008, 17:10 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Inspired =)
***


Профиль
Группа: Экс. модератор
Сообщений: 1535
Регистрация: 7.5.2005

Репутация: 14
Всего: 191



Цитата(mr.Anderson @  13.10.2008,  00:05 Найти цитируемый пост)
Rrader, первое решение работало нормально, дальнейшие модификации пошли уже чисто в плане улучшения кода.

Никто не спорит, что работало нормально.

Вот функция для проверки, является ли строка числом или нет:
Код

function IsIntNumber(const S: String): Boolean;
begin
  Result := StringReplace(StringReplace(
    StringReplace(StringReplace(StringReplace(StringReplace(
    StringReplace(StringReplace(StringReplace(StringReplace(S,
    '0', '', [rfReplaceAll]), '1', '', [rfReplaceAll]), '2', '',
    [rfReplaceAll]), '3', '', [rfReplaceAll]), '4', '', [rfReplaceAll]),
    '5', '', [rfReplaceAll]), '6', '', [rfReplaceAll]), '7', '',
    [rfReplaceAll]), '8', '', [rfReplaceAll]), '9', '', [rfReplaceAll]) = '';
end;

Она тоже работает нормально.


--------------------
Let's do this quickly!
Rest in peace, Vit!
PM MAIL Skype   Вверх
mr.Anderson
Дата 12.10.2008, 17:17 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 16
Всего: 128



Rrader, согласен. Буду учиться дальше. smile 

Это сообщение отредактировал(а) mr.Anderson - 12.10.2008, 17:17


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
Valafar
Дата 12.10.2008, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 12.10.2008

Репутация: нет
Всего: нет



Отличный форум, благодарю за помощь
PM MAIL   Вверх
volvo877
Дата 13.10.2008, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 34
Всего: 116



Цитата(mr.Anderson @  12.10.2008,  16:05 Найти цитируемый пост)
первое решение работало нормально
Некомпилирующийся код не может работать нормально, согласись? Не путайте уже в конце концов Дельфи с Паскалем... Нет в Паскале Result... Нет и никогда не было. Точка...

И пустой список параметров никогда Паскалем не поддерживался... Как результат - минимум две правки для того, чтобы программа ХОТЯ БЫ откомпилировалась. Так что не надо про "работающий код". Работал он у тебя в Дельфях, а топикстартер просил на Паскале... Это совсем не одно и то же...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0854 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.