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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.03.2018, 19:31   #1
liza123
Новичок
Джуниор
 
Регистрация: 20.03.2018
Сообщений: 1
По умолчанию Дан массив размера 5 x 6 с элементами целого типа. Написать про-грамму для вычисления числа положительных элементов массива кратных «5»

Код:
unit Unit1;

interface

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

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

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button2Click(Sender: TObject);
begin
  Close;
end;

procedure TForm1.Button1Click(Sender: TObject);

 var
  i,j,k: integer;
  A: array[1..5,1..6] of integer;
begin
  k:=0;
  For i:= 1 to 5 do
  For j:=1 to 6 do
  If length(StringGrid1.Cells[i,j])<>0
  then A:=StrToInt(StringGrid1.Cells[i,j])
  else
   A:=0;
begin
  for i:=0 to 4 do
  if i mod 5=0
  then k:=k+1
  else
  end;
begin
  ShowMessage('íå âñå ÿ÷åéêè çàïîëíåíû');
  exit;
end;

end.
помогите с ошибкой

Последний раз редактировалось Аватар; 21.03.2018 в 09:02.
liza123 вне форума Ответить с цитированием
Старый 21.03.2018, 02:00   #2
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,867
По умолчанию

Цитата:
Сообщение от liza123 Посмотреть сообщение
помогите с ошибкой
С какой ошибкой, уважаемая Лиза123?
northener вне форума Ответить с цитированием
Старый 21.03.2018, 08:56   #3
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,545
По умолчанию

Это даже не кошмар - это ужас! Надергано из разных источников и сшито на живую нитку без даже минимальной попытки понять.
Читать такой неформатированный исходник - надо заставлять зэков строгого режима
Ну скажите мне, если заполняется матрица, то почему поиск нужных чисел ведется по одномерному массиву? Если А- это массив, то как может быть А=0 ?
Код:

procedure TForm1.Button1Click(Sender: TObject);
var
i,j,k: integer;
A: array[1..5,1..6] of integer;
begin
k:=0;
For i:= 1 to 5 do
   For j:=1 to 6 do
       If length(StringGrid1.Cells[i,j])<>0
          then A[i,j]:=StrToInt(StringGrid1.Cells[i,j])
          else  A[i,j]:=0;
For i:= 1 to 5 do
   For j:=1 to 6 do
     if A[i,j] mod 5=0  then k:=k+1 ;
  ShowMessage('K = ' + IntToStr(k));
end;
-------------------------------
Насчет "помогите с ошибкой"... Напомнило: раньше в белорусской деревне в пору посевной для получения в пользование на один день лошади надо было записаться на определенное число и проставить бригадиру пузырек. Это называлось "договориться с конём"

Последний раз редактировалось digitalis; 21.03.2018 в 09:08.
digitalis вне форума Ответить с цитированием
Старый 21.03.2018, 09:17   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от digitalis Посмотреть сообщение
Код:
If length(StringGrid1.Cells[i,j])<>0
          then A[i,j]:=StrToInt(StringGrid1.Cells[i,j])
          else  A[i,j]:=0;
неверно. Даже если не брать во внимание того, что в гриде индексация идёт от нуля (а у Вас с единицы), нужно учитывать, что в этом вывёрнутом StringGrid первый индекс - это индекс столбца, второй - индекс строки.
поэтому:
Код:
If length(StringGrid1.Cells[j,i])<>0
          then A[i,j]:=StrToInt(StringGrid1.Cells[j,i])
          else  A[i,j]:=0;
а ещё лучше заменить это одной строчкой:
Код:
A[i,j]:=StrToIntDef(StringGrid1.Cells[j,i], 0);

Цитата:
Сообщение от digitalis Посмотреть сообщение
Код:
if A[i,j] mod 5=0  then k:=k+1;
а тут забыли, что нужны только положительные значения:
Код:
if (A[i,j] >0) and (A[i,j] mod 5=0)  then Inc(k);
Serge_Bliznykov вне форума Ответить с цитированием
Старый 21.03.2018, 13:45   #5
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,545
По умолчанию

Я в тонкости не вникал, но когда массиву присваивают значение А=0, то тут уж слова бессильны. Индексация СтрингГрида вылезла бы на первом же тестовом запуске. Я ее лет 5 как не использовал, могло выветриться. А насчет "положительных" - я просто не обратил внимания.
Как сказал один мой знакомы модер, "тут не решатель задач" Получив нужное направление и почитав "Дельфи для чайников", студеньт может и должен допилить заготовку до нужной кондиции. Если, конечно, он не ошибся в выборе "куда пойти лечиучиться".
digitalis вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дан массив из 12 целых чисел. Найти сумму положительных элементов массива claaYs Помощь студентам 1 12.11.2017 12:25
[Pascal]: Дан массив. Построить новый массив, элементы которого - квадраты положительных элементов исходного массива и кубы отрицательных. newsnew Паскаль, Turbo Pascal, PascalABC.NET 1 21.12.2016 04:03
дан массив. Определить сумму положительных и количество отрицательных элементов массива. Roshen Паскаль, Turbo Pascal, PascalABC.NET 2 13.12.2016 20:06
Дан массив размера N. Вычислить сумму элементов массива (в турбо паскале) VeB_SteR Паскаль, Turbo Pascal, PascalABC.NET 1 19.05.2014 21:29
1)Дан массив целых чисел. Найти сумму элементов массива, кратных А или В. logikal Помощь студентам 4 22.04.2014 20:58