![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Доброго времени суток.
Есть задание по лабам: В одномерном массиве, состоящем из n вещественных элементов, вычислить: 1) сумму элементов массива с нечетными номерами; 2)сумму элементов массива, расположенных между первым и последним отрицательными элементами. Сжать массив, удалив из него все элементы, модуль которых не превышает 1. Освободившиеся в конце массива элементы заполнить нулями. Вот что пока что сделал: Код:
unit lab;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var a:array[1..10] of real;
summ:real;
summd:real;
i:integer;
const n=10;
begin
summ:=0;
summd:=0;
for i:=1 to 10 do
if i mod 2<>0 then summ:= summ + a[i];
Label1.Caption:='Сумма нечетных элементов: ' + FloatToStr(summ);
end;
end.компилируется нормально, но при вычислении выходит число, к-е не может быть результатом вычисления. Последний раз редактировалось Rinat41, 02.06.2011 в 21:53. |
|
#2
|
||||
|
||||
|
ну..... по идее на выходе должен быть ноль(это если бы массив был глобальным), но так как массив объявлен в процедуре, то хз что там на выходе может получиться. хотя бы присвойте элементам массива значения перед вычислением
|
|
#3
|
|||
|
|||
|
а разве когда набираю числа с клавы во время выполнения, разве тогда не присваиваются?
|
|
#4
|
||||
|
||||
|
у вас массив объявлен в процедуре, и он виден только в процедуре. попробуйте в секции VAR обьявить
|
|
#5
|
|||
|
|||
|
так?
Код:
var Form1: TForm1; a:array[1..10] of real; implementation теперь выводит "0" |
|
#6
|
||||
|
||||
|
Дополнительно: убрать массив из процедуры, вынести присвоение метки за цикл.
А "0" и должен быть, ведь теперь массив глобальный, а глобальные переменные при старте инициируются нулями. Последний раз редактировалось angvelem, 02.06.2011 в 21:55. |
|
#7
|
|||
|
|||
|
ээ, извините, не понял, я круглый новичок(
|
|
#8
|
||||
|
||||
|
скиньте участок кода, где происходит присваивание элементам массива значения
|
|
#9
|
||||
|
||||
|
Ну так и пиши, что именно не понял.
|
|
#10
|
||||
|
||||
|
Цитата:
Он вообще-то вне цикла ![]() |
|
#11
|
|||
|
|||
|
весь код уже здесь. значения ввожу с клавы.
не понял как вынести присвоение метки за цикл |
|
#12
|
||||
|
||||
|
Цитата:
|
|
#13
|
||||
|
||||
|
Цитата:
Выносить ничего не нужно, уже все вынесено (мозг тоже ) таааааааак ......как вводите значения силой мысли что ли??? |
|
#14
|
||||
|
||||
|
Ну примерно так можно инициировать массив на старте
Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
for I := 1 to 10
a[i] := Random;
end; |
|
#15
|
||||
|
||||
|
Цитата:
можно так, но! Как уважаемый автор темы будет проверять результат, не зная чему равны значения...... ?? правильно!!! Предварительно вывести их значения в той или иной форме, но это уже не по теме ![]() |