Задача на DELPHI

Ответить
ZhNatali
Сообщения: 8
Зарегистрирован: 31 окт 2009, 22:11

Помогите решить задачу!! :confused:
Найдите количество чисел, принадлежащих промежутку [А,В], и сумму чисел, стоящих на местах, кратных 3.
Входная информация:
1. Задать числа А и В;
2. Задать количество данных в массиве;
3. Задать сам массив;

Заранее
dr.Jekill
Сообщения: 526
Зарегистрирован: 03 янв 2009, 23:17
Откуда: Voronezh
Контактная информация:

[syntax="pascal"]
uses crt;
var a,b,sum: real;
mas:array[1..50] of ^real;
i,n,kol,i_a,i_b: byte;
begin
clrscr;
write('Vvedite a: ');
readln(a);
write('Vvedite b: ');
readln(b);
write('Zadaite kol-vo elementov massiva: ');
readln(n);
clrscr;
writeln('Vvodite elementy massiva.');
i_a:=0;
i_b:=0;
for i:=1 to n do
begin
new(mas);
write(i,': ');
readln(mas^);
if mas^=a then i_a:=i;
if mas^=b then i_b:=i;
end;
kol:=0;
sum:=0;
if (i_a>0) and (i_b>0) then
begin
for i:=i_a to i_b do
begin
inc(kol);
if i mod 3 = 0 then sum:=sum+mas^;
end;
writeln('Kol-vo elementov intervala [a..b]: ',kol);
readkey;
write('Summa elementov na poiziciah, kratnyh 3: ',sum:6:2);
readkey;
end
else
begin
writeln('Interval [a..b] ne naiden!');
readkey;
end;
for i:=1 to n do dispose(mas);
end.
[/syntax]
Нет религии выше истины
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

dr.Jekill добрый. Я бы тему с таким названием удалил бы.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
atavin-ta
Сообщения: 585
Зарегистрирован: 30 янв 2009, 06:38

Размерность массива заранее не известна, но сделать надо в делфях? На плюсплюсе не проще?
Вопрос: "Почему вы все сионисты? Нельзя ли писать на чём то другом?".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".
ZhNatali
Сообщения: 8
Зарегистрирован: 31 окт 2009, 22:11

Здравствуйте.
За помощь, огросное спасибо!
Я немного доработала и у меня все получилось, если у кого-то будет желание, могу вылажить задачу.
ВОПРОС?
Почему бы Вы тему с таким названием удалили бы?

Хыиуду писал(а):dr.Jekill добрый. Я бы тему с таким названием удалил бы.
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
atavin-ta писал(а):Размерность массива заранее не известна, но сделать надо в делфях? На плюсплюсе не проще?
Большое спасибо, что отозвались.
Я начинаю изучение языков программирования.
Мой первый язык - Delphi. Си++ я не знаю.
dr.Jekill
Сообщения: 526
Зарегистрирован: 03 янв 2009, 23:17
Откуда: Voronezh
Контактная информация:

ZhNatali писал(а):Почему бы Вы тему с таким названием удалили бы?
Потому, что темы с названиями, не отражающими суть вопроса, удаляются - считайте, что Вам повезло.
Выкладывайте итоговую задачу.
Нет религии выше истины
ZhNatali
Сообщения: 8
Зарегистрирован: 31 окт 2009, 22:11

Спасибо за замечание, в следующий раз исправлюсь. :)
dr.Jekill писал(а):Потому, что темы с названиями, не отражающими суть вопроса, удаляются - считайте, что Вам повезло.
Выкладывайте итоговую задачу.
ZhNatali
Сообщения: 8
Зарегистрирован: 31 окт 2009, 22:11

:o Как и обещала, выкладываю задачу.
[syntax="Delphi"]
procedure TForm1.Button1Click(Sender: TObject);
var c:array[1..20] of integer;
a,b,n,i,s,k:integer;
begin
a:=StrToInt(Edit1.Text);
b:=StrToInt(Edit2.Text);
n:=StrToInt(Edit5.Text);
for i:=1 to n do c:=StrToInt(StringGrid1.Cells[0,i-1]);
s:=0;
k:=0;
for i:=1 to n do
begin
if (c>=a)and (c<=b) then
begin
inc(k); // увеличиваем к на 1
StringGrid2.Cells[0,k-1]:=IntToStr(c);
end;
if i mod 3=0 then s:=s+c;
end;
Edit3.Text:=IntToStr(k);
Edit4.Text:=IntToStr(s);
end;
end.
[/syntax]
Ответить