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

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

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

Восстановить пароль

Купить рекламу на форуме - 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