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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.04.2018, 12:53   #1
РезедаМуратова
Пользователь
 
Регистрация: 05.12.2017
Сообщений: 69
По умолчанию Delphi игра для детей 12+

Здравствуйте, у меня такой вопрос. Идея такая, ребенок заполняет таблицу (StringGrid) а далее нажимает на картинку( вместо привычной кнопки) и выводится результат магический/нет квадрат. В общем, все ввожу, работает выводит сообщение в label, но если делать ошибки то уже все. Он не сообщает о том, что матрица не магическая. Помогите пожалуйста. Напишите как правильно создать условие на проверку введеных данных (вы не заполнили все клеточки, только целые числа) и на то что бы выводил сообщение если не магический квадрат.
Код:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Buttons, StdCtrls, Grids, Menus, jpeg, ExtCtrls;

type
  TForm2 = class(TForm)
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    N6: TMenuItem;
    N7: TMenuItem;
    N8: TMenuItem;
    N10: TMenuItem;
    PopupMenu1: TPopupMenu;
    StringGrid1: TStringGrid;
    Label2: TLabel;
    Label1: TLabel;
    BitBtn1: TBitBtn;
    Edit2: TEdit;
    Image1: TImage;
    Label4: TLabel;
    Label5: TLabel;
    procedure N5Click(Sender: TObject);
    procedure Image1Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;



var
  Form2: TForm2;
   a:array of array of integer;
  n:integer;



implementation

{$R *.dfm}



procedure TForm2.N5Click(Sender: TObject);
begin
Label5.Caption:= N5.Caption;
Edit2.Text:='15';
end;


procedure TForm2.Image1Click(Sender: TObject);
var i,j,i1,j1,s,s1,s2:integer;
    f:boolean;
begin
i:=0;i1:=-1;j1:=-1;
while(i<n)and(i1=-1) do
 begin
  j:=0;
  while(j<n)and(j1=-1) do
  if not TryStrToInt(StringGrid1.Cells[i,j],s)then j1:=j
  else inc(j);
  if j1>-1 then i1:=i
  else inc(i);
 end;
if i1>-1 then
 begin
  ShowMessage('В ячейке ['+IntToStr(i1+1)+','+IntToStr(j1+1)+']'+#13#10+
              'введено не целое число');
  exit
 end;
Setlength(a,n,n);
for i:=0 to n-1 do
for j:=0 to n-1 do
a[i,j]:=StrToInt(StringGrid1.Cells[j,i]); 
s:=0;s1:=0;
for i:=0 to n-1 do
 begin
  s:=s+a[i,i];
  s1:=s1+a[i,n-i-1];
 end;
if s<>s1 then
 begin
 label2.Caption:='Матрица является магическим квадратом';
  exit
 end;
f:=true;
i:=0;
while(i<n) and f do
 begin
  s1:=0;
  s2:=0;
  for j:=0 to n-1 do
   begin
    s1:=s1+a[i,j];
    s2:=s2+a[j,i];
   end;
  if(s1<>s)or(s2<>s) then f:=false
  else inc(i);
 end;
if f then label2.Caption:='Матрица является магическим квадратом'
else label2.Caption:='Матрица является магическим квадратом';

end;


end.
// код скомпелирован из различных сайтов, не мой
//пока делаю уровень сложности легкий. 3x3
Изображения
Тип файла: png Безымянный.png (17.8 Кб, 82 просмотров)
Вложения
Тип файла: zip магический квадрат.zip (695.3 Кб, 11 просмотров)
РезедаМуратова вне форума Ответить с цитированием
Старый 11.04.2018, 13:17   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

12+?оО
Вы уверены, что им это будет интересно?)
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 11.04.2018, 13:19   #3
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
12+?оО
Вы уверены, что им это будет интересно?)
Хороший вопрос, и все ли дети +12 поймут задание?
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
Stanislav вне форума Ответить с цитированием
Старый 11.04.2018, 14:38   #4
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,689
По умолчанию

Главное мотивация. Можно подсмотреть идею у стрип-шашек )) Но только идею, я не призываю кидать туда именно такой контент
eoln вне форума Ответить с цитированием
Старый 13.04.2018, 11:33   #5
РезедаМуратова
Пользователь
 
Регистрация: 05.12.2017
Сообщений: 69
По умолчанию

Всем спасибо, но это задание уже прикреплено за мной. Да понимаю, но кому-то будет интересно. Помогите пожалуйста с кодом, почему он не работает?
РезедаМуратова вне форума Ответить с цитированием
Старый 13.04.2018, 12:38   #6
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,859
По умолчанию

Цитата:
Сообщение от РезедаМуратова Посмотреть сообщение
почему он не работает?
Код:
if f then label2.Caption:='Матрица является магическим квадратом'
else label2.Caption:='Матрица является магическим квадратом';
Найдите хоть одно различие в этих двух строчках.
northener вне форума Ответить с цитированием
Старый 13.04.2018, 12:41   #7
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

Квадрат как ни крути все равно квадрат
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
Stanislav вне форума Ответить с цитированием
Старый 13.04.2018, 13:24   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

ну и до кучи.

Это тоже ересь какая-то. Разве, если суммы не равны, то это магический квадрат?
Цитата:
Сообщение от РезедаМуратова Посмотреть сообщение
Код:
if s<>s1 then
 begin
 label2.Caption:='Матрица является магическим квадратом';
  exit
 end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.04.2018, 06:42   #9
РезедаМуратова
Пользователь
 
Регистрация: 05.12.2017
Сообщений: 69
По умолчанию

А как проще сделать код?
РезедаМуратова вне форума Ответить с цитированием
Старый 16.04.2018, 08:59   #10
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

Цитата:
Сообщение от РезедаМуратова Посмотреть сообщение
А как проще сделать код?
Переписать его
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
Stanislav вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Развивающие мультики для детей MooNDeaR Свободное общение 36 02.04.2019 12:13
Программирование для детей ytrytr Свободное общение 13 08.06.2016 13:20
Программирование для детей sinid Свободное общение 70 05.11.2013 16:27
Программа-тест для детей на Delphi Алина)) Фриланс 15 06.08.2013 09:23
Известно количество детей, проживающих в каждой из квартир. Составить программу, находящую сколько детей в многодетных семьях саша аврамов Паскаль, Turbo Pascal, PascalABC.NET 2 22.03.2013 08:20