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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 11.10.2014, 21:03   #1
Damelya
 
Регистрация: 11.10.2014
Сообщений: 4
По умолчанию kod Delphi

Помогите с кодом, ввожу нажимаю обработать, а программа обрабатывает только не так, как надо, заменяет нулями левые цифры, а не отрицательные, помогите найти ошибку в коде)
· Если элементы массива по строкам образуют неубывающую последовательность, то все отрицательные элементы заменить нулями
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
n:=strtoint(edit1.Text);
StringGrid1.ColCount:=n;
StringGrid1.RowCount:=n;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
n:=strtoint(edit1.Text);
StringGrid2.ColCount:=n;
StringGrid2.RowCount:=n;
 for i:=1 to n do
 for j:=1 to n do  begin
   if a[i,j]<0 then a[i,j]:=0;
    Stringgrid2.Cells[j-1,i-1]:=IntToStr(a[i,j]);
         end;
end;
 
procedure TForm1.Button3Click(Sender: TObject);
begin
for i:=0 to n-1 do
 begin
 StringGrid1.Cols[i].Clear;
 StringGrid2.Cols[i].Clear;
 Edit1.Clear;
 end;
end;
 
procedure TForm1.Button4Click(Sender: TObject);
begin
randomize;
for i:=1 to n do
for j:=1 to n do
begin
a[i,j]:=randomrange(-10,10);
StringGrid1.Cells[i-1,j-1]:=inttostr(a[i,j]);
end;
end;
end.

Последний раз редактировалось Stilet; 11.10.2014 в 21:13.
Damelya вне форума
Старый 11.10.2014, 21:21   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
заменяет нулями левые цифры, а не отрицательные
Потому что у тебя не хватает проверки на
Цитата:
Если элементы массива по строкам образуют неубывающую последовательность
Т.е. цикла типа
Код:
procedure TForm1.Button2Click(Sender: TObject);
var b:boolean; k:integer;
begin
n:=strtoint(edit1.Text);
StringGrid2.ColCount:=n;
StringGrid2.RowCount:=n;
 for i:=1 to n do begin
  b:=false; for k:=1 to n do if a[i,k]>a[i,k-1] then begin b:=true;break;end;
  for j:=1 to n do  begin
    if b then if a[i,j]<0 then a[i,j]:=0;
    Stringgrid2.Cells[j-1,i-1]:=IntToStr(a[i,j]);
  end;
 end;
end;
I'm learning to live...
Stilet вне форума
Старый 11.10.2014, 21:47   #3
Damelya
 
Регистрация: 11.10.2014
Сообщений: 4
По умолчанию

нет не работает, все равно левые цифры выходят, некоторые заменяет нулями, а некоторые к примеру 1 заменяет на 7
а так скопировала и вставила ваш код целиком
Damelya вне форума
Старый 11.10.2014, 21:59   #4
Damelya
 
Регистрация: 11.10.2014
Сообщений: 4
По умолчанию

а можете проверить этот код? он правильный? просто он вообще не заменяет нулями
как есть таки оставляет

procedure TForm1.Button2Click(Sender: TObject);
begin
for i:=1 to n do
for j:=1 to n do
a[i,j]:=StrToInt(Stringgrid1.Cells[j-1,i-1]);

k:=0;
for i:=1 to n do
for j:=1 to n-1 do
if a[i,j]<=a[i,j+1] then k:=k+1;

if k=(n-1)*n then
for i:=1 to n do
for j:=1 to n-1 do
if a[i,j]<0 then a[i,j]:=0;

StringGrid2.ColCount:=n;
StringGrid2.RowCount:=n;
for i:=1 to n do
for j:=1 to n do
Stringgrid2.Cells[j-1,i-1]:=IntToStr(a[i,j]);
end;
Damelya вне форума
Старый 11.10.2014, 22:09   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Надо не копипастить а разбираться.
Внимательнее будь.
У тебя в одном месте написано так:
Цитата:
Stringgrid2.Cells[j-1,i-1]:=IntToStr(a[i,j]);
А во втором так:
Цитата:
StringGrid1.Cells[i-1,j-1]:=inttostr(a[i,j]);
Видишь ошибку? Сначала ты пишешь в столбик, а после расчета в строку.
Код:
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Grids,
  StdCtrls;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    StringGrid1: TStringGrid;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;
const n=3;
var   b:boolean; i,j,k:integer; a:array[1..n,1..n] of integer;
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.FormCreate(Sender: TObject);
begin
 randomize;

 StringGrid1.ColCount:=n;
 StringGrid1.RowCount:=n;

 for i:=1 to n do
 for j:=1 to n do
 begin
 a[i,j]:=-5+random(10);
 StringGrid1.Cells[j-1,i-1]:=inttostr(a[i,j]);
 end;
end;

procedure TForm1.Button1Click(Sender: TObject);


begin



 for i:=1 to n do begin
  b:=false; for k:=1 to n do if a[i,k]<a[i,k-1] then begin b:=true;break;end;
  for j:=1 to n do  begin
    if b then if a[i,j]<0 then a[i,j]:=0;
    Stringgrid1.Cells[j-1,i-1]:=IntToStr(a[i,j]);
  end;
 end;

end;

end.
I'm learning to live...
Stilet вне форума
Старый 11.10.2014, 22:41   #6
Damelya
 
Регистрация: 11.10.2014
Сообщений: 4
По умолчанию

Спасибо большое)
Damelya вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
создание модуля Delphi для поворота растровых изображений.delphi Romka62 Помощь студентам 1 18.11.2012 15:22
Не изменяется интерфейс моей программы при переходе с Delphi 7 на Delphi 2010 Elvisnya Общие вопросы Delphi 3 28.04.2011 15:59
Rad Studio 2011 XE: новое в Delphi, C++ Builder, RadPHP и Delphi Prism savva-paladin Софт 18 02.10.2010 20:24
Delphi. Как нарисовать в Delphi два движущиеся шара с определенной скоростью? redred Общие вопросы Delphi 10 11.12.2007 10:43
Как открыть БД, написанную в Delphi если нf другой машине Delphi нет? dagarik БД в Delphi 7 22.10.2007 17:54