Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Delphi: Задача с массивом (необычная) 
V
    Опции темы
Solominka
Дата 19.1.2010, 23:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Нужно решить задачу на Delphi с формой... Точнее, я не могу уловить даже саму суть...

Даны действительные числа a1, a2, ...,a2n. Получить a1, an+1, a2, an+2, ..., an, a2n. Вычислить отдельно, сумму отрицательных и положительных чисел.

Подскажите пожалуйста, как это реализовать...?
PM MAIL   Вверх
Демо
Дата 20.1.2010, 01:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

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



Solominka, 

Где знаки умножения должны быть в записи, а где нет?


--------------------
    
PM MAIL ICQ Skype   Вверх
CodeMonkey
Дата 20.1.2010, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

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



Ну, для начала эти числа надо получить.

Варианты: 
- вбить константой (const A[0..2*N] of Extended = (1, 2, 3, ...)).
- читать из файла (в текстовом файле по числу на строке).
- вводить на форме (TMemo или TStringGrid или ещё как).

Потом - создать новый массив. Вписать в него А-шки по указанному правилу. Показать (показать можно в TMemo или в TStringGrid).


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Solominka
Дата 20.1.2010, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Демо, нижние индексы заключаю в скобки и расставляю знаки умножения:

Даны действительные числа a(1), a(2), ...,a(2*n). Получить a(1), a(n+1), a(2), a(n+2), ..., a(n), a(2*n). Вычислить отдельно, сумму отрицательных и положительных чисел.


CodeMonkey, не совсем понимаю, о чём речь... Но обойтись надо без текстовых файлов однозначно...
PM MAIL   Вверх
~FoX~
Дата 20.1.2010, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


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

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



Solominka, Что то совсем не понятно....

Цитата(Solominka @  20.1.2010,  14:54 Найти цитируемый пост)
Даны действительные числа a(1), a(2), ...,a(2*n)

Ну с этим ясно..


Цитата(Solominka @  20.1.2010,  14:54 Найти цитируемый пост)
Получить a(1), a(n+1), a(2), a(n+2), ..., a(n), a(2*n).

Куда получить? и собственно почему именно в таком порядке?

Цитата(Solominka @  20.1.2010,  14:54 Найти цитируемый пост)
Вычислить отдельно, сумму отрицательных и положительных чисел.

Ну с этим тоже понятно... Вот код
Код

procedure TForm1.Button1Click(Sender: TObject);
var
  n, i: integer;
  Arr: array of real;
  Summ, MSumm: real;
begin
  n := 10;
  SetLength(Arr, n*2);
  //Заполняем массив
    randomize;
    for i := 0 to n*2 do begin
      Arr[i] := Random(10)-5; //случайно от -5 до 5
    end;
  //Кончили заполнять массив

  Summ := 0; //Сумма положительных
  Msumm := 0; //Сумма отрицательных
  for i := 0 to n*2 do begin
    if Arr[i]>0 then Summ := Summ + Arr[i]
    else Msumm := Msumm + Arr[i];
  end;
  ShowMessage('Сумма положительных чисел=' + FloatToStr(Summ) + ' Сумма отрицательных чисел=' + FloatToStr(MSumm));
end;



Или числа каким тохитрым способом записаны, например a(1)-a(n) положительные, a(n+1)-a(2n) отрицательные?


Это сообщение отредактировал(а) ~FoX~ - 20.1.2010, 14:11


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
Solominka
Дата 20.1.2010, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



~FoX~, благодарю.
Получить, это значит скорее всего следующее: например дан исходный массив (его желательно вводить вручную, но это можно через StringGrid реализовать, я думаю) и путём каких то операций получить новый массив, удовлетворяющий данному условию: a(1), a(n+1), a(2), a(n+2), ..., a(n), a(2*n). Вывести рядом второй массив. 
Почему именно такое условие и именно в таком порядке - это к моему преподавателю, который составил эту гениальную задачу... =__=

PM MAIL   Вверх
~FoX~
Дата 20.1.2010, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


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

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



Solominka, Ну тогда так:
Код

procedure TForm1.Button1Click(Sender: TObject);
var
  n, i: integer;
  Arr, Arr2: array of real;
  Summ, MSumm: real;
begin
  n := 10;
  SetLength(Arr, n*2);
  SetLength(Arr2, n*2);
  //Заполняем массив
    randomize;
    for i := 0 to (n*2)-1 do begin
      Arr[i] := Random(10)-5; //случайно от -5 до 5
    end;
  //Кончили заполнять массив
  Summ := 0; //Сумма положительных
  Msumm := 0; //Сумма отрицательных
  for i := 0 to (n*2)-1 do begin

    if (i mod 2 = 0) then Arr2[i] := Arr[n+i] // Если индекс четный то получаем число с индексом n+i
    else Arr2[i] := Arr[i]; //иначе получаем число с индексом i

    if Arr[i]>0 then Summ := Summ + Arr[i]
    else Msumm := Msumm + Arr[i];
  end;
  ShowMessage('Сумма положительных чисел=' + FloatToStr(Summ) + ' Сумма отрицательных чисел=' + FloatToStr(MSumm));
end;



--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
Solominka
Дата 20.1.2010, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



~FoX~, благодарю)
Ввод и вывод массива я сама сделаю)
Но не могли бы вы пояснить, что означает и делает функция SetLength ?
PM MAIL   Вверх
~FoX~
Дата 20.1.2010, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


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

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



Solominka, Установить длину массива от 0 до н*2
Ой, я там с порядком накосячил немного, счаз правильно сделаю...


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
Solominka
Дата 20.1.2010, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



~FoX~, спасибо, я жду)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


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

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


 




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


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

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