![]()  | 
	
 
  | 
		
			
  | 	
	
	
		
		|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны | 
![]()  | 
	
	
| 
		 | 
	Опции темы | Поиск в этой теме | Опции просмотра | 
| 
	 | 
| 
		 
			 
			#1  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Мне нужно сделать вот такое: сформировать одномерный массив путем деления положительных элементов заданной таблицы на число К вывести полученный массив на экран 
		
	
		
		
			Код: 
	unit Unit1; 
 
interface 
 
uses 
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 
 Dialogs, Buttons, StdCtrls; 
 
type 
 TForm1 = class(TForm) 
 mmo1: TMemo; 
 btn1: TButton; 
 btn2: TBitBtn; 
 procedure btn1Click(Sender: TObject); 
 private 
 { Private declarations } 
 public 
 { Public declarations } 
 end; 
 
var 
 Form1: TForm1; 
 
implementation 
 
{$R *.dfm} 
 
procedure TForm1.btn1Click(Sender: TObject); 
const n=10; 
var 
mass,A: array[1..n,1..n] of Integer; 
B: array[1..30]of Integer; 
K: Integer; 
i, m, j: Integer; 
begin 
 m:= 0; 
randomize(); 
mmo1.Lines.Add('K= '); 
for i:= 0 to n do 
for j:= 0 to n do 
begin 
A[i,j]:= random(100); 
end; 
for i:= 0 to n do 
for j:= 0 to n do 
begin 
if(A[i,j] > 0) then 
begin 
B[m] := a[i,j] div K; 
m:= m+1; 
end; 
 if (abs(A[i,j])<=k) and (abs(B[i])<=k) then 
mmo1.Lines.Add(inttostr(A[i,j])); 
mmo1.lines.Add(inttostr(B[m])) ; 
end; 
end; 
end.Вывод происходит не правильный. Подскажите ребята плиз... Последний раз редактировалось nastya1993, 29.12.2022 в 16:59.  | 
| 
		 
			 
			#2  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Очень странный код. 
		
	
		
		
		
		
		
		
			1 - индексация массива начинается с 1 а цикл с 0, access violation же, не? 2 - Массив mass как используется? 3 - Размер Массива B по-моему маловат, если я все правильно понял. 4 - Чему равно K? откуда берется значение? В общем чет как-нибудь так наверное: Код: 
	procedure TForm1.btn1Click(Sender: TObject); 
const n=10;
var
  mass{???},A: array[0..n,0..n] of Integer;
  B: array[0..120]of Integer;
  i, m, j, K: Integer;
begin
  m:= 0;
  K:=5;//???
  randomize();
  mmo1.Lines.Add('K= '+inttostr(K));
  for i:= 0 to n do
    for j:= 0 to n do
    begin
      A[i,j]:= random(100);
    end;
  for i:= 0 to n do
    for j:= 0 to n do
    begin
      if(A[i,j] > 0) then
      begin
        B[m] := a[i,j] div K;
        Inc(m);//m:= m+1; ???
      end;
      //if (abs(A[i,j])<=k) and (abs(B[i])<=k) then
        //mmo1.Lines.Add(inttostr(A[i,j]));
      //mmo1.lines.Add(inttostr(B[m]));
    end;
    for i:=0 to m do
      mmo1.lines.Add(inttostr(B[i]));
end;Последний раз редактировалось Shaft, 30.12.2022 в 13:15.  | 
| 
		 
			 
			#3  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Зачем использовать Целочисленное деление (DIV) если в условии задачи стоит просто деление?  
		
	
		
		
		
		
		
	
		
		
	
	
	Цитата: 
	
 тогда правильнее использовать просто деление и тогда массив В будет типа real. и тогда лучше указывать размерность массива B не как у вас Цитата: 
	
 Код: 
	B: array[0..n*n] of Real; И тогда при изменении константы n у вас сразу поменяются размерности массивов А и В. Далее у вас не выводиться значение K. Как у вас будет массив с отрицательными цифрами если у вас идет Цитата: 
	
 Со всеми исправлениями код будет выглядеть примерно так Код: 
	
procedure TForm1.btn1Click(Sender: TObject); 
const n=10;
var
  A: array[0..n,0..n] of Integer;
  B: array[0..n*n] of Real;
  i, j: Integer; //для циклов массива
 m: Integer; //количество положительных чисел
K: Integer; //делитель
begin
  randomize();
  m:= 0;
  K:=5;// Будет вводиться каждый раз вручную? Он может быть только целочисленным или может быть отрицательным или даже дробным числом?
  mmo1.Lines.Add('K= '+inttostr(k)); //что бы значение К выводилось
 
 
  for i:= 0 to n do 
    for j:= 0 to n do A[i,j]:=-25+ random(50); //В данном случае у вас будут числа в диапазоне он -25 до +24 (Будут и положительные и отрицательные)
 
  for i:= 0 to n do
    for j:= 0 to n do
      if(A[i,j] > 0) then
      begin
        B[m] := A[i,j]/K;
        Inc(m);
      end; //Вот здесь происходит поиск положительных чисел в массиве А, их деление и запись в массив В
 
    for i:=0 to m do  mmo1.lines.Add(Floattostr(B[i]));
end;
 | 
| 
		 
			 
			#4  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Цитата: 
	
 Цитата: 
	
 Цитата: 
	
 Цитата: 
	
 Последний раз редактировалось Shaft, 30.12.2022 в 14:30.  |