Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.12.2008, 20:13   #1
Lorden
Форумчанин
 
Регистрация: 11.08.2008
Сообщений: 139
По умолчанию цикл for to do, или как отобразить сумму всех чётных трёхзначных чисел которые делятся на 7 (Delphi 6)

если кого незатруднит скажити пожалуйста как сделать в делфи такую задачу:
Найти сумму всех чётных трёхзначных чисел которые делятся на 7.
я делаю слейдущим образом:
var
i,s:Integer;
begin
for i:=100 to 999 do
if (i mod 2=0) and (i mod 7=0) then
Memo1.Lines.Add(IntToStr(s));

но чёт неполучается(
Lorden вне форума Ответить с цитированием
Старый 22.12.2008, 20:37   #2
5naip
Форумчанин
 
Аватар для 5naip
 
Регистрация: 05.10.2007
Сообщений: 536
По умолчанию

Код:
var
i:Integer;
begin
for i:=100 to 999 do
if (i mod 2=0) and (i mod 7=0)
  then Memo1.Lines.Add(IntToStr(i));
rocklistener...
5naip вне форума Ответить с цитированием
Старый 22.12.2008, 21:15   #3
Lorden
Форумчанин
 
Регистрация: 11.08.2008
Сообщений: 139
По умолчанию

Цитата:
Сообщение от 5naip Посмотреть сообщение
Код:
var
i:Integer;
begin
for i:=100 to 999 do
if (i mod 2=0) and (i mod 7=0)
  then Memo1.Lines.Add(IntToStr(i));
ммм.. чёт я немного недопонял твоего поста. Можно поподробнее?) типо then нада перенести на строчку с Memo1?
Lorden вне форума Ответить с цитированием
Старый 22.12.2008, 21:23   #4
5naip
Форумчанин
 
Аватар для 5naip
 
Регистрация: 05.10.2007
Сообщений: 536
По умолчанию

блин,извини,затупил задание не все прочитал.
вот правиьный код:
Код:
var
  i,s:Integer;
begin
s:=0;
for i:=100 to 999 do
if (i mod 2=0) and (i mod 7=0)
  then
    begin
      ListBox1.Items.Add(IntToStr(i));
      s:=s+i;
    end;
ShowMessage(inttostr(s));
только я тут Listbox использовал
В листбокс забываются все трехзначные четные числа.
А в конце появлется сообщение с суммой их.
Твоя ошибка была в том,что:
1.s не была обнулена вначала....а сразу после объявления переменная содержит ненулевое зачение.
2.s никак не была связана с i.
rocklistener...

Последний раз редактировалось 5naip; 22.12.2008 в 21:28.
5naip вне форума Ответить с цитированием
Старый 22.12.2008, 21:40   #5
Lorden
Форумчанин
 
Регистрация: 11.08.2008
Сообщений: 139
По умолчанию

Цитата:
Сообщение от 5naip Посмотреть сообщение
блин,извини,затупил задание не все прочитал.
вот правиьный код:
Код:
var
  i,s:Integer;
begin
s:=0;
for i:=100 to 999 do
if (i mod 2=0) and (i mod 7=0)
  then
    begin
      ListBox1.Items.Add(IntToStr(i));
      s:=s+i;
    end;
ShowMessage(inttostr(s));
только я тут Listbox использовал
В листбокс забываются все трехзначные четные числа.
А в конце появлется сообщение с суммой их.
Твоя ошибка была в том,что:
1.s не была обнулена вначала....а сразу после объявления переменная содержит ненулевое зачение.
2.s никак не была связана с i.
во спасибо огромное
Lorden вне форума Ответить с цитированием
Старый 23.12.2008, 15:41   #6
Lorden
Форумчанин
 
Регистрация: 11.08.2008
Сообщений: 139
По умолчанию

чтобы неделать ненужных тем решил отписать тут:
Цитата:
var
x,y,z,f:Integer;
begin
x:=StrToInt(Edit1.Text);
y:=StrToInt(Edit2.Text);
z:=StrToInt(Edit3.Text);
begin
if x>0 then f:=x+25*y-17*z;
Memo1.Lines.Add(IntToStr(x)+'+25*'+ IntToStr(y)+'-17*'+IntToStr(z)+'='+IntToStr(f));
end;
begin
if x<0 then f:=-12*x+12*y-12*z;
Memo1.Lines.Add('-12*'+IntToStr(x)+'+12*'+IntToStr(y) +'-12*'+IntToStr(z)+'='+IntToStr(f));
end;
begin
if x=0 then f:=130*y-130*z;
Memo1.Lines.Add('130*'+IntToStr(y)+ '-130*'+IntToStr(z)+'='+IntToStr(f));
end;
подскажити как сделать в этом алгоритме так чтобы при нажатии кнопки Button1 в окне отображалась тока 1 формула по которой шло вычисление а невсе 3.
П.С. хотелбы ещё спросить как сделать проверку на 0? ато при написании канкулятора немогу исправить ошибку что на 0 делить нельзя( тока знаю как её исправлять в цикле а невцикле брик и континуе чёт неработает.
Lorden вне форума Ответить с цитированием
Старый 23.12.2008, 17:49   #7
5naip
Форумчанин
 
Аватар для 5naip
 
Регистрация: 05.10.2007
Сообщений: 536
По умолчанию

думаю, можно так:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  x,y,z,f:Integer;
begin
x:=StrToInt(Edit1.Text);
y:=StrToInt(Edit2.Text);
z:=StrToInt(Edit3.Text);
if x>0
  then
    begin
      f:=x+25*y-17*z;
      Memo1.Lines.Add(IntToStr(x)+'+25*'+IntToStr(y)+'-17*'+IntToStr(z)+'='+IntToStr(f));
    end
  else
    if x<0
      then
        begin
           f:=-12*x+12*y-12*z;
          Memo1.Lines.Add('-12*'+IntToStr(x)+'+12*'+IntToStr(y)+'-12*'+IntToStr(z)+'='+IntToStr(f));
        end
      else
        if x=0
          then
            begin
              f:=130*y-130*z;
              Memo1.Lines.Add('130*'+IntToStr(y)+'-130*'+IntToStr(z)+'='+IntToStr(f));
            end;
end;
----------
А зачем у тебя так много "begin end;" было? Может я чего не знаю?
rocklistener...
5naip вне форума Ответить с цитированием
Старый 23.12.2008, 17:50   #8
5naip
Форумчанин
 
Аватар для 5naip
 
Регистрация: 05.10.2007
Сообщений: 536
По умолчанию

Цитата:
П.С. хотелбы ещё спросить как сделать проверку на 0? ато при написании канкулятора немогу исправить ошибку что на 0 делить нельзя( тока знаю как её исправлять в цикле а невцикле брик и континуе чёт неработает.
выкладывай код где ошибка нашлась....
rocklistener...
5naip вне форума Ответить с цитированием
Старый 23.12.2008, 18:09   #9
Lorden
Форумчанин
 
Регистрация: 11.08.2008
Сообщений: 139
По умолчанию

бегины фиг знает почему так много поставил) обычно ставлю мало но учитель чёт типо сказал перед каждыйм if бегин нада ставить)вот и перемудрил)
Цитата:
var
i,s,f:integer;
begin
Memo1.Visible:=True;
Memo1.Clear;
i:=StrToInt(Edit1.Text);
s:=StrToInt(Edit2.Text);
if i=0 then
Application.MessageBox('на нуль делить нельзя','ошибка');
break;
end;
f:=round(i/s);
Memo1.lines.add(IntToStr(i)+':'+Int ToStr(s)+'='+IntToStr(f));
end;
а ошибку пишет такую:
[Error] Unit1.pas(166): BREAK or CONTINUE outside of loop

Последний раз редактировалось Lorden; 23.12.2008 в 18:12.
Lorden вне форума Ответить с цитированием
Старый 23.12.2008, 18:50   #10
5naip
Форумчанин
 
Аватар для 5naip
 
Регистрация: 05.10.2007
Сообщений: 536
По умолчанию

ошибка состояла в том,что "break" и "continue" используются только для циклических операторов(while,for,repeat), а не для операторов ветвлений...
Ну,вобщем,если я правильно понял смысл задания, то вот рабочий код
Код:
var
i,s,f:integer;
begin
Memo1.Visible:=True;
Memo1.Clear;
i:=StrToInt(Edit1.Text);
s:=StrToInt(Edit2.Text);
if i=0
  then Application.MessageBox('на нуль делить нельзя','ошибка');
  else
    begin
      f:=round(i/s);
      Memo1.lines.add(IntToStr(i)+':'+IntToStr(s)+'='+In tToStr(f));
    end;
end;
rocklistener...
5naip вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти два числа,сумма каких равняется сумме всех других чисел, которые остались! Помогите будьте людьми! Snake08 Паскаль, Turbo Pascal, PascalABC.NET 4 08.12.2008 18:33
Найти сумму всех чисел из промежутка от А до В, кратных 8 и 16 nickky2 Паскаль, Turbo Pascal, PascalABC.NET 8 05.12.2008 13:27
Я-юрист, есть задача - Найти сумму всех чисел из промежутка от А до В, кратные 13 и 5 Filosofijka Помощь студентам 1 24.11.2008 19:57
Как найти количество чётных чисел диапазоном от 1 до 11? SORIK Microsoft Office Excel 3 02.01.2008 23:37