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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.03.2014, 11:33   #11
nadyaH
Форумчанин
 
Регистрация: 24.10.2013
Сообщений: 130
По умолчанию

Код:
begin
  M:=StrToInt(Edit2.Text);
  N:=StrToInt(Edit1.Text);
for i:=1 to M do
   for j:=1 to N do
      x[i,j]:=random(201)/100 - 1.0;
RichEdit1.Text:=MatrixToStr(x,M,N);
заполняю матрицу произвольными числами.
как написать функцию MatrixToStr ?
nadyaH вне форума Ответить с цитированием
Старый 17.03.2014, 11:38   #12
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Какое отношение этот код(вопрос) имеет к первому сообщению темы?!

Там ОДНОМЕРНЫЙ массив, причём ЦЕЛОЧИСЛЕННЫЙ!
здесь двухмерный, к тому же - вещественный!

ну и ещё. Не знаю, кто Вас учит возвращать все элементы массива в виде строки, но это явно не самая лучшая идея!
Передайте StringList в качестве параметра в вашу процедуру/функцию, там просто выводите элементы в него, зачем Вам через строку это делать?!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.03.2014, 11:54   #13
nadyaH
Форумчанин
 
Регистрация: 24.10.2013
Сообщений: 130
По умолчанию

Код:
if (a[i] mod 2)=1 then result := result  + IntToStr(a[i])+',';
Делфи всеравно выдаёт ошибку в этой строке.
nadyaH вне форума Ответить с цитированием
Старый 17.03.2014, 12:32   #14
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от nadyaH Посмотреть сообщение
Код:
if (a[i] mod 2)=1 then result := result  + IntToStr(a[i])+',';
Делфи всеравно выдаёт ошибку в этой строке.
секретную ошибку?!

Подозреваю, что у Вас тип элементов массива не целочисленный.

приведите описание ващего типа TArray
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.03.2014, 12:37   #15
nadyaH
Форумчанин
 
Регистрация: 24.10.2013
Сообщений: 130
По умолчанию

Код:
type 
  TArray = array[1..100] of real;
  TMatrix = array[1..100] of TArray;

{$R *.dfm}
function Neth(a: TArray; N: integer): string;
var
  i: integer;
begin
  result := '';
  for i:=0 to N do
      if (a[i] mod 2)=1 then result := result  + IntToStr(a[i])+',';
end;
function MatrixToStr(x: TMatrix; M,N: integer): string;
var
  i: integer;
begin
  result:='';
  for i:=1 to M do
    result:=FloatToStr(x[i],M,N)+#13;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  M, N: integer;
  x: TMatrix;
  i, j: integer;
  a: TArray;
begin
  M:=StrToInt(Edit2.Text);
  N:=StrToInt(Edit1.Text);
for i:=1 to M do
 for j:=1 to N do
  x[i,j]:=random(100);
end;
RichEdit1.Text:=MatrixToStr(x,m,n)  
end.
вот что я написала.Не знаю что делать дальше,где что исправить надо чтобы программа заработала и правильно.
nadyaH вне форума Ответить с цитированием
Старый 17.03.2014, 12:45   #16
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Код:
type 
  TArray = array[1..100] of real;
Надя, скажите, пожалуйста, Вы знаете, что такое чётные и нечётные числа в математике? Ну как Вы (без компьютера) сможете определить заданное Вам число является нечётным?
Вот, допустим, если я Вам дам число 102. Это чётное или нечётное число?
А если я дам Вам число 279, это чётное или нечётное число?

Разобрались с темой?

А теперь смотрим, что у Вас за элементы массива... Ба, так это же real, значит элементами массива являются ВЕЩЕСТВЕННЫЕ (они же действительные, они же ДРОБНЫЕ) числа.

Скажите, пожалуйста, число 1.6 является чётныи или нечётным?!

исправьте тип на Integer

ну и второе. Вы абсолютна зря проигнорировали мой вопрос про матрицу (см. пост #12)
Как отношение x: TMatrix; имеет к исходному посту?!?!

У Вас должно быть x : TArray.


примерно так:
Код:
....
var
  Form1: TForm1;

var
  Form1: TForm1;

implementation

{$R *.dfm}

type
  TArray = array[1..100] of Integer;

function Neth(a: TArray; N: integer; var CountNechet : integer): string;
var
  i: integer;
begin
  result := '';
  CountNechet := 0;
  for i:=1 to N do
      if (a[i] mod 2)=1 then begin
        result := result  + IntToStr(a[i])+',';
        Inc(CountNechet);
      end;
end;

function ArrayToString(a: TArray; N: integer): string;
var
  i: integer;
begin
  result := '';
  for i:=1 to N-1 do
    result := result  + IntToStr(a[i])+',';
  result := result  + IntToStr(a[i]);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  N, K: integer;
  i: integer;
  x: TArray;
begin
  randomize;

  N:=StrToInt(Edit1.Text);
  for i:=1 to N do
     x[i] := random(100);

  RichEdit1.Lines.Clear;
  RichEdit1.Lines.Append('Исходный массив: ' + ArrayToString(x,N));

  RichEdit1.Lines.Append('Нечётные числа: ' +Neth(x, N, K));
  RichEdit1.Lines.Append('Количество нечётных числе в массиве: ' +IntToStr(K));
end;

end.

Последний раз редактировалось Serge_Bliznykov; 17.03.2014 в 13:09.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.03.2014, 13:29   #17
nadyaH
Форумчанин
 
Регистрация: 24.10.2013
Сообщений: 130
По умолчанию

Код:
 RichEdit1.Lines.Clear;
  RichEdit1.Lines.Append('Исходный массив: ' + ArrayToString(x,N));
что это означает?
И почему К выдаёт всегда единицу?
nadyaH вне форума Ответить с цитированием
Старый 17.03.2014, 15:07   #18
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от nadyaH Посмотреть сообщение
Код:
 RichEdit1.Lines.Clear;
очистить содержимое RichEdit1

Цитата:
Сообщение от nadyaH Посмотреть сообщение
Код:
  RichEdit1.Lines.Append('Исходный массив: ' + ArrayToString(x,N));
вывести в RichEdit1 строку, которая в себе содержит исходный массив (все элементы массива через запятую).
Для получения этой строки используется функция ArrayToString (см. чуть выше по коду)

Цитата:
Сообщение от nadyaH Посмотреть сообщение
И почему К выдаёт всегда единицу?
не потверждаю.
Ищите, что Вы там у себя успели испортить!
Скриншот:
Изображения
Тип файла: jpg array_exm1.jpg (13.2 Кб, 31 просмотров)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.03.2014, 15:49   #19
nadyaH
Форумчанин
 
Регистрация: 24.10.2013
Сообщений: 130
По умолчанию

Спасибо всё работает правильно!
nadyaH вне форума Ответить с цитированием
Старый 17.03.2014, 21:56   #20
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Пожалуйста.

Данную тему закрываем?
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дан массив. Вывести вначале все четные числа в порядке возрастания их индексов, затем - все нечетные в порядке убывания.( Delphi ) simonte Помощь студентам 9 07.12.2013 06:54
В массиве поставить вначале все четные, а затем все нечетные цифры в массиве (Написать программу в коде делфи) Murfik97 Помощь студентам 4 26.11.2013 21:26
Вывести сначала все его четные (нечетные) елементы, а потом- нечетные(четные). tondo Помощь студентам 4 25.04.2012 00:17
в заданном массиве вывести все четные числа leysan Помощь студентам 2 09.12.2009 22:08
ДАНЫ 4 ЧИСЛА X Y Z W составит программу найти произведение все положительные нечетные числа Woland-itn Паскаль, Turbo Pascal, PascalABC.NET 3 23.03.2008 21:49