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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Внимание! Есть замечания модератора по теме: Название темы должно адекватно отражать суть решаемой задачи/проблемы!
Старый 09.12.2012, 16:39   #1
alex150394
 
Регистрация: 02.12.2012
Сообщений: 6
По умолчанию Элементы массива X расположить в обратном порядке ( Delphi )

Написал прогу в делфи,не могу понять где допустил ошибку. Элементы массива X расположить в обратном порядке.Думаю что в последней строке
вот код:
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    StringGrid1: TStringGrid;
    StringGrid2: TStringGrid;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;


  Type

  Mas1 = array[1..6,1..6] of extended;
var
  Form1: TForm1;
  A,B : Mas1;
  i ,j: integer;

implementation

{$R *.dfm}



procedure TForm1.Button1Click(Sender: TObject);
begin
j:=0;
for i:=1 to 5 do
A[i,1]:=StrToFloat(StringGrid1.Cells[i,1]);
for i:=5 downto 1 do
StringGrid2.Cells[j+1,2]:=FloatToStrf(A[i,1],fffixed,6,2);

end;

end.

Последний раз редактировалось ACE Valery; 09.12.2012 в 18:33.
alex150394 вне форума Ответить с цитированием
Старый 09.12.2012, 17:17   #2
studen
Пользователь
 
Регистрация: 21.05.2012
Сообщений: 88
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
  for j:=1 to 6 do begin //Столбцы таблицы. Как я понял, массив двухмерный.
    for i:=1 to 6 do
      A[i, j]:=StrToFloat(StringGrid1.Cells[7-i, j]);
    for i:=1 to 6 do
      StringGrid2.Cells[i, j]:=FloatToStrf(A[i,j],fffixed,6,2);
        // i - колонка, j - строка
  end;
end;
Так?
studen вне форума Ответить с цитированием
Старый 18.12.2012, 19:07   #3
alex150394
 
Регистрация: 02.12.2012
Сообщений: 6
По умолчанию

нет,все равно ошибку выдает
alex150394 вне форума Ответить с цитированием
Старый 18.12.2012, 20:00   #4
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

СтрингГрид с нуля считает - это во-первых.

Чтоб "перевернуть" строку - достаточно сделать цикл от 1 до n div 2 - это во-вторых

Код:
for i:=1 to n div 2 do begin
  a[i]:=a[n-i+1]+a[i];
  a[n-i+1]:=a[i]-a[n-i+];
  a[i]:=a[i]-a[n-i+1];
end;
код для одномерного массива. Для двухмерного сами сделайте, это несложно

В-третьих: если выдается ошибка - желательно, текст ошибки в студию предоставить
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 19.12.2012, 09:33   #5
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
Код:
for i:=1 to n div 2 do begin
  a[i]:=a[n-i+1]+a[i];
  a[n-i+1]:=a[i]-a[n-i+];
  a[i]:=a[i]-a[n-i+1];
end;
вообще-то правильнее так:
Код:
for i:=1 to n div 2 do begin
  Temp:=a[n-i+1];
  a[n-i+1]:=a[i];
  a[i]:=Temp;
end;
работать будет быстрее на три арифметические операции за цикл и при использовании массива строк.
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 19.12.2012, 10:19   #6
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
вообще-то правильнее так:
Да, для этой конкретно задачи. И в остальном Вы правы. Это я дал общий пример и поленился писать через темп
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переставить элементы массива в обратном порядке Mayers Общие вопросы C/C++ 3 06.05.2012 12:15
ВЫвести элементы массива в обратном порядке Кристина Н Паскаль, Turbo Pascal, PascalABC.NET 1 01.12.2011 08:25
Расположить элементы массива в порядке возрастания Klik_1602 Помощь студентам 2 04.01.2011 14:59
Поместить элементы Одного массива, в начало другого в обратном порядке. Adrenalin4 Общие вопросы C/C++ 2 15.11.2010 21:51
Расположить элементы массива в порядке убывания частоты встречаемости элементов. QWERT12345 Паскаль, Turbo Pascal, PascalABC.NET 7 14.11.2008 22:30