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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.04.2009, 11:27   #1
Sorinka
Пользователь
 
Регистрация: 21.04.2009
Сообщений: 21
По умолчанию Delphi: массив

Дан двумерный массив, содержащий NxN элементов. НАписать подпрограммы, выполняющие следующие действия:

* Вычисление среднего арифметического для элементов каждой строки массива
* Замену нулями всех элементов, расположенных на главной диагонали матрицы
* Определение наибольшег оэлемента и его положение в массиве

Помогите пожалуйста решить!
Sorinka вне форума Ответить с цитированием
Старый 21.04.2009, 11:30   #2
NotProCoder
Пользователь
 
Регистрация: 20.04.2009
Сообщений: 15
По умолчанию

Дык, исходник есть? Или что-то не работает? Задачи то совсем для школьников...
NotProCoder вне форума Ответить с цитированием
Старый 21.04.2009, 11:35   #3
Sorinka
Пользователь
 
Регистрация: 21.04.2009
Сообщений: 21
По умолчанию

Нету, я и есть школьница... Начали массивы проходить, ничего толком не объяснили... Вот даже не знаю, с чего начинать... ((
Sorinka вне форума Ответить с цитированием
Старый 21.04.2009, 12:05   #4
NotProCoder
Пользователь
 
Регистрация: 20.04.2009
Сообщений: 15
Подмигивание

Разжовывается на делфе конечно... Но про массивы вполне доступно.
Почитай, а там разберёмся .
Вложения
Тип файла: zip Glava 5.zip (418.9 Кб, 12 просмотров)
NotProCoder вне форума Ответить с цитированием
Старый 21.04.2009, 17:31   #5
Sorinka
Пользователь
 
Регистрация: 21.04.2009
Сообщений: 21
По умолчанию

Этто, я вот тут посидела-посидела, написала... Но выдаёт какие-то ошибки...
В общем для начала проблема в том, что у меня не получается заполнить массив через рандомайз...
Помогите!!!
Вот исходник...
Вложения
Тип файла: rar 3.rar (191.5 Кб, 10 просмотров)
Sorinka вне форума Ответить с цитированием
Старый 21.04.2009, 18:28   #6
NotProCoder
Пользователь
 
Регистрация: 20.04.2009
Сообщений: 15
По умолчанию

А в чём проблема то...

Пр

begin
randomize;
for i := 1 to MasSize do //перебираешь все элементы
mas[i] := random(100); //и собственно делаешь рандом, а в функции
//пишешь максимальное число для рандома
end;
NotProCoder вне форума Ответить с цитированием
Старый 21.04.2009, 18:41   #7
NotProCoder
Пользователь
 
Регистрация: 20.04.2009
Сообщений: 15
По умолчанию

Посмотрел исходник насчёт рандома и не понял вот чего

Код:
procedure TForm1.Button2Click(Sender: TObject);
var i,j: integer;
x:array[1..6] of integer;
begin
 randomize;

    for i:=0 to StringGrid1.ColCount do
       begin
        x[i]:=random(100);
          for j:=0 to StringGrid1.RowCount do
             begin
               StringGrid1.Cells[i,j]:=inttostr(i);
             end;
       end;
end;
у тебя массив от 1, а перечисляешь от нуля.
Сделай хотя бы так. Где x[i] := random(100); на x[i+1] := random(100);

И StringGrid1.ColCount это количество, как и StringGrid1.RowCount, и когда перечисляешь от 0 то нужно в циклах делать StringGrid1.ColCount - 1 и StringGrid1.RowCount - 1.

И вот ещё вопрос, зачем объявлять массив в процедуре
который потом никак не используешь?

Последний раз редактировалось NotProCoder; 21.04.2009 в 18:48.
NotProCoder вне форума Ответить с цитированием
Старый 21.04.2009, 18:50   #8
Sorinka
Пользователь
 
Регистрация: 21.04.2009
Сообщений: 21
По умолчанию

эммм... спасибо, но не совсем получилось, - всёравно всё так же "1 2 3 4 5 " нумерует одинаково все стобцы...
И в самом левом столбце теперь все нули.... =__=
Если обратили внимание - прогрмамма не дописана...
Массив нужен для того, чтобы основную диагональ в нём чистить а потом максимальный элемент находить...
Кстати, последнее я тоже не знаю, как сделать...

Последний раз редактировалось Sorinka; 21.04.2009 в 18:54.
Sorinka вне форума Ответить с цитированием
Старый 21.04.2009, 19:07   #9
NotProCoder
Пользователь
 
Регистрация: 20.04.2009
Сообщений: 15
По умолчанию

Код:
var
n:byte;
procedure TForm1.Button1Click(Sender: TObject);

begin
StringGrid1.ColCount:=StrToInt(Edit1.Text);
StringGrid1.RowCount:=StrToInt(Edit1.Text);
end;

procedure TForm1.Button2Click(Sender: TObject);
var i,j: integer;
begin
 randomize;

    for i:=0 to StringGrid1.ColCount - 1 do
          for j:=0 to StringGrid1.RowCount - 1 do
             begin
               StringGrid1.Cells[i,j]:=inttostr(random(100));
             end;
end;

procedure TForm1.Button3Click(Sender: TObject);
var i,j,y: integer;
begin
    for i:= 0 to StringGrid1.ColCount - 1 do
       begin
         StringGrid1.Cells[i,i]:='0';
       end;
{не понимаю зачем далее делать что-то если матрица NxN, а не NxM}
    y:=0;
    for j:=StringGrid1.RowCount - 1 downto 0 do
       begin
         inc(y);
         StringGrid1.Cells[y,j]:='0';
       end;
end;
Я тут поправил...
NotProCoder вне форума Ответить с цитированием
Старый 21.04.2009, 19:45   #10
Sorinka
Пользователь
 
Регистрация: 21.04.2009
Сообщений: 21
По умолчанию

Ано, спасибо, теперь всё как нужно работает!
Только как теперь максимум то найти, можете объяснить?
Sorinka вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
массив замена -, на+. Delphi serj-07 Помощь студентам 20 16.06.2012 14:24
Массив, Delphi Melissa Помощь студентам 2 19.03.2009 09:26
Массив (Delphi) stasig Помощь студентам 2 28.02.2009 21:43
Delphi Двумерный массив forumu Помощь студентам 1 23.12.2007 02:04