Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Всего 1 задача, помогите люди добрые !
Форум программистов > Системное программирование > Delphi и Pascal > Delphi - FAQ
Cakypa
Всего 1 задача, помогите люди добрые !Привет всем добрым и отзывчивым людям !
Помогите справиться с такой задачей, учусь на ЭиУ поэтому впрграмировании 0
Надо в Delphi намписать такую программу :

Дана матрица Y(N,N). Вычислить значение произведения отрицательных элементов, расположенных выше главной диагонали матрицы.

Преподы только сказали что матрицу надо заполнять прям в программе или она делаеться сама как-то ! И затем щелкая по кнопке расчет у нас выдавался результат
Пожалуйста помогите ! Надежда только на вас !
Froex
1. Открывай Delphi
2. Должна появиться пустая форма, если нет, то путь тебе в меню File->New->Aplication (Файл->Новый->Приложение)
3. В верхней части Делфи вкладка Standart (Стандартные), там двойной щелчок мыши по компонентам Memo и Button
4. На самой форме появится два компонента - растяни их и расположи как удобно (зажимаешь кнопку мыши на объекте для перетаскивания и на краях объекта зажимаешь для масштабирования)
5. Этот пункт не обязательный, но все-таки: выделяешь компонент Memo (текстовое поле) и переходишь в инспектор объектов (Object Inpector), если его нет, то жми F11. Там ищи ScrollBars и ставь там в поле значение ssBoth (на случай, если не помещаться текст будет и не переносился на новую строку)
6. Двойнок клик мыши по компоненту Button. Появится текст в программе наподобие этого:
procedure TForm1.Button1Click(Sender: TObject);
begin

end;

7. Изменяйте на этот код (после символов "//" писать не обязательно - там написаны комментарии и не обрабатываются компилятором):
procedure TForm1.Button1Click(Sender: TObject);
const N=5;  //эта константа определяет размер матрицы
var Y:array[1..N,1..N]of integer;  //объявляем массив целых чисел
    i,j,k:integer; // эти переменные для счетчиков в циклах for
    P:longint;  //а это произведение длинного целого типа (вдруг большое произведение будет)
begin  //начинаем процедуру
Memo1.Clear;  //очищаем текстовое поле
randomize;  //инициализируем генератор случайных чисел
//далее заполним матрицу случайными числами
for j:=1 to N do
  for i:=1 to N do
    Y[i,j]:=random(100)-50;
//далее считываем матрицу и выводим в текстовое поле
for j:=1 to N do
  begin
    Memo1.Lines.Add('');  //это нужно, чтобы появилась новая строка
    for i:=1 to N do
      begin
        Memo1.Lines[j-1]:=Memo1.Lines[j-1]+IntToStr(Y[i,j]);  //в созданную строку пишем число из матрицы
        for k:=1 to 5-length(IntToStr(Y[i,j])) do
          Memo1.Lines[j-1]:=Memo1.Lines[j-1]+' ';  //это эквивалент форматированного вывода (пробелы пишутся)
//далее - почему бы тут сразу не проверить, расположен ли данный элемент матрицы выше главной диагонали
//условия для этого - номер строки больше номера стобца
        if i>j then
          if Y[i,j]<0 then
                    begin
                        if P=0 then P:=1;  //по умолчанию P=0, если вообще нет отрицательных чисел, то произведение не должно равняться единице - поэтому не присвоили еденицу вначале
            P:=P*Y[i,j];  //если является, то произведение меняем
                    end;
      end;
  end;
//ну и вывод в текстовое поле результата
Memo1.Lines.Add('произведение отрицательных величин выше главной диагонали:');
Memo1.Lines.Add(IntToStr(P));
end;

8. Можно изменить текст на кнопке, если в инспекторе объектов для нее задать свойство Caption (пиши любой текст, кроме спец. символов)
9. Для запуска программы меню Run->Run (Выполнение->Выполнить) или F9

примечание: в некоторых местах используется функция IntToStr - она испольуется для преобразования целочисленного типа в строку
Cakypa
Класс ! Отнесла сказали всё правильно, только одно но : надо заменить Мемо на таблицу, стринг грид вроде бы и вывод результат в едит sad.gif такое вообще возможно ??? Завтра уже сдавать, боюсь завалят !

Froex спасибо тебе огромное !!!
Cakypa
Всё я пропала sad.gif никто не знает как переделать программу
Froex
в стринг грид код такой же, только надо запись делать не в мемо, а ячейки стринг грида, ориентируясь на i и j
вывод результата в едит: Edit1.Text:='произведение:'+IntToStr(P);

P.S. Мой первый пост тут я все хотел сохраниться с помощью Ctrl+S))) привычка блин
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2008 IPS, Inc.