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

Тема в разделе "Delphi - FAQ", создана пользователем Cakypa, 27 фев 2008.

Статус темы:
Закрыта.
  1. Cakypa

    Cakypa Гость

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

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

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

    Froex Гость

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

    end;
    7. Изменяйте на этот код (после символов "//" писать не обязательно - там написаны комментарии и не обрабатываются компилятором):
    Код (Text):
    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 - она испольуется для преобразования целочисленного типа в строку
     
  3. Cakypa

    Cakypa Гость

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

    Froex спасибо тебе огромное !!!
     
  4. Cakypa

    Cakypa Гость

    Всё я пропала :blink: никто не знает как переделать программу
     
  5. Froex

    Froex Гость

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

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

Поделиться этой страницей