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