Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.07.2009, 21:07   #1
True_girl
Пользователь
 
Регистрация: 29.11.2008
Сообщений: 28
По умолчанию Массив в Делфи

Ребята, помогите пожалуйста сделать следующее задание, ато я совсем запуталась:

а)Изменить значения всех положительных элементов заданного массива х=(х1,х2...хn), разделив каждый из них на его номер в массиве, и удалить первый отрицательный элемент полученного массива.

б) отсортировать этот массив по убыванию, определить количество его элементов, принадлежащих заданному отрезку [a,b].
True_girl вне форума Ответить с цитированием
Старый 06.07.2009, 21:23   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
разделив каждый из них на его номер в массиве
Код:
for i:=1 to N do
 x[i] := x[i]/i;
Цитата:
и удалить первый отрицательный элемент полученного массива.
если предполагается простое не реальное удаление, а смещение, то что-то вроде этого:
Код:
k := 1;
while x[k]>=0 do
 inc(k);
dec(N);
for i:=k to N do
 x[i] := x[i+1];
Цитата:
отсортировать этот массив по убыванию
поиск по форуму по слову "сортировка"
Цитата:
принадлежащих заданному отрезку [a,b].
Код:
cnt := 0;
for i:=1 to N do
 if (x[i]>=a) and (x[i]<=b) then inc(cnt);
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 06.07.2009, 21:25   #3
IT-man
АльTRUEи$т
Форумчанин
 
Аватар для IT-man
 
Регистрация: 19.03.2009
Сообщений: 784
По умолчанию

только в 1 случае:
Код:
 for i:=1 to N do
if x[i]>0 then  x[i] := x[i]/i;
и вот тут
Код:
k := 1;
while x[k]>=0 do
 inc(k);
for i:=k to N-1 do //так будет проще
 x[i] := x[i+1];
Цитата:
«Никто не войдет в Рай, имея хотя бы крупицу гордыни в своем сердце». «Аллах Красив и любит красоту. Гордыня означает отказ от истины и высокомерие»

Последний раз редактировалось IT-man; 06.07.2009 в 21:40.
IT-man вне форума Ответить с цитированием
Старый 06.07.2009, 22:21   #4
True_girl
Пользователь
 
Регистрация: 29.11.2008
Сообщений: 28
По умолчанию

что значит inc?
True_girl вне форума Ответить с цитированием
Старый 06.07.2009, 22:29   #5
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

Инкремент (увеличение на 1).
profi вне форума Ответить с цитированием
Старый 06.07.2009, 22:38   #6
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от IT-man
только в 1 случае:
не заметил уточнение про положительные )
Цитата:
Сообщение от IT-man
и вот тут
Код:
for i:=k to N-1 do //так будет проще
Не совсем согласен. Смещение будет проведено, но в дальнейшем тогда везде нужно будет использовать (N-1) вместо N. По-моему, более логично уменьшить само количество элементов, раз уж происходит удаление.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 06.07.2009, 23:24   #7
True_girl
Пользователь
 
Регистрация: 29.11.2008
Сообщений: 28
По умолчанию

Ввожу код, а у меня появляется такое сообщение, что это значит?
Изображения
Тип файла: jpg ошибка.jpg (15.1 Кб, 122 просмотров)
True_girl вне форума Ответить с цитированием
Старый 06.07.2009, 23:32   #8
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

Это типа не совместимость типов.
Цитата:
Приложение делает попытку ошибочного преобразования целых чисел, чисел с плавающей запятой, дат или времени в строку или ошибочного преобразования строк в эти типы.
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Старый 06.07.2009, 23:35   #9
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Приведите код и укажите, где возникает ошибка.

Скорее всего ошибка конвертации. То есть что-то не то вводите.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 06.07.2009, 23:45   #10
True_girl
Пользователь
 
Регистрация: 29.11.2008
Сообщений: 28
По умолчанию

вот, сразу после того сообщения открывается вот это окно
а начало кода выглядет вот так
Код:
unit l7;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TLaba7 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Edit_a: TEdit;
    Edit_b: TEdit;
    Label6: TLabel;
    Button_step1: TButton;
    Memo_x1: TMemo;
    Memo_x2: TMemo;
    Label9: TLabel;
    Label10: TLabel;
    Edit5: TEdit;
    Button_step2: TButton;
    Memo_x: TMemo;
    procedure Button_step1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Laba7: TLaba7;

implementation
type mas=array[1..10]of real;
var x:mas;
n:integer;

{$R *.dfm}

procedure TLaba7.Button_step1Click(Sender: TObject);
var a,b:real;
i, i0, n, k :integer;
begin
a:=StrToFloat(Edit_a.Text);
b:=StrToFloat(Edit_b.Text);
n:=Memo_x.Lines.Count;
k:=0;
for i:=0 to n do
    begin
      x[i]:= StrToFloat(Memo_x.Lines[i-1]);
      if (x[i]>=a) and (x[i]<=b) then
            if x[i]>0 then
              begin
                x[i] := x[i]/i;
                Memo_x1.Lines.Add(FormatFloat('##0.0',x[i]));
              end;
    end;


end;

end.
Изображения
Тип файла: jpg ошибка1.jpg (11.7 Кб, 114 просмотров)
True_girl вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Делфи ругается на массив из символов spamer Общие вопросы Delphi 3 25.05.2009 23:46
Код игры на Паскале и на Делфи сильно отличается? Как переписать код с Паскаля в Делфи? Mclaren Помощь студентам 2 27.04.2009 22:37
Упорядочить массив в порядке возрастания и напечатать входной и исходный массив. TheVenny Помощь студентам 3 26.11.2008 15:06
Проблема с задачей на одномерный массив в Делфи 7 sting Помощь студентам 34 22.09.2008 15:36