Всего 1 задача, помогите люди добрые !

  • Автор темы Cakypa
  • Дата начала
Статус
Закрыто для дальнейших ответов.
C

Cakypa

#1
Всего 1 задача, помогите люди добрые !Привет всем добрым и отзывчивым людям !
Помогите справиться с такой задачей, учусь на ЭиУ поэтому впрграмировании 0
Надо в Delphi намписать такую программу :

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

Преподы только сказали что матрицу надо заполнять прям в программе или она делаеться сама как-то ! И затем щелкая по кнопке расчет у нас выдавался результат
Пожалуйста помогите ! Надежда только на вас !
 
F

Froex

#2
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 - она испольуется для преобразования целочисленного типа в строку
 
C

Cakypa

#3
Класс ! Отнесла сказали всё правильно, только одно но : надо заменить Мемо на таблицу, стринг грид вроде бы и вывод результат в едит :blink: такое вообще возможно ??? Завтра уже сдавать, боюсь завалят !

Froex спасибо тебе огромное !!!
 
C

Cakypa

#4
Всё я пропала :blink: никто не знает как переделать программу
 
F

Froex

#5
в стринг грид код такой же, только надо запись делать не в мемо, а ячейки стринг грида, ориентируясь на i и j
вывод результата в едит: Edit1.Text:='произведение:'+IntToStr(P);

P.S. Мой первый пост тут я все хотел сохраниться с помощью Ctrl+S))) привычка блин
 
Статус
Закрыто для дальнейших ответов.