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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Delphi] Матрица 
:(
    Опции темы
lexx007
Дата 13.12.2008, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуйте, помогите пожалуйста. Данна действительная матрица размера m на n. Необходимо вывести матрицу на экран. Определить числа b1.....bm равные разностям наибольших и наименьших значений элементов строк. Помогите, заранее спасибо.
PM MAIL ICQ   Вверх
Teleport
Дата 13.12.2008, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код

const
m=5; //столбцов
n=5; //строк

var
matr: array[1..m, 1..n] of real;  //действительная матрица
i,j,k,l: integer;  //счетчики для циклов
min, max: integer;//индекс в строке мин и макс элементы
b: real; // разность макс и мин элементов, по строкам

begin
 writeln('Matrica imeet vid:');
 //заполнение матрицы значениями
 for i:=1 to m do
   for j:= 1 to n do begin
     matr[i,j]:=random(100)/9.8;

      //вывод марицы на экран
     write('', (matr[i, j]):4:2);
     write('   ');
     if j>= n then //так обозначаем конец строки
     writeln('');

   end;

 writeln(''); //просто отступ

 for i:=1 to m do begin
    // пусть первый элемент будет минимальным
    min:= 1;
    for k:=2 to n do
       if( matr[i,k]) < (matr[i,min]) then
          min:=k;

    // пусть первый элемент будет максимальным
    max:= 1;
    for l:=2 to n do
       if( matr[i,l]) > (matr[i,max]) then
          max:=l;
    b:= matr[i, max]- matr[i, min];

    //writeln('', matr[i,min]:4:2);  // это так, чисто для проверки мин значения
   // writeln('', matr[i,max]:4:2);  // это так, чисто для проверки макс значения
   writeln('b', i, '= ', b:4:2);

end;

 readln;
end.



Вроде так будет. Провряй smile 


--------------------
user posted image
user posted image 
PM MAIL   Вверх
lexx007
Дата 13.12.2008, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Я понимаю что writeln('Matrica imeet vid:'); автозаполнение матрице? И оно вроде должно осуществлятся нажатием кнопки
PM MAIL ICQ   Вверх
Teleport
Дата 13.12.2008, 18:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Это автозаполнение матрицы, но не нажатием кнопки. Это автозаполнение происходит несколько по-другому - при старте программы. Я писал консольное приложение или  это можно написать в среде turbo pascal. А тебе, что нужно? В Делфи с формой и кнопочками? Просто ты написал задание, а не уточнил как тебе его сделать - вот я и сделал  в чистом паскале. Тебе нужно просто в паскале или же в делфи с формой, кнопками и табличками?  smile 
Всегда уточняй задание smile. Жду. 

Это сообщение отредактировал(а) Teleport - 13.12.2008, 18:55


--------------------
user posted image
user posted image 
PM MAIL   Вверх
lexx007
Дата 13.12.2008, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Плиз, ) извеняюсь за конкретность.  Мне нужно это в Делфи с формой, кнопками и табличками
PM MAIL ICQ   Вверх
Teleport
Дата 13.12.2008, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



хорошо. Массив будем вводить в StringGrid. Только скажи мне -  пользователь должен сам ввести данные в StringGrid? или же автозаполнение этой StringGrid сдеалтьпо нажатию кнопки?


--------------------
user posted image
user posted image 
PM MAIL   Вверх
lexx007
Дата 13.12.2008, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Автозаполнение кнопкой
PM MAIL ICQ   Вверх
Alexeis
Дата 13.12.2008, 19:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



Для домашних заданий, курсовых, существует "Центр Помощи".

Тема перенесена! 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Teleport
Дата 13.12.2008, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



вот код полностью тебе в делфи. Если не справишься с кодом, смотри прикрепленный архив - там проект выложил.

Код

unit Unit1;

interface

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

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

  const
  n=4;
  m=4;
var
  Form1: TForm1;
  //переменные объявим глобально
  matr: array[0..m, 0..n] of real;  //действительная матрица
  i,j,k,l: integer;  //счетчики для циклов
  min, max: integer;//индекс в строке мин и макс элементы
  b: real; // разность макс и мин элементов, по строкам
  zn: real; // для автозаполнения
implementation

{$R *.dfm}

//в StringGrid счет строк и столбцов начинается с нуля
procedure TForm1.FormCreate(Sender: TObject);
begin
 StringGrid1.FixedCols:= 0;  // избавляемся от фиксированного столбца (серый)
 StringGrid1.FixedRows:= 0;  // избавляемся от фиксированной строки (серая)
 StringGrid1.ColCount:= n+1;   // назначаем количество столбцов
 StringGrid1.RowCount:= m+1;   // назначаем количество строк

 Button1.Caption:= 'Заполнить Массив';
 Label1.Caption:= 'Разности чисел:';
end;

//нажатие на кнопку - заполнение матрицы и подсчет разностей макс и мин элементов
procedure TForm1.Button1Click(Sender: TObject);
begin
 for i:=0 to  n do
   for j:= 0 to m  do begin
    zn:= (random(100)/9.8); //100 и 9.8 - это любые числа могут быть
    //тут использована функция округления с точностью до 4 знаков после запятой
    StringGrid1.Cells[j,i]:= FloatToStr(Round((zn)*exp(4*ln(10)))/(exp(4*ln(10))));
    //тут записали в матрицу значения из StringGrid
    matr[i,j]:= StrToFloat(StringGrid1.Cells[j,i]);
  
  end;

  for i:=0 to m do begin
    // пусть нулевой элемент будет минимальным
    min:= 0;
    for k:=1 to n do
       if( matr[i,k]) < (matr[i,min]) then
          min:=k;

    // пусть нулевой элемент будет максимальным
    max:= 0;
    for l:=1 to n do
       if( matr[i,l]) > (matr[i,max]) then
          max:=l;
    b:= matr[i, max]- matr[i, min];

     Label1.Caption:= Label1.Caption + #13 + 'строка ' +
    IntToStr(i+1) + '= ' + FloatToStr(b);
  end;

end;

end.


Присоединённый файл ( Кол-во скачиваний: 9 )
Присоединённый файл  matrica___min_i_max.rar 7,99 Kb


--------------------
user posted image
user posted image 
PM MAIL   Вверх
lexx007
Дата 13.12.2008, 20:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Ого Дружище спасибо огромное, ты вообще профессионал. Буднм надеется что так. Спасибо.
PM MAIL ICQ   Вверх
lexx007
Дата 13.12.2008, 21:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Посмотри

Присоединённый файл ( Кол-во скачиваний: 9 )
Присоединённый файл  ______.rar 11,08 Kb
PM MAIL ICQ   Вверх
Teleport
Дата 13.12.2008, 22:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



2 lexx007 - еще раз прошу - вопросы пиши конкретно. smile
я посмотрел, как я понял вопрос был связан с моей матрицей и StringGrid. 
Смотри - ты не создал событие OnCreate для формы в инспекторе объектов во вкладке Events. Потому у тебя некорректно работало. Достаточно по этому событию пару раз щелкнуть чтобы все нормально работало))
и размер кнопки увеличь. Просто растяни ее немного.  Прикрепляю исправленный вариант. 

p.s. - называй архивы латинскими буквами,  а не кирилицей.

Присоединённый файл ( Кол-во скачиваний: 14 )
Присоединённый файл  ispr.rar 10,32 Kb


--------------------
user posted image
user posted image 
PM MAIL   Вверх
lexx007
Дата 14.12.2008, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



1)Слушай а у меня вообще такой вкладки в Событиях нет. У меняДелфи7. 2)И можно еще воопрос как сделать что бы график всю доступную область формы, и если я увеличу размер окна , что бы и график переделался с учетом размеров окна... Блин наверно не понятно объяснил.)
1) О всё разобрался, ты же написал для формы, а я ищу для таблице. Блин так и научишся.) А вот 2) в силе.

Это сообщение отредактировал(а) lexx007 - 14.12.2008, 14:14
PM MAIL ICQ   Вверх
Teleport
Дата 14.12.2008, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



2)
а) У Panel и у Chart есть свойство Align (оно у многих есть компонентов). Если его сделать AlClient - через инспектор объектов, то эти компоненты будут на всю область формы. Только тогда кнопка Построить у тебя будет будет почти посредине графика. Как решить с кнопкой?
б) у Button есть свойство Anchors - якоря, вроде, переводится (свойство тоже доступно во многих компонентах). Так вот зайди в инспекторе объектов в свойства этой кнопки Построить и найди свойство Anchors. По умолчанию у тебя стоит akLeft и akTop в True. Это значит, что кнопка сохраняет постоянное расстояние от левой(akLeft) и верхней(akTop) кромок родительского компонента. Поставь свойства вот так в инспекторе:
akLeft:= false
akTop:= false
akRight:= true;
akBottom:= true;

.




--------------------
user posted image
user posted image 
PM MAIL   Вверх
lexx007
Дата 14.12.2008, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



 Теперь программка вообще реальная стала .Блин , спасибо огромное.) Теперь хоть что то буду знать. Еще раз спасибо что время на меня потратил. 
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

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


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

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

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

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


 




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


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

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