![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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
|
||||
|
||||
|
Цитата:
а если в массиве отсутствуют отрицательные элементы, а если в массиве только один отрицательный элемент, а если два отрицательных элемента идут друг за другом. а если есть отрицательный элемент массива и он по списку - последний???? ЧТО ДЕЛАТЬ ТОГДА |